diff --git a/.gitignore b/.gitignore index 66cbff97..30889ac7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,8 +3,11 @@ *.so *.exe tags +TAGS build/ Test/localResults/ Test/multiThread.out Test/singleThread.out +Test/vert.spv +Test/frag.spv External/googletest diff --git a/CMakeLists.txt b/CMakeLists.txt index f2f23559..33b4764d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,18 @@ -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" ON) + enable_testing() set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "prefix") project(glslang) +if(ENABLE_AMD_EXTENSIONS) + add_definitions(-DAMD_EXTENSIONS) +endif(ENABLE_AMD_EXTENSIONS) + if(WIN32) set(CMAKE_DEBUG_POSTFIX "d") include(ChooseMSVCCRT.cmake) @@ -19,8 +25,14 @@ else(WIN32) endif(WIN32) if(CMAKE_COMPILER_IS_GNUCXX) + add_definitions(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs + -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable) + add_definitions(-Wno-reorder) # disable this from -Wall, since it happens all over. add_definitions(-std=c++11) elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") + add_definitions(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs + -Wunused-parameter -Wunused-value -Wunused-variable) + add_definitions(-Wno-reorder) # disable this from -Wall, since it happens all over. add_definitions(-std=c++11) endif() diff --git a/OGLCompilersDLL/InitializeDll.cpp b/OGLCompilersDLL/InitializeDll.cpp index cc2b742e..e4798815 100644 --- a/OGLCompilersDLL/InitializeDll.cpp +++ b/OGLCompilersDLL/InitializeDll.cpp @@ -34,7 +34,7 @@ #define SH_EXPORTING -#include +#include #include "InitializeDll.h" #include "../glslang/Include/InitializeGlobals.h" diff --git a/README-spirv-remap.txt b/README-spirv-remap.txt index 8e3259f8..3e5288aa 100644 --- a/README-spirv-remap.txt +++ b/README-spirv-remap.txt @@ -98,7 +98,7 @@ options. See REMAPPING AND OPTIMIZATION OPTIONS. 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/README.md b/README.md index 3bdbae59..9cfdce18 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,15 @@ glslang An OpenGL and OpenGL ES shader front end and validator. -There are two components: +There are several components: -1. A front-end library for programmatic parsing of GLSL/ESSL into an AST. +1. A GLSL/ESSL front-end for reference validation and translation of GLSL/ESSL into an AST. -2. A standalone wrapper, `glslangValidator`, that can be used as a shader - validation tool. +2. An HLSL front-end for translation of a broad generic HLL into the AST. + +3. A SPIR-V back end for translating the AST to SPIR-V. + +4. A standalone wrapper, `glslangValidator`, that can be used as a command-line tool for the above. How to add a feature protected by a version/extension/stage/profile: See the comment in `glslang/MachineIndependent/Versions.cpp`. @@ -54,14 +57,24 @@ Building ### Build steps -#### 1) Check-Out External Projects +#### 1) Check-Out this project ```bash -cd +cd +# If using SSH +git clone git@github.com:KhronosGroup/glslang.git +# Or if using HTTPS +git clone https://github.com/KhronosGroup/glslang.git +``` + +#### 2) Check-Out External Projects + +```bash +cd git clone https://github.com/google/googletest.git External/googletest ``` -#### 2) Configure +#### 3) Configure Assume the source directory is `$SOURCE_DIR` and the build directory is `$BUILD_DIR`: @@ -84,7 +97,7 @@ cmake $SOURCE_DIR -DCMAKE_INSTALL_PREFIX=`pwd`/install The CMake GUI also works for Windows (version 3.4.1 tested). -#### 3) Build and Install +#### 4) Build and Install ```bash # for Linux: diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 5c169b14..2c65d71a 100755 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -3,27 +3,46 @@ set(SOURCES InReadableOrder.cpp Logger.cpp SpvBuilder.cpp - SPVRemapper.cpp doc.cpp disassemble.cpp) +set(SPVREMAP_SOURCES + SPVRemapper.cpp + doc.cpp) + set(HEADERS + bitutils.h spirv.hpp GLSL.std.450.h + GLSL.ext.KHR.h GlslangToSpv.h + hex_float.h Logger.h SpvBuilder.h - SPVRemapper.h spvIR.h doc.h disassemble.h) +set(SPVREMAP_HEADERS + SPVRemapper.h + doc.h) + +if(ENABLE_AMD_EXTENSIONS) + list(APPEND + HEADERS + GLSL.ext.AMD.h) +endif(ENABLE_AMD_EXTENSIONS) + 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/GLSL.ext.AMD.h b/SPIRV/GLSL.ext.AMD.h new file mode 100644 index 00000000..d2098cc1 --- /dev/null +++ b/SPIRV/GLSL.ext.AMD.h @@ -0,0 +1,116 @@ +/* +** Copyright (c) 2014-2016 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and/or associated documentation files (the "Materials"), +** to deal in the Materials without restriction, including without limitation +** the rights to use, copy, modify, merge, publish, distribute, sublicense, +** and/or sell copies of the Materials, and to permit persons to whom the +** Materials are furnished to do so, subject to the following conditions: +** +** The above copyright notice and this permission notice shall be included in +** all copies or substantial portions of the Materials. +** +** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS +** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND +** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS +** IN THE MATERIALS. +*/ + +#ifndef GLSLextAMD_H +#define GLSLextAMD_H + +enum BuiltIn; +enum Decoration; +enum Op; + +static const int GLSLextAMDVersion = 100; +static const int GLSLextAMDRevision = 2; + +// SPV_AMD_shader_ballot +static const char* const E_SPV_AMD_shader_ballot = "SPV_AMD_shader_ballot"; + +static const Op OpGroupIAddNonUniformAMD = static_cast(5000); +static const Op OpGroupFAddNonUniformAMD = static_cast(5001); +static const Op OpGroupFMinNonUniformAMD = static_cast(5002); +static const Op OpGroupUMinNonUniformAMD = static_cast(5003); +static const Op OpGroupSMinNonUniformAMD = static_cast(5004); +static const Op OpGroupFMaxNonUniformAMD = static_cast(5005); +static const Op OpGroupUMaxNonUniformAMD = static_cast(5006); +static const Op OpGroupSMaxNonUniformAMD = static_cast(5007); + +enum ShaderBallotAMD { + ShaderBallotBadAMD = 0, // Don't use + + SwizzleInvocationsAMD = 1, + SwizzleInvocationsMaskedAMD = 2, + WriteInvocationAMD = 3, + MbcntAMD = 4, + + ShaderBallotCountAMD +}; + +// SPV_AMD_shader_trinary_minmax +static const char* const E_SPV_AMD_shader_trinary_minmax = "SPV_AMD_shader_trinary_minmax"; + +enum ShaderTrinaryMinMaxAMD { + ShaderTrinaryMinMaxBadAMD = 0, // Don't use + + FMin3AMD = 1, + UMin3AMD = 2, + SMin3AMD = 3, + FMax3AMD = 4, + UMax3AMD = 5, + SMax3AMD = 6, + FMid3AMD = 7, + UMid3AMD = 8, + SMid3AMD = 9, + + ShaderTrinaryMinMaxCountAMD +}; + +// SPV_AMD_shader_explicit_vertex_parameter +static const char* const E_SPV_AMD_shader_explicit_vertex_parameter = "SPV_AMD_shader_explicit_vertex_parameter"; + +static const BuiltIn BuiltInBaryCoordNoPerspAMD = static_cast(4992); +static const BuiltIn BuiltInBaryCoordNoPerspCentroidAMD = static_cast(4993); +static const BuiltIn BuiltInBaryCoordNoPerspSampleAMD = static_cast(4994); +static const BuiltIn BuiltInBaryCoordSmoothAMD = static_cast(4995); +static const BuiltIn BuiltInBaryCoordSmoothCentroidAMD = static_cast(4996); +static const BuiltIn BuiltInBaryCoordSmoothSampleAMD = static_cast(4997); +static const BuiltIn BuiltInBaryCoordPullModelAMD = static_cast(4998); + +static const Decoration DecorationExplicitInterpAMD = static_cast(4999); + +enum ShaderExplicitVertexParameterAMD { + ShaderExplicitVertexParameterBadAMD = 0, // Don't use + + InterpolateAtVertexAMD = 1, + + ShaderExplicitVertexParameterCountAMD +}; + +// SPV_AMD_gcn_shader +static const char* const E_SPV_AMD_gcn_shader = "SPV_AMD_gcn_shader"; + +enum GcnShaderAMD { + GcnShaderBadAMD = 0, // Don't use + + CubeFaceIndexAMD = 1, + CubeFaceCoordAMD = 2, + TimeAMD = 3, + + GcnShaderCountAMD +}; + +// SPV_AMD_gpu_shader_half_float +static const char* const E_SPV_AMD_gpu_shader_half_float = "SPV_AMD_gpu_shader_half_float"; + +#endif // #ifndef GLSLextAMD_H diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h new file mode 100644 index 00000000..344dd398 --- /dev/null +++ b/SPIRV/GLSL.ext.KHR.h @@ -0,0 +1,36 @@ +/* +** Copyright (c) 2014-2016 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and/or associated documentation files (the "Materials"), +** to deal in the Materials without restriction, including without limitation +** the rights to use, copy, modify, merge, publish, distribute, sublicense, +** and/or sell copies of the Materials, and to permit persons to whom the +** Materials are furnished to do so, subject to the following conditions: +** +** The above copyright notice and this permission notice shall be included in +** all copies or substantial portions of the Materials. +** +** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS +** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND +** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS +** IN THE MATERIALS. +*/ + +#ifndef GLSLextKHR_H +#define GLSLextKHR_H + +// SPV_KHR_shader_ballot +static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot"; + +// SPV_KHR_shader_draw_parameters +static const char* const E_SPV_KHR_shader_draw_parameters = "SPV_KHR_shader_draw_parameters"; + +#endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 61c9ae7d..3e0ad4f1 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -42,7 +42,11 @@ #include "GlslangToSpv.h" #include "SpvBuilder.h" namespace spv { - #include "GLSL.std.450.h" + #include "GLSL.std.450.h" + #include "GLSL.ext.KHR.h" +#ifdef AMD_EXTENSIONS + #include "GLSL.ext.AMD.h" +#endif } // Glslang includes @@ -110,11 +114,15 @@ public: void dumpSpv(std::vector& out); protected: + spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier); spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier); spv::BuiltIn TranslateBuiltInDecoration(glslang::TBuiltInVariable, bool memberDeclaration); spv::ImageFormat TranslateImageFormat(const glslang::TType& type); spv::Id createSpvVariable(const glslang::TIntermSymbol*); spv::Id getSampledType(const glslang::TSampler&); + spv::Id getInvertedSwizzleType(const glslang::TIntermTyped&); + spv::Id createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped&, spv::Id parentResult); + void convertSwizzle(const glslang::TIntermAggregate&, std::vector& swizzle); spv::Id convertGlslangToSpvType(const glslang::TType& type); spv::Id convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking, const glslang::TQualifier&); spv::Id convertGlslangStructToSpvType(const glslang::TType&, const glslang::TTypeList* glslangStruct, @@ -124,13 +132,14 @@ protected: 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&); @@ -143,13 +152,14 @@ protected: 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& operands, glslang::TBasicType typeProxy); - spv::Id createInvocationsOperation(glslang::TOperator, spv::Id typeId, spv::Id operand); + spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); + spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, std::vector& operands); spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); - spv::Id createNoArgOperation(glslang::TOperator op); + spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId); spv::Id getSymbolId(const glslang::TIntermSymbol* node); void addDecoration(spv::Id id, spv::Decoration dec); void addDecoration(spv::Id id, spv::Decoration dec, unsigned value); @@ -160,8 +170,10 @@ protected: bool isTrivialLeaf(const glslang::TIntermTyped* node); bool isTrivial(const glslang::TIntermTyped* node); spv::Id createShortCircuit(glslang::TOperator, glslang::TIntermTyped& left, glslang::TIntermTyped& right); + spv::Id getExtBuiltins(const char* name); spv::Function* shaderEntry; + spv::Function* currentFunction; spv::Instruction* entryPoint; int sequenceDepth; @@ -175,9 +187,10 @@ protected: std::set iOSet; // all input/output variables from either static use or declaration of interface const glslang::TIntermediate* glslangIntermediate; spv::Id stdBuiltins; + std::unordered_map extBuiltinMap; std::unordered_map symbolValues; - std::unordered_set 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 rValueParameters; // set of formal function parameters passed as rValues, rather than a pointer std::unordered_map functionMap; std::unordered_map structMap[glslang::ElpCount][glslang::ElmCount]; std::unordered_map > memberRemapper; // for mapping glslang block indices to spv indices (e.g., due to hidden members) @@ -204,7 +217,8 @@ spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile 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; } @@ -275,10 +289,10 @@ spv::Dim TranslateDimensionality(const glslang::TSampler& sampler) } } -// Translate glslang type to SPIR-V precision decorations. -spv::Decoration TranslatePrecisionDecoration(const glslang::TType& type) +// Translate glslang precision to SPIR-V precision decorations. +spv::Decoration TranslatePrecisionDecoration(glslang::TPrecisionQualifier glslangPrecision) { - switch (type.getQualifier().precision) { + switch (glslangPrecision) { case glslang::EpqLow: return spv::DecorationRelaxedPrecision; case glslang::EpqMedium: return spv::DecorationRelaxedPrecision; default: @@ -286,6 +300,12 @@ spv::Decoration TranslatePrecisionDecoration(const glslang::TType& type) } } +// Translate glslang type to SPIR-V precision decorations. +spv::Decoration TranslatePrecisionDecoration(const glslang::TType& type) +{ + return TranslatePrecisionDecoration(type.getQualifier().precision); +} + // Translate glslang type to SPIR-V block decorations. spv::Decoration TranslateBlockDecoration(const glslang::TType& type) { @@ -301,7 +321,7 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type) } } - return (spv::Decoration)spv::BadValue; + return spv::DecorationMax; } // Translate glslang type to SPIR-V memory decorations. @@ -330,12 +350,12 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T return spv::DecorationColMajor; default: // opaque layouts don't need a majorness - return (spv::Decoration)spv::BadValue; + return spv::DecorationMax; } } else { switch (type.getBasicType()) { default: - return (spv::Decoration)spv::BadValue; + return spv::DecorationMax; break; case glslang::EbtBlock: switch (type.getQualifier().storage) { @@ -345,38 +365,44 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T case glslang::ElpShared: return spv::DecorationGLSLShared; case glslang::ElpPacked: return spv::DecorationGLSLPacked; default: - return (spv::Decoration)spv::BadValue; + return spv::DecorationMax; } case glslang::EvqVaryingIn: case glslang::EvqVaryingOut: assert(type.getQualifier().layoutPacking == glslang::ElpNone); - return (spv::Decoration)spv::BadValue; + return spv::DecorationMax; default: assert(0); - return (spv::Decoration)spv::BadValue; + return spv::DecorationMax; } } } } // Translate glslang type to SPIR-V interpolation decorations. -// Returns spv::Decoration(spv::BadValue) when no decoration +// Returns spv::DecorationMax when no decoration // should be applied. -spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier) +spv::Decoration TGlslangToSpvTraverser::TranslateInterpolationDecoration(const glslang::TQualifier& qualifier) { if (qualifier.smooth) // Smooth decoration doesn't exist in SPIR-V 1.0 - return (spv::Decoration)spv::BadValue; + return spv::DecorationMax; else if (qualifier.nopersp) return spv::DecorationNoPerspective; else if (qualifier.flat) return spv::DecorationFlat; +#ifdef AMD_EXTENSIONS + else if (qualifier.explicitInterp) { + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::DecorationExplicitInterpAMD; + } +#endif else - return (spv::Decoration)spv::BadValue; + return spv::DecorationMax; } // Translate glslang type to SPIR-V auxiliary storage decorations. -// Returns spv::Decoration(spv::BadValue) when no decoration +// Returns spv::DecorationMax when no decoration // should be applied. spv::Decoration TGlslangToSpvTraverser::TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier) { @@ -388,7 +414,7 @@ spv::Decoration TGlslangToSpvTraverser::TranslateAuxiliaryStorageDecoration(cons builder.addCapability(spv::CapabilitySampleRateShading); return spv::DecorationSample; } else - return (spv::Decoration)spv::BadValue; + return spv::DecorationMax; } // If glslang type is invariant, return SPIR-V invariant decoration. @@ -397,7 +423,7 @@ spv::Decoration TranslateInvariantDecoration(const glslang::TQualifier& qualifie if (qualifier.invariant) return spv::DecorationInvariant; else - return (spv::Decoration)spv::BadValue; + return spv::DecorationMax; } // If glslang type is noContraction, return SPIR-V NoContraction decoration. @@ -406,7 +432,7 @@ spv::Decoration TranslateNoContractionDecoration(const glslang::TQualifier& qual if (qualifier.noContraction) return spv::DecorationNoContraction; else - return (spv::Decoration)spv::BadValue; + return spv::DecorationMax; } // Translate a glslang built-in variable to a SPIR-V built in decoration. Also generate @@ -475,13 +501,27 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvInstanceId: return spv::BuiltInInstanceId; case glslang::EbvVertexIndex: return spv::BuiltInVertexIndex; case glslang::EbvInstanceIndex: return spv::BuiltInInstanceIndex; + case glslang::EbvBaseVertex: + builder.addExtension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addCapability(spv::CapabilityDrawParameters); + return spv::BuiltInBaseVertex; + case glslang::EbvBaseInstance: + builder.addExtension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addCapability(spv::CapabilityDrawParameters); + return spv::BuiltInBaseInstance; + case glslang::EbvDrawId: - // TODO: Add SPIR-V builtin ID. - logger->missingFunctionality("shader draw parameters"); - return (spv::BuiltIn)spv::BadValue; - case glslang::EbvPrimitiveId: return spv::BuiltInPrimitiveId; + builder.addExtension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addCapability(spv::CapabilityDrawParameters); + return spv::BuiltInDrawIndex; + + case glslang::EbvPrimitiveId: + if (glslangIntermediate->getStage() == EShLangFragment) + builder.addCapability(spv::CapabilityGeometry); + return spv::BuiltInPrimitiveId; + case glslang::EbvInvocationId: return spv::BuiltInInvocationId; case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner; case glslang::EbvTessLevelOuter: return spv::BuiltInTessLevelOuter; @@ -498,17 +538,72 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvLocalInvocationId: return spv::BuiltInLocalInvocationId; case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex; case glslang::EbvGlobalInvocationId: return spv::BuiltInGlobalInvocationId; + case glslang::EbvSubGroupSize: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupSize; + case glslang::EbvSubGroupInvocation: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupLocalInvocationId; + case glslang::EbvSubGroupEqMask: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupEqMaskKHR; + case glslang::EbvSubGroupGeMask: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupGeMaskKHR; + case glslang::EbvSubGroupGtMask: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupGtMaskKHR; + case glslang::EbvSubGroupLeMask: + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupLeMaskKHR; + case glslang::EbvSubGroupLtMask: - // TODO: Add SPIR-V builtin ID. - logger->missingFunctionality("shader ballot"); - return (spv::BuiltIn)spv::BadValue; - default: return (spv::BuiltIn)spv::BadValue; + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + return spv::BuiltInSubgroupLtMaskKHR; + +#ifdef AMD_EXTENSIONS + case glslang::EbvBaryCoordNoPersp: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordNoPerspAMD; + + case glslang::EbvBaryCoordNoPerspCentroid: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordNoPerspCentroidAMD; + + case glslang::EbvBaryCoordNoPerspSample: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordNoPerspSampleAMD; + + case glslang::EbvBaryCoordSmooth: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordSmoothAMD; + + case glslang::EbvBaryCoordSmoothCentroid: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordSmoothCentroidAMD; + + case glslang::EbvBaryCoordSmoothSample: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordSmoothSampleAMD; + + case glslang::EbvBaryCoordPullModel: + builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + return spv::BuiltInBaryCoordPullModelAMD; +#endif + default: return spv::BuiltInMax; } } @@ -596,7 +691,7 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy case glslang::ElfRg8ui: return spv::ImageFormatRg8ui; case glslang::ElfR16ui: return spv::ImageFormatR16ui; case glslang::ElfR8ui: return spv::ImageFormatR8ui; - default: return (spv::ImageFormat)spv::BadValue; + default: return spv::ImageFormatMax; } } @@ -628,6 +723,10 @@ void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& pa child.invariant = true; if (parent.nopersp) child.nopersp = true; +#ifdef AMD_EXTENSIONS + if (parent.explicitInterp) + child.explicitInterp = true; +#endif if (parent.flat) child.flat = true; if (parent.centroid) @@ -648,13 +747,17 @@ void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& pa 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); } // @@ -662,7 +765,8 @@ bool HasNonLayoutQualifiers(const glslang::TQualifier& qualifier) // TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* glslangIntermediate, spv::SpvBuildLogger* buildLogger) - : TIntermTraverser(true, false, true), shaderEntry(0), sequenceDepth(0), logger(buildLogger), + : TIntermTraverser(true, false, true), shaderEntry(nullptr), currentFunction(nullptr), + sequenceDepth(0), logger(buildLogger), builder((glslang::GetKhronosToolId() << 16) | GeneratorVersion, logger), inMain(false), mainTerminated(false), linkageOnly(false), glslangIntermediate(glslangIntermediate) @@ -673,8 +777,8 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls 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(); @@ -705,26 +809,26 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls case glslang::ElgTriangles: mode = spv::ExecutionModeTriangles; break; case glslang::ElgQuads: mode = spv::ExecutionModeQuads; break; case glslang::ElgIsolines: mode = spv::ExecutionModeIsolines; break; - default: mode = spv::BadValue; break; + default: mode = spv::ExecutionModeMax; break; } - if (mode != spv::BadValue) + if (mode != spv::ExecutionModeMax) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); switch (glslangIntermediate->getVertexSpacing()) { case glslang::EvsEqual: mode = spv::ExecutionModeSpacingEqual; break; case glslang::EvsFractionalEven: mode = spv::ExecutionModeSpacingFractionalEven; break; case glslang::EvsFractionalOdd: mode = spv::ExecutionModeSpacingFractionalOdd; break; - default: mode = spv::BadValue; break; + default: mode = spv::ExecutionModeMax; break; } - if (mode != spv::BadValue) + if (mode != spv::ExecutionModeMax) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); switch (glslangIntermediate->getVertexOrder()) { case glslang::EvoCw: mode = spv::ExecutionModeVertexOrderCw; break; case glslang::EvoCcw: mode = spv::ExecutionModeVertexOrderCcw; break; - default: mode = spv::BadValue; break; + default: mode = spv::ExecutionModeMax; break; } - if (mode != spv::BadValue) + if (mode != spv::ExecutionModeMax) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); if (glslangIntermediate->getPointMode()) @@ -739,9 +843,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls case glslang::ElgLinesAdjacency: mode = spv::ExecutionModeInputLinesAdjacency; break; case glslang::ElgTriangles: mode = spv::ExecutionModeTriangles; break; case glslang::ElgTrianglesAdjacency: mode = spv::ExecutionModeInputTrianglesAdjacency; break; - default: mode = spv::BadValue; break; + default: mode = spv::ExecutionModeMax; break; } - if (mode != spv::BadValue) + if (mode != spv::ExecutionModeMax) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); builder.addExecutionMode(shaderEntry, spv::ExecutionModeInvocations, glslangIntermediate->getInvocations()); @@ -750,9 +854,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls case glslang::ElgPoints: mode = spv::ExecutionModeOutputPoints; break; case glslang::ElgLineStrip: mode = spv::ExecutionModeOutputLineStrip; break; case glslang::ElgTriangleStrip: mode = spv::ExecutionModeOutputTriangleStrip; break; - default: mode = spv::BadValue; break; + default: mode = spv::ExecutionModeMax; break; } - if (mode != spv::BadValue) + if (mode != spv::ExecutionModeMax) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); break; @@ -773,9 +877,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls switch(glslangIntermediate->getDepth()) { case glslang::EldGreater: mode = spv::ExecutionModeDepthGreater; break; case glslang::EldLess: mode = spv::ExecutionModeDepthLess; break; - default: mode = spv::BadValue; break; + default: mode = spv::ExecutionModeMax; break; } - if (mode != spv::BadValue) + if (mode != spv::ExecutionModeMax) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); if (glslangIntermediate->getDepth() != glslang::EldUnchanged && glslangIntermediate->isDepthReplacing()) @@ -858,13 +962,12 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) // 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); @@ -915,7 +1018,7 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T spv::Id leftRValue = accessChainLoad(node->getLeft()->getType()); // do the operation - rValue = createBinaryOperation(node->getOp(), TranslatePrecisionDecoration(node->getType()), + rValue = createBinaryOperation(node->getOp(), TranslatePrecisionDecoration(node->getOperationPrecision()), TranslateNoContractionDecoration(node->getType().getQualifier()), convertGlslangToSpvType(node->getType()), leftRValue, rValue, node->getType().getBasicType()); @@ -926,7 +1029,7 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T // 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(); @@ -1003,10 +1106,8 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T case glslang::EOpVectorSwizzle: { node->getLeft()->traverse(this); - glslang::TIntermSequence& swizzleSequence = node->getRight()->getAsAggregate()->getSequence(); std::vector swizzle; - for (int i = 0; i < (int)swizzleSequence.size(); ++i) - swizzle.push_back(swizzleSequence[i]->getAsConstantUnion()->getConstArray()[0].getIConst()); + convertSwizzle(*node->getRight()->getAsAggregate(), swizzle); builder.accessChainPushSwizzle(swizzle, convertGlslangToSpvType(node->getLeft()->getType())); } return false; @@ -1042,7 +1143,7 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T spv::Id right = accessChainLoad(node->getRight()->getType()); // get result - spv::Id result = createBinaryOperation(node->getOp(), TranslatePrecisionDecoration(node->getType()), + spv::Id result = createBinaryOperation(node->getOp(), TranslatePrecisionDecoration(node->getOperationPrecision()), TranslateNoContractionDecoration(node->getType().getQualifier()), convertGlslangToSpvType(node->getType()), left, right, node->getLeft()->getType().getBasicType()); @@ -1096,8 +1197,18 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI // Start by evaluating the operand + // Does it need a swizzle inversion? If so, evaluation is inverted; + // operate first on the swizzle base, then apply the swizzle. + spv::Id invertedType = spv::NoType; + auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? invertedType : convertGlslangToSpvType(node->getType()); }; + if (node->getOp() == glslang::EOpInterpolateAtCentroid) + invertedType = getInvertedSwizzleType(*node->getOperand()); + builder.clearAccessChain(); - node->getOperand()->traverse(this); + if (invertedType != spv::NoType) + node->getOperand()->getAsBinaryNode()->getLeft()->traverse(this); + else + node->getOperand()->traverse(this); spv::Id operand = spv::NoResult; @@ -1109,18 +1220,21 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI else operand = accessChainLoad(node->getOperand()->getType()); - spv::Decoration precision = TranslatePrecisionDecoration(node->getType()); + spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision()); spv::Decoration noContraction = TranslateNoContractionDecoration(node->getType().getQualifier()); // it could be a conversion if (! result) - result = createConversion(node->getOp(), precision, noContraction, convertGlslangToSpvType(node->getType()), operand, node->getOperand()->getBasicType()); + result = createConversion(node->getOp(), precision, noContraction, resultType(), operand, node->getOperand()->getBasicType()); // if not, then possibly an operation if (! result) - result = createUnaryOperation(node->getOp(), precision, noContraction, convertGlslangToSpvType(node->getType()), operand, node->getOperand()->getBasicType()); + result = createUnaryOperation(node->getOp(), precision, noContraction, resultType(), operand, node->getOperand()->getBasicType()); if (result) { + if (invertedType) + result = createInvertedSwizzle(precision, *node->getOperand(), result); + builder.clearAccessChain(); builder.setAccessChainRValue(result); @@ -1138,6 +1252,12 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI spv::Id one = 0; if (node->getBasicType() == glslang::EbtFloat) one = builder.makeFloatConstant(1.0F); + else if (node->getBasicType() == glslang::EbtDouble) + one = builder.makeDoubleConstant(1.0); +#ifdef AMD_EXTENSIONS + else if (node->getBasicType() == glslang::EbtFloat16) + one = builder.makeFloat16Constant(1.0F); +#endif else if (node->getBasicType() == glslang::EbtInt64 || node->getBasicType() == glslang::EbtUint64) one = builder.makeInt64Constant(1); else @@ -1149,7 +1269,7 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI else op = glslang::EOpSub; - spv::Id result = createBinaryOperation(op, TranslatePrecisionDecoration(node->getType()), + spv::Id result = createBinaryOperation(op, precision, TranslateNoContractionDecoration(node->getType().getQualifier()), convertGlslangToSpvType(node->getType()), operand, one, node->getType().getBasicType()); @@ -1188,6 +1308,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); spv::Id result = spv::NoResult; + spv::Id invertedType = spv::NoType; // to use to override the natural type of the node + auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? invertedType : convertGlslangToSpvType(node->getType()); }; // try texturing result = createImageTextureFunctionCall(node); @@ -1209,7 +1331,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt assert(node->getOp()); - spv::Decoration precision = TranslatePrecisionDecoration(node->getType()); + spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision()); switch (node->getOp()) { case glslang::EOpSequence: @@ -1225,7 +1347,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // 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()); @@ -1259,9 +1381,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } case glslang::EOpFunction: if (visit == glslang::EvPreVisit) { - if (isShaderEntrypoint(node)) { + if (isShaderEntryPoint(node)) { inMain = true; builder.setBuildPoint(shaderEntry->getLastBlock()); + currentFunction = shaderEntry; } else { handleFunctionEntry(node); } @@ -1309,6 +1432,17 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpConstructDMat4x2: case glslang::EOpConstructDMat4x3: case glslang::EOpConstructDMat4x4: +#ifdef AMD_EXTENSIONS + case glslang::EOpConstructF16Mat2x2: + case glslang::EOpConstructF16Mat2x3: + case glslang::EOpConstructF16Mat2x4: + case glslang::EOpConstructF16Mat3x2: + case glslang::EOpConstructF16Mat3x3: + case glslang::EOpConstructF16Mat3x4: + case glslang::EOpConstructF16Mat4x2: + case glslang::EOpConstructF16Mat4x3: + case glslang::EOpConstructF16Mat4x4: +#endif isMatrix = true; // fall through case glslang::EOpConstructFloat: @@ -1319,6 +1453,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpConstructDVec2: case glslang::EOpConstructDVec3: case glslang::EOpConstructDVec4: +#ifdef AMD_EXTENSIONS + case glslang::EOpConstructFloat16: + case glslang::EOpConstructF16Vec2: + case glslang::EOpConstructF16Vec3: + case glslang::EOpConstructF16Vec4: +#endif case glslang::EOpConstructBool: case glslang::EOpConstructBVec2: case glslang::EOpConstructBVec3: @@ -1344,19 +1484,18 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt { std::vector arguments; translateArguments(*node, arguments); - spv::Id resultTypeId = convertGlslangToSpvType(node->getType()); spv::Id constructed; if (node->getOp() == glslang::EOpConstructTextureSampler) - constructed = builder.createOp(spv::OpSampledImage, resultTypeId, arguments); + constructed = builder.createOp(spv::OpSampledImage, resultType(), arguments); else if (node->getOp() == glslang::EOpConstructStruct || node->getType().isArray()) { std::vector constituents; for (int c = 0; c < (int)arguments.size(); ++c) constituents.push_back(arguments[c]); - constructed = builder.createCompositeConstruct(resultTypeId, constituents); + constructed = builder.createCompositeConstruct(resultType(), constituents); } else if (isMatrix) - constructed = builder.createMatrixConstructor(precision, arguments, resultTypeId); + constructed = builder.createMatrixConstructor(precision, arguments, resultType()); else - constructed = builder.createConstructor(precision, arguments, resultTypeId); + constructed = builder.createConstructor(precision, arguments, resultType()); builder.clearAccessChain(); builder.setAccessChainRValue(constructed); @@ -1385,7 +1524,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt break; } case glslang::EOpMul: - // compontent-wise matrix multiply + // component-wise matrix multiply binOp = glslang::EOpMul; break; case glslang::EOpOuterProduct: @@ -1454,7 +1593,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt spv::Id rightId = accessChainLoad(right->getType()); result = createBinaryOperation(binOp, precision, TranslateNoContractionDecoration(node->getType().getQualifier()), - convertGlslangToSpvType(node->getType()), leftId, rightId, + resultType(), leftId, rightId, left->getType().getBasicType(), reduceComparison); // code above should only make binOp that exists in createBinaryOperation @@ -1471,9 +1610,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt glslang::TIntermSequence& glslangOperands = node->getSequence(); std::vector operands; for (int arg = 0; arg < (int)glslangOperands.size(); ++arg) { - builder.clearAccessChain(); - glslangOperands[arg]->traverse(this); - // special case l-value operands; there are just a few bool lvalue = false; switch (node->getOp()) { @@ -1484,8 +1620,18 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt break; case glslang::EOpInterpolateAtSample: case glslang::EOpInterpolateAtOffset: - if (arg == 0) +#ifdef AMD_EXTENSIONS + case glslang::EOpInterpolateAtVertex: +#endif + if (arg == 0) { lvalue = true; + + // Does it need a swizzle inversion? If so, evaluation is inverted; + // operate first on the swizzle base, then apply the swizzle. + if (glslangOperands[0]->getAsOperator() && + glslangOperands[0]->getAsOperator()->getOp() == glslang::EOpVectorSwizzle) + invertedType = convertGlslangToSpvType(glslangOperands[0]->getAsBinaryNode()->getLeft()->getType()); + } break; case glslang::EOpAtomicAdd: case glslang::EOpAtomicMin: @@ -1511,6 +1657,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt default: break; } + builder.clearAccessChain(); + if (invertedType != spv::NoType && arg == 0) + glslangOperands[0]->getAsBinaryNode()->getLeft()->traverse(this); + else + glslangOperands[arg]->traverse(this); if (lvalue) operands.push_back(builder.accessChainGetLValue()); else @@ -1519,24 +1670,26 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt if (atomic) { // Handle all atomics - result = createAtomicOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operands, node->getBasicType()); + result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType()); } else { // Pass through to generic operations. switch (glslangOperands.size()) { case 0: - result = createNoArgOperation(node->getOp()); + result = createNoArgOperation(node->getOp(), precision, resultType()); break; case 1: result = createUnaryOperation( node->getOp(), precision, TranslateNoContractionDecoration(node->getType().getQualifier()), - convertGlslangToSpvType(node->getType()), operands.front(), + resultType(), operands.front(), glslangOperands[0]->getAsTyped()->getBasicType()); break; default: - result = createMiscOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operands, node->getBasicType()); + result = createMiscOperation(node->getOp(), precision, resultType(), operands, node->getBasicType()); break; } + if (invertedType) + result = createInvertedSwizzle(precision, *glslangOperands[0]->getAsBinaryNode(), result); } if (noReturnValue) @@ -1739,9 +1892,18 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T builder.createLoopContinue(); break; case glslang::EOpReturn: - if (node->getExpression()) - builder.makeReturn(false, accessChainLoad(node->getExpression()->getType())); - else + if (node->getExpression()) { + const glslang::TType& glslangReturnType = node->getExpression()->getType(); + spv::Id returnId = accessChainLoad(glslangReturnType); + if (builder.getTypeId(returnId) != currentFunction->getReturnType()) { + builder.clearAccessChain(); + spv::Id copyId = builder.createVariable(spv::StorageClassFunction, currentFunction->getReturnType()); + builder.setAccessChainLValue(copyId); + multiTypeStore(glslangReturnType, returnId); + returnId = builder.createLoad(copyId); + } + builder.makeReturn(false, returnId); + } else builder.makeReturn(false); builder.clearAccessChain(); @@ -1788,6 +1950,35 @@ spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler) } } +// If node is a swizzle operation, return the type that should be used if +// the swizzle base is first consumed by another operation, before the swizzle +// is applied. +spv::Id TGlslangToSpvTraverser::getInvertedSwizzleType(const glslang::TIntermTyped& node) +{ + if (node.getAsOperator() && + node.getAsOperator()->getOp() == glslang::EOpVectorSwizzle) + return convertGlslangToSpvType(node.getAsBinaryNode()->getLeft()->getType()); + else + return spv::NoType; +} + +// When inverting a swizzle with a parent op, this function +// will apply the swizzle operation to a completed parent operation. +spv::Id TGlslangToSpvTraverser::createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped& node, spv::Id parentResult) +{ + std::vector swizzle; + convertSwizzle(*node.getAsBinaryNode()->getRight()->getAsAggregate(), swizzle); + return builder.createRvalueSwizzle(precision, convertGlslangToSpvType(node.getType()), parentResult, swizzle); +} + +// Convert a glslang AST swizzle node to a swizzle vector for building SPIR-V. +void TGlslangToSpvTraverser::convertSwizzle(const glslang::TIntermAggregate& node, std::vector& swizzle) +{ + const glslang::TIntermSequence& swizzleSequence = node.getSequence(); + for (int i = 0; i < (int)swizzleSequence.size(); ++i) + swizzle.push_back(swizzleSequence[i]->getAsConstantUnion()->getConstArray()[0].getIConst()); +} + // Convert from a glslang type to an SPV type, by calling into a // recursive version of this function. This establishes the inherited // layout state rooted from the top-level type. @@ -1814,6 +2005,13 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty case glslang::EbtDouble: spvType = builder.makeFloatType(64); break; +#ifdef AMD_EXTENSIONS + case glslang::EbtFloat16: + builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float); + builder.addCapability(spv::CapabilityFloat16); + spvType = builder.makeFloatType(16); + break; +#endif case glslang::EbtBool: // "transparent" bool doesn't exist in SPIR-V. The GLSL convention is // a 32-bit int where non-0 means true. @@ -1865,7 +2063,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty // 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; @@ -1975,7 +2173,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy // 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 @@ -2070,7 +2268,7 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, // built-in variable decorations spv::BuiltIn builtIn = TranslateBuiltInDecoration(glslangMember.getQualifier().builtIn, true); - if (builtIn != spv::BadValue) + if (builtIn != spv::BuiltInMax) addMemberDecoration(spvType, member, spv::DecorationBuiltIn, (int)builtIn); } } @@ -2142,6 +2340,8 @@ spv::Id TGlslangToSpvTraverser::accessChainLoad(const glslang::TType& type) // 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 @@ -2171,6 +2371,77 @@ void TGlslangToSpvTraverser::accessChainStore(const glslang::TType& type, spv::I 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 a 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. @@ -2281,11 +2552,9 @@ void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList& } } -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. @@ -2293,23 +2562,22 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF { 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 paramTypes; std::vector paramPrecisions; @@ -2323,7 +2591,7 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF 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); } @@ -2354,7 +2622,7 @@ void TGlslangToSpvTraverser::makeGlobalInitializers(const glslang::TIntermSequen 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); } } @@ -2374,8 +2642,8 @@ void TGlslangToSpvTraverser::handleFunctionEntry(const glslang::TIntermAggregate { // SPIR-V functions should already be in the functionMap from the prepass // that called makeFunctions(). - spv::Function* function = functionMap[node->getName().c_str()]; - spv::Block* functionBlock = function->getEntryBlock(); + currentFunction = functionMap[node->getName().c_str()]; + spv::Block* functionBlock = currentFunction->getEntryBlock(); builder.setBuildPoint(functionBlock); } @@ -2480,6 +2748,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO if (! node->isImage() && ! node->isTexture()) { return spv::NoResult; } + auto resultType = [&node,this]{ return convertGlslangToSpvType(node->getType()); }; // Process a GLSL texturing op (will be SPV image) const glslang::TSampler sampler = node->getAsAggregate() ? node->getAsAggregate()->getSequence()[0]->getAsTyped()->getType().getSampler() @@ -2489,7 +2758,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO translateArguments(*node->getAsAggregate(), arguments); else translateArguments(*node->getAsUnaryNode(), arguments); - spv::Decoration precision = TranslatePrecisionDecoration(node->getType()); + spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision()); spv::Builder::TextureParameters params = { }; params.sampler = arguments[0]; @@ -2499,9 +2768,10 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO // Check for queries if (cracked.query) { - // a sampled image needs to have the image extracted first - if (builder.isSampledImage(params.sampler)) + // OpImageQueryLod works on a sampled image, for other queries the image has to be extracted first + if (node->getOp() != glslang::EOpTextureQueryLod && builder.isSampledImage(params.sampler)) params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); + switch (node->getOp()) { case glslang::EOpImageQuerySize: case glslang::EOpTextureQuerySize: @@ -2546,7 +2816,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO operands.push_back(spv::ImageOperandsSampleMask); operands.push_back(*(opIt++)); } - return builder.createOp(spv::OpImageRead, convertGlslangToSpvType(node->getType()), operands); + return builder.createOp(spv::OpImageRead, resultType(), operands); } operands.push_back(*(opIt++)); @@ -2557,7 +2827,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO } if (builder.getImageTypeFormat(builder.getImageType(operands.front())) == spv::ImageFormatUnknown) builder.addCapability(spv::CapabilityStorageImageReadWithoutFormat); - return builder.createOp(spv::OpImageRead, convertGlslangToSpvType(node->getType()), operands); + return builder.createOp(spv::OpImageRead, resultType(), operands); } else if (node->getOp() == glslang::EOpImageStore) { if (sampler.ms) { operands.push_back(*(opIt + 1)); @@ -2581,7 +2851,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO // Create the return type that was a special structure spv::Id texelOut = *opIt; - spv::Id typeId0 = convertGlslangToSpvType(node->getType()); + spv::Id typeId0 = resultType(); spv::Id typeId1 = builder.getDerefTypeId(texelOut); spv::Id resultTypeId = builder.makeStructResultType(typeId0, typeId1); @@ -2597,7 +2867,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO // as the first source operand, is required by SPIR-V atomic operations. operands.push_back(sampler.ms ? *(opIt++) : builder.makeUintConstant(0)); // For non-MS, the value should be 0 - spv::Id resultTypeId = builder.makePointer(spv::StorageClassImage, convertGlslangToSpvType(node->getType())); + spv::Id resultTypeId = builder.makePointer(spv::StorageClassImage, resultType()); spv::Id pointer = builder.createOp(spv::OpImageTexelPointer, resultTypeId, operands); std::vector operands; @@ -2605,7 +2875,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO for (; opIt != arguments.end(); ++opIt) operands.push_back(*opIt); - return createAtomicOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operands, node->getBasicType()); + return createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType()); } } @@ -2745,7 +3015,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO } } - return builder.createTextureCall(precision, convertGlslangToSpvType(node->getType()), sparse, cracked.fetch, cracked.proj, cracked.gather, noImplicitLod, params); + return builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather, noImplicitLod, params); } spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAggregate* node) @@ -2776,7 +3046,7 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg builder.clearAccessChain(); glslangArgs[a]->traverse(this); argTypes.push_back(¶mType); - // keep outputs as and opaque objects l-values, evaluate input-only as r-values + // keep outputs and opaque objects as l-values, evaluate input-only as r-values if (qualifiers[a] != glslang::EvqConstReadOnly || paramType.isOpaque()) { // save l-value lValues.push_back(builder.getAccessChain()); @@ -2807,7 +3077,9 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg // 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 { @@ -2824,11 +3096,12 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg // 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; } @@ -2844,7 +3117,11 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv glslang::TBasicType typeProxy, bool reduceComparison) { bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; +#ifdef AMD_EXTENSIONS + bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; +#else bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; +#endif bool isBool = typeProxy == glslang::EbtBool; spv::Op binOp = spv::OpNop; @@ -2992,11 +3269,9 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, spv // 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: @@ -3169,9 +3444,14 @@ spv::Id TGlslangToSpvTraverser::createBinaryMatrixOperation(spv::Op op, spv::Dec spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Decoration noContraction, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy) { spv::Op unaryOp = spv::OpNop; + int extBuiltins = -1; int libCall = -1; bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; +#ifdef AMD_EXTENSIONS + bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; +#else bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; +#endif switch (op) { case glslang::EOpNegative: @@ -3352,10 +3632,16 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: 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; +#ifdef AMD_EXTENSIONS + case glslang::EOpPackFloat2x16: + case glslang::EOpUnpackFloat2x16: + unaryOp = spv::OpBitcast; + break; +#endif + case glslang::EOpDPdx: unaryOp = spv::OpDPdx; break; @@ -3441,14 +3727,39 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: case glslang::EOpBallot: case glslang::EOpReadFirstInvocation: - logger->missingFunctionality("shader ballot"); - libCall = spv::GLSLstd450Bad; - break; - case glslang::EOpAnyInvocation: case glslang::EOpAllInvocations: case glslang::EOpAllInvocationsEqual: - return createInvocationsOperation(op, typeId, operand); +#ifdef AMD_EXTENSIONS + case glslang::EOpMinInvocations: + case glslang::EOpMaxInvocations: + case glslang::EOpAddInvocations: + case glslang::EOpMinInvocationsNonUniform: + case glslang::EOpMaxInvocationsNonUniform: + case glslang::EOpAddInvocationsNonUniform: +#endif + { + std::vector operands; + operands.push_back(operand); + return createInvocationsOperation(op, typeId, operands, typeProxy); + } + +#ifdef AMD_EXTENSIONS + case glslang::EOpMbcnt: + extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot); + libCall = spv::MbcntAMD; + break; + + case glslang::EOpCubeFaceIndex: + extBuiltins = getExtBuiltins(spv::E_SPV_AMD_gcn_shader); + libCall = spv::CubeFaceIndexAMD; + break; + + case glslang::EOpCubeFaceCoord: + extBuiltins = getExtBuiltins(spv::E_SPV_AMD_gcn_shader); + libCall = spv::CubeFaceCoordAMD; + break; +#endif default: return 0; @@ -3458,7 +3769,7 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: if (libCall >= 0) { std::vector args; args.push_back(operand); - id = builder.createBuiltinCall(typeId, stdBuiltins, libCall, args); + id = builder.createBuiltinCall(typeId, extBuiltins >= 0 ? extBuiltins : stdBuiltins, libCall, args); } else { id = builder.createUnaryOp(unaryOp, typeId, operand); } @@ -3527,22 +3838,40 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec zero = makeSmearedConstant(zero, vectorSize); return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); +#ifdef AMD_EXTENSIONS + case glslang::EOpConvFloat16ToBool: + zero = builder.makeFloat16Constant(0.0F); + zero = makeSmearedConstant(zero, vectorSize); + return builder.createBinOp(spv::OpFOrdNotEqual, destType, operand, zero); +#endif + case glslang::EOpConvBoolToFloat: convOp = spv::OpSelect; - zero = builder.makeFloatConstant(0.0); - one = builder.makeFloatConstant(1.0); + zero = builder.makeFloatConstant(0.0F); + one = builder.makeFloatConstant(1.0F); break; + case glslang::EOpConvBoolToDouble: convOp = spv::OpSelect; zero = builder.makeDoubleConstant(0.0); one = builder.makeDoubleConstant(1.0); break; + +#ifdef AMD_EXTENSIONS + case glslang::EOpConvBoolToFloat16: + convOp = spv::OpSelect; + zero = builder.makeFloat16Constant(0.0F); + one = builder.makeFloat16Constant(1.0F); + break; +#endif + case glslang::EOpConvBoolToInt: case glslang::EOpConvBoolToInt64: zero = (op == glslang::EOpConvBoolToInt64) ? builder.makeInt64Constant(0) : builder.makeIntConstant(0); one = (op == glslang::EOpConvBoolToInt64) ? builder.makeInt64Constant(1) : builder.makeIntConstant(1); convOp = spv::OpSelect; break; + case glslang::EOpConvBoolToUint: case glslang::EOpConvBoolToUint64: zero = (op == glslang::EOpConvBoolToUint64) ? builder.makeUint64Constant(0) : builder.makeUintConstant(0); @@ -3554,6 +3883,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvIntToDouble: case glslang::EOpConvInt64ToFloat: case glslang::EOpConvInt64ToDouble: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvIntToFloat16: + case glslang::EOpConvInt64ToFloat16: +#endif convOp = spv::OpConvertSToF; break; @@ -3561,11 +3894,21 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvUintToDouble: case glslang::EOpConvUint64ToFloat: case glslang::EOpConvUint64ToDouble: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvUintToFloat16: + case glslang::EOpConvUint64ToFloat16: +#endif convOp = spv::OpConvertUToF; break; case glslang::EOpConvDoubleToFloat: case glslang::EOpConvFloatToDouble: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvDoubleToFloat16: + case glslang::EOpConvFloat16ToDouble: + case glslang::EOpConvFloatToFloat16: + case glslang::EOpConvFloat16ToFloat: +#endif convOp = spv::OpFConvert; if (builder.isMatrixType(destType)) return createUnaryMatrixOperation(convOp, precision, noContraction, destType, operand, typeProxy); @@ -3575,6 +3918,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvDoubleToInt: case glslang::EOpConvFloatToInt64: case glslang::EOpConvDoubleToInt64: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvFloat16ToInt: + case glslang::EOpConvFloat16ToInt64: +#endif convOp = spv::OpConvertFToS; break; @@ -3584,8 +3931,8 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec 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. @@ -3599,6 +3946,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, spv::Dec case glslang::EOpConvDoubleToUint: case glslang::EOpConvFloatToUint64: case glslang::EOpConvDoubleToUint64: +#ifdef AMD_EXTENSIONS + case glslang::EOpConvFloat16ToUint: + case glslang::EOpConvFloat16ToUint64: +#endif convOp = spv::OpConvertFToU; break; @@ -3765,39 +4116,225 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv } // Create group invocation operations. -spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, spv::Id operand) +spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { - builder.addCapability(spv::CapabilityGroups); + bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; +#ifdef AMD_EXTENSIONS + bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; +#else + bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; +#endif - std::vector operands; - operands.push_back(builder.makeUintConstant(spv::ScopeSubgroup)); - operands.push_back(operand); + spv::Op opCode = spv::OpNop; + + std::vector spvGroupOperands; + if (op == glslang::EOpBallot || op == glslang::EOpReadFirstInvocation) { + builder.addExtension(spv::E_SPV_KHR_shader_ballot); + builder.addCapability(spv::CapabilitySubgroupBallotKHR); + } else { + builder.addCapability(spv::CapabilityGroups); +#ifdef AMD_EXTENSIONS + if (op == glslang::EOpMinInvocationsNonUniform || + op == glslang::EOpMaxInvocationsNonUniform || + op == glslang::EOpAddInvocationsNonUniform) + builder.addExtension(spv::E_SPV_AMD_shader_ballot); +#endif + + spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup)); +#ifdef AMD_EXTENSIONS + if (op == glslang::EOpMinInvocations || op == glslang::EOpMaxInvocations || op == glslang::EOpAddInvocations || + op == glslang::EOpMinInvocationsNonUniform || op == glslang::EOpMaxInvocationsNonUniform || op == glslang::EOpAddInvocationsNonUniform) + spvGroupOperands.push_back(spv::GroupOperationReduce); +#endif + } + + for (auto opIt = operands.begin(); opIt != operands.end(); ++opIt) + spvGroupOperands.push_back(*opIt); switch (op) { case glslang::EOpAnyInvocation: + opCode = spv::OpGroupAny; + break; case glslang::EOpAllInvocations: - return builder.createOp(op == glslang::EOpAnyInvocation ? spv::OpGroupAny : spv::OpGroupAll, typeId, operands); - + opCode = spv::OpGroupAll; + break; case glslang::EOpAllInvocationsEqual: { - spv::Id groupAll = builder.createOp(spv::OpGroupAll, typeId, operands); - spv::Id groupAny = builder.createOp(spv::OpGroupAny, typeId, operands); + spv::Id groupAll = builder.createOp(spv::OpGroupAll, typeId, spvGroupOperands); + spv::Id groupAny = builder.createOp(spv::OpGroupAny, typeId, spvGroupOperands); return builder.createBinOp(spv::OpLogicalOr, typeId, groupAll, builder.createUnaryOp(spv::OpLogicalNot, typeId, groupAny)); } + + case glslang::EOpReadInvocation: + opCode = spv::OpGroupBroadcast; + if (builder.isVectorType(typeId)) + return CreateInvocationsVectorOperation(opCode, typeId, operands); + break; + case glslang::EOpReadFirstInvocation: + opCode = spv::OpSubgroupFirstInvocationKHR; + break; + case glslang::EOpBallot: + { + // NOTE: According to the spec, the result type of "OpSubgroupBallotKHR" must be a 4 component vector of 32 + // bit integer types. The GLSL built-in function "ballotARB()" assumes the maximum number of invocations in + // a subgroup is 64. Thus, we have to convert uvec4.xy to uint64_t as follow: + // + // result = Bitcast(SubgroupBallotKHR(Predicate).xy) + // + spv::Id uintType = builder.makeUintType(32); + spv::Id uvec4Type = builder.makeVectorType(uintType, 4); + spv::Id result = builder.createOp(spv::OpSubgroupBallotKHR, uvec4Type, spvGroupOperands); + + std::vector components; + components.push_back(builder.createCompositeExtract(result, uintType, 0)); + components.push_back(builder.createCompositeExtract(result, uintType, 1)); + + spv::Id uvec2Type = builder.makeVectorType(uintType, 2); + return builder.createUnaryOp(spv::OpBitcast, typeId, + builder.createCompositeConstruct(uvec2Type, components)); + } + +#ifdef AMD_EXTENSIONS + case glslang::EOpMinInvocations: + case glslang::EOpMaxInvocations: + case glslang::EOpAddInvocations: + if (op == glslang::EOpMinInvocations) { + if (isFloat) + opCode = spv::OpGroupFMin; + else { + if (isUnsigned) + opCode = spv::OpGroupUMin; + else + opCode = spv::OpGroupSMin; + } + } else if (op == glslang::EOpMaxInvocations) { + if (isFloat) + opCode = spv::OpGroupFMax; + else { + if (isUnsigned) + opCode = spv::OpGroupUMax; + else + opCode = spv::OpGroupSMax; + } + } else { + if (isFloat) + opCode = spv::OpGroupFAdd; + else + opCode = spv::OpGroupIAdd; + } + + if (builder.isVectorType(typeId)) + return CreateInvocationsVectorOperation(opCode, typeId, operands); + + break; + case glslang::EOpMinInvocationsNonUniform: + case glslang::EOpMaxInvocationsNonUniform: + case glslang::EOpAddInvocationsNonUniform: + if (op == glslang::EOpMinInvocationsNonUniform) { + if (isFloat) + opCode = spv::OpGroupFMinNonUniformAMD; + else { + if (isUnsigned) + opCode = spv::OpGroupUMinNonUniformAMD; + else + opCode = spv::OpGroupSMinNonUniformAMD; + } + } + else if (op == glslang::EOpMaxInvocationsNonUniform) { + if (isFloat) + opCode = spv::OpGroupFMaxNonUniformAMD; + else { + if (isUnsigned) + opCode = spv::OpGroupUMaxNonUniformAMD; + else + opCode = spv::OpGroupSMaxNonUniformAMD; + } + } + else { + if (isFloat) + opCode = spv::OpGroupFAddNonUniformAMD; + else + opCode = spv::OpGroupIAddNonUniformAMD; + } + + if (builder.isVectorType(typeId)) + return CreateInvocationsVectorOperation(opCode, typeId, operands); + + break; +#endif default: logger->missingFunctionality("invocation operation"); return spv::NoResult; } + + assert(opCode != spv::OpNop); + return builder.createOp(opCode, typeId, spvGroupOperands); +} + +// Create group invocation operations on a vector +spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, std::vector& operands) +{ +#ifdef AMD_EXTENSIONS + 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::OpGroupBroadcast || + op == spv::OpGroupFMinNonUniformAMD || op == spv::OpGroupUMinNonUniformAMD || op == spv::OpGroupSMinNonUniformAMD || + op == spv::OpGroupFMaxNonUniformAMD || op == spv::OpGroupUMaxNonUniformAMD || op == spv::OpGroupSMaxNonUniformAMD || + op == spv::OpGroupFAddNonUniformAMD || op == spv::OpGroupIAddNonUniformAMD); +#else + 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::OpGroupBroadcast); +#endif + + // 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(operands[0]); + spv::Id scalarType = builder.getScalarTypeId(builder.getTypeId(operands[0])); + std::vector results; + + // do each scalar op + for (int comp = 0; comp < numComponents; ++comp) { + std::vector indexes; + indexes.push_back(comp); + spv::Id scalar = builder.createCompositeExtract(operands[0], scalarType, indexes); + + std::vector spvGroupOperands; + spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup)); + if (op == spv::OpGroupBroadcast) { + spvGroupOperands.push_back(scalar); + spvGroupOperands.push_back(operands[1]); + } else { + spvGroupOperands.push_back(spv::GroupOperationReduce); + spvGroupOperands.push_back(scalar); + } + + results.push_back(builder.createOp(op, scalarType, spvGroupOperands)); + } + + // put the pieces together + return builder.createCompositeConstruct(typeId, results); } spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy) { bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; +#ifdef AMD_EXTENSIONS + bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16; +#else bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; +#endif spv::Op opCode = spv::OpNop; + int extBuiltins = -1; int libCall = -1; size_t consumedOperands = operands.size(); spv::Id typeId0 = 0; @@ -3937,9 +4474,61 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: break; case glslang::EOpReadInvocation: - logger->missingFunctionality("shader ballot"); - libCall = spv::GLSLstd450Bad; + return createInvocationsOperation(op, typeId, operands, typeProxy); + +#ifdef AMD_EXTENSIONS + case glslang::EOpSwizzleInvocations: + extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot); + libCall = spv::SwizzleInvocationsAMD; break; + case glslang::EOpSwizzleInvocationsMasked: + extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot); + libCall = spv::SwizzleInvocationsMaskedAMD; + break; + case glslang::EOpWriteInvocation: + extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_ballot); + libCall = spv::WriteInvocationAMD; + break; + + case glslang::EOpMin3: + extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_trinary_minmax); + if (isFloat) + libCall = spv::FMin3AMD; + else { + if (isUnsigned) + libCall = spv::UMin3AMD; + else + libCall = spv::SMin3AMD; + } + break; + case glslang::EOpMax3: + extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_trinary_minmax); + if (isFloat) + libCall = spv::FMax3AMD; + else { + if (isUnsigned) + libCall = spv::UMax3AMD; + else + libCall = spv::SMax3AMD; + } + break; + case glslang::EOpMid3: + extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_trinary_minmax); + if (isFloat) + libCall = spv::FMid3AMD; + else { + if (isUnsigned) + libCall = spv::UMid3AMD; + else + libCall = spv::SMid3AMD; + } + break; + + case glslang::EOpInterpolateAtVertex: + extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_explicit_vertex_parameter); + libCall = spv::InterpolateAtVertexAMD; + break; +#endif default: return 0; @@ -3951,7 +4540,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: // Construct the call arguments, without modifying the original operands vector. // We might need the remaining arguments, e.g. in the EOpFrexp case. std::vector callArguments(operands.begin(), operands.begin() + consumedOperands); - id = builder.createBuiltinCall(typeId, stdBuiltins, libCall, callArguments); + id = builder.createBuiltinCall(typeId, extBuiltins >= 0 ? extBuiltins : stdBuiltins, libCall, callArguments); } else { switch (consumedOperands) { case 0: @@ -3997,8 +4586,8 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: return builder.setPrecision(id, precision); } -// Intrinsics with no arguments, no return value, and no precision. -spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op) +// Intrinsics with no arguments (or no return value, and no precision). +spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId) { // TODO: get the barrier operands correct @@ -4045,6 +4634,14 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op) // Control barrier with non-"None" semantic is also a memory barrier. builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeWorkgroup, spv::MemorySemanticsWorkgroupMemoryMask); return 0; +#ifdef AMD_EXTENSIONS + case glslang::EOpTime: + { + std::vector args; // Dummy arguments + spv::Id id = builder.createBuiltinCall(typeId, getExtBuiltins(spv::E_SPV_AMD_gcn_shader), spv::TimeAMD, args); + return builder.setPrecision(id, precision); + } +#endif default: logger->missingFunctionality("unknown operation with no arguments"); return 0; @@ -4122,7 +4719,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol // built-in variable decorations spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn, false); - if (builtIn != spv::BadValue) + if (builtIn != spv::BuiltInMax) addDecoration(id, spv::DecorationBuiltIn, (int)builtIn); return id; @@ -4131,28 +4728,28 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol // If 'dec' is valid, add no-operand decoration to an object void TGlslangToSpvTraverser::addDecoration(spv::Id id, spv::Decoration dec) { - if (dec != spv::BadValue) + if (dec != spv::DecorationMax) builder.addDecoration(id, dec); } // If 'dec' is valid, add a one-operand decoration to an object void TGlslangToSpvTraverser::addDecoration(spv::Id id, spv::Decoration dec, unsigned value) { - if (dec != spv::BadValue) + if (dec != spv::DecorationMax) builder.addDecoration(id, dec, value); } // If 'dec' is valid, add a no-operand decoration to a struct member void TGlslangToSpvTraverser::addMemberDecoration(spv::Id id, int member, spv::Decoration dec) { - if (dec != spv::BadValue) + if (dec != spv::DecorationMax) builder.addMemberDecoration(id, (unsigned)member, dec); } // If 'dec' is valid, add a one-operand decoration to a struct member void TGlslangToSpvTraverser::addMemberDecoration(spv::Id id, int member, spv::Decoration dec, unsigned value) { - if (dec != spv::BadValue) + if (dec != spv::DecorationMax) builder.addMemberDecoration(id, (unsigned)member, dec, value); } @@ -4264,6 +4861,11 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla case glslang::EbtDouble: spvConsts.push_back(builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst())); break; +#ifdef AMD_EXTENSIONS + case glslang::EbtFloat16: + spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); + break; +#endif case glslang::EbtBool: spvConsts.push_back(builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst())); break; @@ -4296,6 +4898,11 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla case glslang::EbtDouble: scalar = builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst(), specConstant); break; +#ifdef AMD_EXTENSIONS + case glslang::EbtFloat16: + scalar = builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); + break; +#endif case glslang::EbtBool: scalar = builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst(), specConstant); break; @@ -4437,6 +5044,20 @@ spv::Id TGlslangToSpvTraverser::createShortCircuit(glslang::TOperator op, glslan return builder.createOp(spv::OpPhi, boolTypeId, phiOperands); } +// Return type Id of the imported set of extended instructions corresponds to the name. +// Import this set if it has not been imported yet. +spv::Id TGlslangToSpvTraverser::getExtBuiltins(const char* name) +{ + if (extBuiltinMap.find(name) != extBuiltinMap.end()) + return extBuiltinMap[name]; + else { + builder.addExtension(name); + spv::Id extBuiltins = builder.import(name); + extBuiltinMap[name] = extBuiltins; + return extBuiltins; + } +} + }; // end anonymous namespace namespace glslang { diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index 1bbd5892..5c551fb8 100755 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -127,6 +127,33 @@ namespace spv { } } + // 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 @@ namespace spv { } } + // Return true if this opcode is flow control bool spirvbin_t::isFlowCtrl(spv::Op opCode) const { switch (opCode) { @@ -155,6 +183,7 @@ namespace spv { } } + // Return true if this opcode defines a type bool spirvbin_t::isTypeOp(spv::Op opCode) const { switch (opCode) { @@ -182,6 +211,7 @@ namespace spv { } } + // Return true if this opcode defines a constant bool spirvbin_t::isConstOp(spv::Op opCode) const { switch (opCode) { @@ -324,7 +354,7 @@ namespace spv { fnPosDCE.clear(); fnCalls.clear(); typeConstPos.clear(); - typeConstPosR.clear(); + idPosR.clear(); entryPoint = spv::NoResult; largestNewId = 0; @@ -340,6 +370,25 @@ namespace spv { 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 @@ namespace spv { } 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,10 +483,19 @@ namespace spv { 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; @@ -457,13 +513,25 @@ namespace spv { // 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 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 @@ namespace spv { } #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 @@ namespace spv { 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 @@ namespace spv { 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 @@ namespace spv { 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 @@ namespace spv { 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 e5e8e1bd..b3c686aa 100755 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -38,7 +38,7 @@ #include #include -#include +#include namespace spv { @@ -74,7 +74,8 @@ public: } // namespace SPV #if !defined (use_cpp11) -#include +#include +#include namespace spv { class spirvbin_t : public spirvbin_base_t @@ -82,7 +83,7 @@ class spirvbin_t : public spirvbin_base_t public: spirvbin_t(int /*verbose = 0*/) { } - void remap(std::vector& /*spv*/, unsigned int /*opts = 0*/) + void remap(std::vector& /*spv*/, unsigned int /*opts = 0*/) { printf("Tool not compiled for C++11, which is required for SPIR-V remapping.\n"); exit(5); @@ -159,16 +160,21 @@ private: typedef std::set posmap_t; typedef std::unordered_map posmap_rev_t; + // Maps and ID to the size of its base type, if known. + typedef std::unordered_map 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 +183,10 @@ private: 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 +269,9 @@ private: // Which functions are called, anywhere in the module, with a call count std::unordered_map 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 idMapL; // ID {M}ap from {L}ocal to {G}lobal IDs diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index f71b9350..4703edc3 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -38,14 +38,18 @@ // SpvBuilder.h. // -#include -#include +#include +#include #include #include #include "SpvBuilder.h" +#ifdef AMD_EXTENSIONS + #include "hex_float.h" +#endif + #ifndef _WIN32 #include #endif @@ -785,6 +789,36 @@ Id Builder::makeDoubleConstant(double d, bool specConstant) return c->getResultId(); } +#ifdef AMD_EXTENSIONS +Id Builder::makeFloat16Constant(float f16, bool specConstant) +{ + Op opcode = specConstant ? OpSpecConstant : OpConstant; + Id typeId = makeFloatType(16); + + spvutils::HexFloat> fVal(f16); + spvutils::HexFloat> f16Val(0); + fVal.castTo(f16Val, spvutils::kRoundToZero); + + unsigned value = f16Val.value().getAsFloat().get_value(); + + // See if we already made it. Applies only to regular constants, because specialization constants + // must remain distinct for the purpose of applying a SpecId decoration. + if (!specConstant) { + Id existing = findScalarConstant(OpTypeFloat, opcode, typeId, value); + if (existing) + return existing; + } + + Instruction* c = new Instruction(getUniqueId(), typeId, opcode); + c->addImmediateOperand(value); + constantsTypesGlobals.push_back(std::unique_ptr(c)); + groupedConstants[OpTypeFloat].push_back(c); + module.mapInstruction(c); + + return c->getResultId(); +} +#endif + Id Builder::findCompositeConstant(Op typeClass, std::vector& comps) const { Instruction* constant = 0; @@ -907,7 +941,7 @@ void Builder::addLine(Id target, Id fileName, int lineNum, int column) void Builder::addDecoration(Id id, Decoration decoration, int num) { - if (decoration == (spv::Decoration)spv::BadValue) + if (decoration == spv::DecorationMax) return; Instruction* dec = new Instruction(OpDecorate); dec->addIdOperand(id); @@ -931,7 +965,7 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat } // Comments in header -Function* Builder::makeEntrypoint(const char* entryPoint) +Function* Builder::makeEntryPoint(const char* entryPoint) { assert(! mainFunction); @@ -1328,15 +1362,20 @@ Id Builder::createRvalueSwizzle(Decoration precision, Id typeId, Id source, std: // Comments in header Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, std::vector& 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 +1384,12 @@ Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, std::vectormissingFunctionality("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; @@ -2312,7 +2352,11 @@ void Builder::dump(std::vector& out) const capInst.dump(out); } - // TBD: OpExtension ... + for (auto it = extensions.cbegin(); it != extensions.cend(); ++it) { + Instruction extInst(0, 0, OpExtension); + extInst.addStringOperand(*it); + extInst.dump(out); + } dumpInstructions(out, imports); Instruction memInst(0, 0, OpMemoryModel); @@ -2331,10 +2375,10 @@ void Builder::dump(std::vector& out) const sourceInst.addImmediateOperand(sourceVersion); sourceInst.dump(out); } - for (int e = 0; e < (int)extensions.size(); ++e) { - Instruction extInst(0, 0, OpSourceExtension); - extInst.addStringOperand(extensions[e]); - extInst.dump(out); + for (int e = 0; e < (int)sourceExtensions.size(); ++e) { + Instruction sourceExtInst(0, 0, OpSourceExtension); + sourceExtInst.addStringOperand(sourceExtensions[e]); + sourceExtInst.dump(out); } dumpInstructions(out, names); dumpInstructions(out, lines); diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index c7e3bcda..0e8d9cae 100755 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -70,7 +70,8 @@ public: source = lang; sourceVersion = version; } - void addSourceExtension(const char* ext) { extensions.push_back(ext); } + void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); } + void addExtension(const char* ext) { extensions.insert(ext); } Id import(const char*); void setMemoryModel(spv::AddressingModel addr, spv::MemoryModel mem) { @@ -190,6 +191,9 @@ public: Id makeUint64Constant(unsigned long long u, bool specConstant = false) { return makeInt64Constant(makeUintType(64), u, specConstant); } Id makeFloatConstant(float f, bool specConstant = false); Id makeDoubleConstant(double d, bool specConstant = false); +#ifdef AMD_EXTENSIONS + Id makeFloat16Constant(float f16, bool specConstant = false); +#endif // Turn the array of constants into a proper spv constant of the requested type. Id makeCompositeConstant(Id type, std::vector& comps, bool specConst = false); @@ -209,7 +213,7 @@ public: // 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. @@ -466,7 +470,7 @@ public: // // 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 @@ -551,7 +555,8 @@ public: SourceLanguage source; int sourceVersion; - std::vector extensions; + std::set extensions; + std::vector sourceExtensions; AddressingModel addressModel; MemoryModel memoryModel; std::set capabilities; diff --git a/SPIRV/bitutils.h b/SPIRV/bitutils.h new file mode 100644 index 00000000..31288ab6 --- /dev/null +++ b/SPIRV/bitutils.h @@ -0,0 +1,81 @@ +// Copyright (c) 2015-2016 The Khronos Group Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef LIBSPIRV_UTIL_BITUTILS_H_ +#define LIBSPIRV_UTIL_BITUTILS_H_ + +#include +#include + +namespace spvutils { + +// Performs a bitwise copy of source to the destination type Dest. +template +Dest BitwiseCast(Src source) { + Dest dest; + static_assert(sizeof(source) == sizeof(dest), + "BitwiseCast: Source and destination must have the same size"); + std::memcpy(&dest, &source, sizeof(dest)); + return dest; +} + +// SetBits returns an integer of type with bits set +// for position through , counting from the least +// significant bit. In particular when Num == 0, no positions are set to 1. +// A static assert will be triggered if First + Num > sizeof(T) * 8, that is, +// a bit that will not fit in the underlying type is set. +template +struct SetBits { + static_assert(First < sizeof(T) * 8, + "Tried to set a bit that is shifted too far."); + const static T get = (T(1) << First) | SetBits::get; +}; + +template +struct SetBits { + const static T get = T(0); +}; + +// This is all compile-time so we can put our tests right here. +static_assert(SetBits::get == uint32_t(0x00000000), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0x00000001), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0x80000000), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0x00000006), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0xc0000000), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0x7FFFFFFF), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0xFFFFFFFF), + "SetBits failed"); +static_assert(SetBits::get == uint32_t(0xFFFF0000), + "SetBits failed"); + +static_assert(SetBits::get == uint64_t(0x0000000000000001LL), + "SetBits failed"); +static_assert(SetBits::get == uint64_t(0x8000000000000000LL), + "SetBits failed"); +static_assert(SetBits::get == uint64_t(0xc000000000000000LL), + "SetBits failed"); +static_assert(SetBits::get == uint64_t(0x0000000080000000LL), + "SetBits failed"); +static_assert(SetBits::get == uint64_t(0x00000000FFFF0000LL), + "SetBits failed"); + +} // namespace spvutils + +#endif // LIBSPIRV_UTIL_BITUTILS_H_ diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index 75688cb9..b1023b92 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -36,24 +36,33 @@ // Disassembler for SPIR-V. // -#include -#include -#include +#include +#include +#include #include #include #include #include -namespace spv { - // Include C-based headers that don't have a namespace - #include "GLSL.std.450.h" -} -const char* GlslStd450DebugNames[spv::GLSLstd450Count]; - #include "disassemble.h" #include "doc.h" namespace spv { + extern "C" { + // Include C-based headers that don't have a namespace + #include "GLSL.std.450.h" +#ifdef AMD_EXTENSIONS + #include "GLSL.ext.AMD.h" +#endif + } +} +const char* GlslStd450DebugNames[spv::GLSLstd450Count]; + +namespace spv { + +#ifdef AMD_EXTENSIONS +static const char* GLSLextAMDGetDebugNames(const char*, unsigned); +#endif static void Kill(std::ostream& out, const char* message) { @@ -64,6 +73,9 @@ static void Kill(std::ostream& out, const char* message) // used to identify the extended instruction library imported when printing enum ExtInstSet { GLSL450Inst, +#ifdef AMD_EXTENSIONS + GLSLextAMDInst, +#endif OpenCLExtInst, }; @@ -205,10 +217,12 @@ void SpirvStream::outputIndent() void SpirvStream::formatId(Id id, std::stringstream& idStream) { - if (id >= bound) - Kill(out, "Bad "); - 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 "); + idStream << id; if (idDescriptor[id].size() > 0) idStream << "(" << idDescriptor[id] << ")"; @@ -322,7 +336,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, 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"; @@ -446,14 +460,26 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, --numOperands; if (opCode == OpExtInst) { ExtInstSet extInstSet = GLSL450Inst; - if (0 == memcmp("OpenCL", (const char*)(idDescriptor[stream[word-2]].c_str()), 6)) { + const char* name = idDescriptor[stream[word - 2]].c_str(); + if (0 == memcmp("OpenCL", name, 6)) { extInstSet = OpenCLExtInst; +#ifdef AMD_EXTENSIONS + } else if (strcmp(spv::E_SPV_AMD_shader_ballot, name) == 0 || + strcmp(spv::E_SPV_AMD_shader_trinary_minmax, name) == 0 || + strcmp(spv::E_SPV_AMD_shader_explicit_vertex_parameter, name) == 0 || + strcmp(spv::E_SPV_AMD_gcn_shader, name) == 0) { + extInstSet = GLSLextAMDInst; +#endif } unsigned entrypoint = stream[word - 1]; if (extInstSet == GLSL450Inst) { if (entrypoint < GLSLstd450Count) { out << "(" << GlslStd450DebugNames[entrypoint] << ")"; } +#ifdef AMD_EXTENSIONS + } else if (extInstSet == GLSLextAMDInst) { + out << "(" << GLSLextAMDGetDebugNames(name, entrypoint) << ")"; +#endif } } break; @@ -561,6 +587,50 @@ static void GLSLstd450GetDebugNames(const char** names) names[GLSLstd450InterpolateAtOffset] = "InterpolateAtOffset"; } +#ifdef AMD_EXTENSIONS +static const char* GLSLextAMDGetDebugNames(const char* name, unsigned entrypoint) +{ + if (strcmp(name, spv::E_SPV_AMD_shader_ballot) == 0) { + switch (entrypoint) { + case SwizzleInvocationsAMD: return "SwizzleInvocationsAMD"; + case SwizzleInvocationsMaskedAMD: return "SwizzleInvocationsMaskedAMD"; + case WriteInvocationAMD: return "WriteInvocationAMD"; + case MbcntAMD: return "MbcntAMD"; + default: return "Bad"; + } + } else if (strcmp(name, spv::E_SPV_AMD_shader_trinary_minmax) == 0) { + switch (entrypoint) { + case FMin3AMD: return "FMin3AMD"; + case UMin3AMD: return "UMin3AMD"; + case SMin3AMD: return "SMin3AMD"; + case FMax3AMD: return "FMax3AMD"; + case UMax3AMD: return "UMax3AMD"; + case SMax3AMD: return "SMax3AMD"; + case FMid3AMD: return "FMid3AMD"; + case UMid3AMD: return "UMid3AMD"; + case SMid3AMD: return "SMid3AMD"; + default: return "Bad"; + } + } else if (strcmp(name, spv::E_SPV_AMD_shader_explicit_vertex_parameter) == 0) { + switch (entrypoint) { + case InterpolateAtVertexAMD: return "InterpolateAtVertexAMD"; + default: return "Bad"; + } + } + else if (strcmp(name, spv::E_SPV_AMD_gcn_shader) == 0) { + switch (entrypoint) { + case CubeFaceIndexAMD: return "CubeFaceIndexAMD"; + case CubeFaceCoordAMD: return "CubeFaceCoordAMD"; + case TimeAMD: return "TimeAMD"; + default: + break; + } + } + + return "Bad"; +} +#endif + void Disassemble(std::ostream& out, const std::vector& stream) { SpirvStream SpirvStream(out, stream); diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index fed3ec42..0e68c7ef 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,10 +41,19 @@ #include "doc.h" -#include -#include +#include +#include #include +namespace spv { + extern "C" { + // Include C-based headers that don't have a namespace +#ifdef AMD_EXTENSIONS + #include "GLSL.ext.AMD.h" +#endif + } +} + namespace spv { // @@ -243,6 +252,10 @@ const char* DecorationString(int decoration) case DecorationCeiling: default: return "Bad"; + +#ifdef AMD_EXTENSIONS + case 4999: return "ExplicitInterpAMD"; +#endif } } @@ -298,6 +311,26 @@ const char* BuiltInString(int builtIn) case BuiltInCeiling: default: return "Bad"; + + case 4416: return "SubgroupEqMaskKHR"; + case 4417: return "SubgroupGeMaskKHR"; + case 4418: return "SubgroupGtMaskKHR"; + case 4419: return "SubgroupLeMaskKHR"; + case 4420: return "SubgroupLtMaskKHR"; + + case 4424: return "BaseVertex"; + case 4425: return "BaseInstance"; + case 4426: return "DrawIndex"; + +#ifdef AMD_EXTENSIONS + case 4992: return "BaryCoordNoPerspAMD"; + case 4993: return "BaryCoordNoPerspCentroidAMD"; + case 4994: return "BaryCoordNoPerspSampleAMD"; + case 4995: return "BaryCoordSmoothAMD"; + case 4996: return "BaryCoordSmoothCentroidAMD"; + case 4997: return "BaryCoordSmoothSampleAMD"; + case 4998: return "BaryCoordPullModelAMD"; +#endif } } @@ -776,6 +809,9 @@ const char* CapabilityString(int info) case CapabilityCeiling: default: return "Bad"; + + case 4423: return "SubgroupBallotKHR"; + case 4427: return "DrawParameters"; } } @@ -1107,12 +1143,26 @@ const char* OpcodeString(int op) case OpcodeCeiling: default: return "Bad"; + + case 4421: return "OpSubgroupBallotKHR"; + case 4422: return "OpSubgroupFirstInvocationKHR"; + +#ifdef AMD_EXTENSIONS + case 5000: return "OpGroupIAddNonUniformAMD"; + case 5001: return "OpGroupFAddNonUniformAMD"; + case 5002: return "OpGroupFMinNonUniformAMD"; + case 5003: return "OpGroupUMinNonUniformAMD"; + case 5004: return "OpGroupSMinNonUniformAMD"; + case 5005: return "OpGroupFMaxNonUniformAMD"; + case 5006: return "OpGroupUMaxNonUniformAMD"; + case 5007: return "OpGroupSMaxNonUniformAMD"; +#endif } } // The set of objects that hold all the instruction/operand // parameterization information. -InstructionParameters InstructionDesc[OpcodeCeiling]; +InstructionParameters InstructionDesc[OpCodeMask + 1]; OperandParameters ExecutionModeOperands[ExecutionModeCeiling]; OperandParameters DecorationOperands[DecorationCeiling]; @@ -2703,6 +2753,52 @@ void Parameterize() InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'"); InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'"); InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'"); + + InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'"); + + InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'"); + +#ifdef AMD_EXTENSIONS + InstructionDesc[OpGroupIAddNonUniformAMD].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandId, "'X'"); + + InstructionDesc[OpGroupFAddNonUniformAMD].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandId, "'X'"); + + InstructionDesc[OpGroupUMinNonUniformAMD].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandId, "'X'"); + + InstructionDesc[OpGroupSMinNonUniformAMD].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupFMinNonUniformAMD].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupUMaxNonUniformAMD].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupSMaxNonUniformAMD].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupFMaxNonUniformAMD].capabilities.push_back(CapabilityGroups); + InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X"); +#endif } }; // end spv namespace diff --git a/SPIRV/doc.h b/SPIRV/doc.h index cf9e059b..743896ff 100644 --- a/SPIRV/doc.h +++ b/SPIRV/doc.h @@ -149,7 +149,7 @@ enum OperandClass { OperandMemorySemantics, OperandMemoryAccess, OperandScope, - OperandGroupOperation, + OperandGroupOperation, OperandKernelEnqueueFlags, OperandKernelProfilingInfo, OperandCapability, diff --git a/SPIRV/hex_float.h b/SPIRV/hex_float.h new file mode 100644 index 00000000..31b9f9ed --- /dev/null +++ b/SPIRV/hex_float.h @@ -0,0 +1,1078 @@ +// Copyright (c) 2015-2016 The Khronos Group Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef LIBSPIRV_UTIL_HEX_FLOAT_H_ +#define LIBSPIRV_UTIL_HEX_FLOAT_H_ + +#include +#include +#include +#include +#include +#include +#include + +#if defined(_MSC_VER) && _MSC_VER < 1700 +namespace std { +bool isnan(double f) +{ + return ::_isnan(f) != 0; +} +bool isinf(double f) +{ + return ::_finite(f) == 0; +} +} +#endif + +#include "bitutils.h" + +namespace spvutils { + +class Float16 { + public: + Float16(uint16_t v) : val(v) {} + Float16() {} + static bool isNan(const Float16& val) { + return ((val.val & 0x7C00) == 0x7C00) && ((val.val & 0x3FF) != 0); + } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(const Float16& val) { + return ((val.val & 0x7C00) == 0x7C00) && ((val.val & 0x3FF) == 0); + } + Float16(const Float16& other) { val = other.val; } + uint16_t get_value() const { return val; } + + // Returns the maximum normal value. + static Float16 max() { return Float16(0x7bff); } + // Returns the lowest normal value. + static Float16 lowest() { return Float16(0xfbff); } + + private: + uint16_t val; +}; + +// To specialize this type, you must override uint_type to define +// an unsigned integer that can fit your floating point type. +// You must also add a isNan function that returns true if +// a value is Nan. +template +struct FloatProxyTraits { + typedef void uint_type; +}; + +template <> +struct FloatProxyTraits { + typedef uint32_t uint_type; + static bool isNan(float f) { return std::isnan(f); } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(float f) { return std::isinf(f); } + // Returns the maximum normal value. + static float max() { return std::numeric_limits::max(); } + // Returns the lowest normal value. + static float lowest() { return std::numeric_limits::lowest(); } +}; + +template <> +struct FloatProxyTraits { + typedef uint64_t uint_type; + static bool isNan(double f) { return std::isnan(f); } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(double f) { return std::isinf(f); } + // Returns the maximum normal value. + static double max() { return std::numeric_limits::max(); } + // Returns the lowest normal value. + static double lowest() { return std::numeric_limits::lowest(); } +}; + +template <> +struct FloatProxyTraits { + typedef uint16_t uint_type; + static bool isNan(Float16 f) { return Float16::isNan(f); } + // Returns true if the given value is any kind of infinity. + static bool isInfinity(Float16 f) { return Float16::isInfinity(f); } + // Returns the maximum normal value. + static Float16 max() { return Float16::max(); } + // Returns the lowest normal value. + static Float16 lowest() { return Float16::lowest(); } +}; + +// Since copying a floating point number (especially if it is NaN) +// does not guarantee that bits are preserved, this class lets us +// store the type and use it as a float when necessary. +template +class FloatProxy { + public: + typedef typename FloatProxyTraits::uint_type uint_type; + + // Since this is to act similar to the normal floats, + // do not initialize the data by default. + FloatProxy() {} + + // Intentionally non-explicit. This is a proxy type so + // implicit conversions allow us to use it more transparently. + FloatProxy(T val) { data_ = BitwiseCast(val); } + + // Intentionally non-explicit. This is a proxy type so + // implicit conversions allow us to use it more transparently. + FloatProxy(uint_type val) { data_ = val; } + + // This is helpful to have and is guaranteed not to stomp bits. + FloatProxy operator-() const { + return static_cast(data_ ^ + (uint_type(0x1) << (sizeof(T) * 8 - 1))); + } + + // Returns the data as a floating point value. + T getAsFloat() const { return BitwiseCast(data_); } + + // Returns the raw data. + uint_type data() const { return data_; } + + // Returns true if the value represents any type of NaN. + bool isNan() { return FloatProxyTraits::isNan(getAsFloat()); } + // Returns true if the value represents any type of infinity. + bool isInfinity() { return FloatProxyTraits::isInfinity(getAsFloat()); } + + // Returns the maximum normal value. + static FloatProxy max() { + return FloatProxy(FloatProxyTraits::max()); + } + // Returns the lowest normal value. + static FloatProxy lowest() { + return FloatProxy(FloatProxyTraits::lowest()); + } + + private: + uint_type data_; +}; + +template +bool operator==(const FloatProxy& first, const FloatProxy& second) { + return first.data() == second.data(); +} + +// Reads a FloatProxy value as a normal float from a stream. +template +std::istream& operator>>(std::istream& is, FloatProxy& value) { + T float_val; + is >> float_val; + value = FloatProxy(float_val); + return is; +} + +// This is an example traits. It is not meant to be used in practice, but will +// be the default for any non-specialized type. +template +struct HexFloatTraits { + // Integer type that can store this hex-float. + typedef void uint_type; + // Signed integer type that can store this hex-float. + typedef void int_type; + // The numerical type that this HexFloat represents. + typedef void underlying_type; + // The type needed to construct the underlying type. + typedef void native_type; + // The number of bits that are actually relevant in the uint_type. + // This allows us to deal with, for example, 24-bit values in a 32-bit + // integer. + static const uint32_t num_used_bits = 0; + // Number of bits that represent the exponent. + static const uint32_t num_exponent_bits = 0; + // Number of bits that represent the fractional part. + static const uint32_t num_fraction_bits = 0; + // The bias of the exponent. (How much we need to subtract from the stored + // value to get the correct value.) + static const uint32_t exponent_bias = 0; +}; + +// Traits for IEEE float. +// 1 sign bit, 8 exponent bits, 23 fractional bits. +template <> +struct HexFloatTraits> { + typedef uint32_t uint_type; + typedef int32_t int_type; + typedef FloatProxy underlying_type; + typedef float native_type; + static const uint_type num_used_bits = 32; + static const uint_type num_exponent_bits = 8; + static const uint_type num_fraction_bits = 23; + static const uint_type exponent_bias = 127; +}; + +// Traits for IEEE double. +// 1 sign bit, 11 exponent bits, 52 fractional bits. +template <> +struct HexFloatTraits> { + typedef uint64_t uint_type; + typedef int64_t int_type; + typedef FloatProxy underlying_type; + typedef double native_type; + static const uint_type num_used_bits = 64; + static const uint_type num_exponent_bits = 11; + static const uint_type num_fraction_bits = 52; + static const uint_type exponent_bias = 1023; +}; + +// Traits for IEEE half. +// 1 sign bit, 5 exponent bits, 10 fractional bits. +template <> +struct HexFloatTraits> { + typedef uint16_t uint_type; + typedef int16_t int_type; + typedef uint16_t underlying_type; + typedef uint16_t native_type; + static const uint_type num_used_bits = 16; + static const uint_type num_exponent_bits = 5; + static const uint_type num_fraction_bits = 10; + static const uint_type exponent_bias = 15; +}; + +enum round_direction { + kRoundToZero, + kRoundToNearestEven, + kRoundToPositiveInfinity, + kRoundToNegativeInfinity +}; + +// Template class that houses a floating pointer number. +// It exposes a number of constants based on the provided traits to +// assist in interpreting the bits of the value. +template > +class HexFloat { + public: + typedef typename Traits::uint_type uint_type; + typedef typename Traits::int_type int_type; + typedef typename Traits::underlying_type underlying_type; + typedef typename Traits::native_type native_type; + + explicit HexFloat(T f) : value_(f) {} + + T value() const { return value_; } + void set_value(T f) { value_ = f; } + + // These are all written like this because it is convenient to have + // compile-time constants for all of these values. + + // Pass-through values to save typing. + static const uint32_t num_used_bits = Traits::num_used_bits; + static const uint32_t exponent_bias = Traits::exponent_bias; + static const uint32_t num_exponent_bits = Traits::num_exponent_bits; + static const uint32_t num_fraction_bits = Traits::num_fraction_bits; + + // Number of bits to shift left to set the highest relevant bit. + static const uint32_t top_bit_left_shift = num_used_bits - 1; + // How many nibbles (hex characters) the fractional part takes up. + static const uint32_t fraction_nibbles = (num_fraction_bits + 3) / 4; + // If the fractional part does not fit evenly into a hex character (4-bits) + // then we have to left-shift to get rid of leading 0s. This is the amount + // we have to shift (might be 0). + static const uint32_t num_overflow_bits = + fraction_nibbles * 4 - num_fraction_bits; + + // The representation of the fraction, not the actual bits. This + // includes the leading bit that is usually implicit. + static const uint_type fraction_represent_mask = + spvutils::SetBits::get; + + // The topmost bit in the nibble-aligned fraction. + static const uint_type fraction_top_bit = + uint_type(1) << (num_fraction_bits + num_overflow_bits - 1); + + // The least significant bit in the exponent, which is also the bit + // immediately to the left of the significand. + static const uint_type first_exponent_bit = uint_type(1) + << (num_fraction_bits); + + // The mask for the encoded fraction. It does not include the + // implicit bit. + static const uint_type fraction_encode_mask = + spvutils::SetBits::get; + + // The bit that is used as a sign. + static const uint_type sign_mask = uint_type(1) << top_bit_left_shift; + + // The bits that represent the exponent. + static const uint_type exponent_mask = + spvutils::SetBits::get; + + // How far left the exponent is shifted. + static const uint32_t exponent_left_shift = num_fraction_bits; + + // How far from the right edge the fraction is shifted. + static const uint32_t fraction_right_shift = + static_cast(sizeof(uint_type) * 8) - num_fraction_bits; + + // The maximum representable unbiased exponent. + static const int_type max_exponent = + (exponent_mask >> num_fraction_bits) - exponent_bias; + // The minimum representable exponent for normalized numbers. + static const int_type min_exponent = -static_cast(exponent_bias); + + // Returns the bits associated with the value. + uint_type getBits() const { return spvutils::BitwiseCast(value_); } + + // Returns the bits associated with the value, without the leading sign bit. + uint_type getUnsignedBits() const { + return static_cast(spvutils::BitwiseCast(value_) & + ~sign_mask); + } + + // Returns the bits associated with the exponent, shifted to start at the + // lsb of the type. + const uint_type getExponentBits() const { + return static_cast((getBits() & exponent_mask) >> + num_fraction_bits); + } + + // Returns the exponent in unbiased form. This is the exponent in the + // human-friendly form. + const int_type getUnbiasedExponent() const { + return static_cast(getExponentBits() - exponent_bias); + } + + // Returns just the significand bits from the value. + const uint_type getSignificandBits() const { + return getBits() & fraction_encode_mask; + } + + // If the number was normalized, returns the unbiased exponent. + // If the number was denormal, normalize the exponent first. + const int_type getUnbiasedNormalizedExponent() const { + if ((getBits() & ~sign_mask) == 0) { // special case if everything is 0 + return 0; + } + int_type exp = getUnbiasedExponent(); + if (exp == min_exponent) { // We are in denorm land. + uint_type significand_bits = getSignificandBits(); + while ((significand_bits & (first_exponent_bit >> 1)) == 0) { + significand_bits = static_cast(significand_bits << 1); + exp = static_cast(exp - 1); + } + significand_bits &= fraction_encode_mask; + } + return exp; + } + + // Returns the signficand after it has been normalized. + const uint_type getNormalizedSignificand() const { + int_type unbiased_exponent = getUnbiasedNormalizedExponent(); + uint_type significand = getSignificandBits(); + for (int_type i = unbiased_exponent; i <= min_exponent; ++i) { + significand = static_cast(significand << 1); + } + significand &= fraction_encode_mask; + return significand; + } + + // Returns true if this number represents a negative value. + bool isNegative() const { return (getBits() & sign_mask) != 0; } + + // Sets this HexFloat from the individual components. + // Note this assumes EVERY significand is normalized, and has an implicit + // leading one. This means that the only way that this method will set 0, + // is if you set a number so denormalized that it underflows. + // Do not use this method with raw bits extracted from a subnormal number, + // since subnormals do not have an implicit leading 1 in the significand. + // The significand is also expected to be in the + // lowest-most num_fraction_bits of the uint_type. + // The exponent is expected to be unbiased, meaning an exponent of + // 0 actually means 0. + // If underflow_round_up is set, then on underflow, if a number is non-0 + // and would underflow, we round up to the smallest denorm. + void setFromSignUnbiasedExponentAndNormalizedSignificand( + bool negative, int_type exponent, uint_type significand, + bool round_denorm_up) { + bool significand_is_zero = significand == 0; + + if (exponent <= min_exponent) { + // If this was denormalized, then we have to shift the bit on, meaning + // the significand is not zero. + significand_is_zero = false; + significand |= first_exponent_bit; + significand = static_cast(significand >> 1); + } + + while (exponent < min_exponent) { + significand = static_cast(significand >> 1); + ++exponent; + } + + if (exponent == min_exponent) { + if (significand == 0 && !significand_is_zero && round_denorm_up) { + significand = static_cast(0x1); + } + } + + uint_type new_value = 0; + if (negative) { + new_value = static_cast(new_value | sign_mask); + } + exponent = static_cast(exponent + exponent_bias); + assert(exponent >= 0); + + // put it all together + exponent = static_cast((exponent << exponent_left_shift) & + exponent_mask); + significand = static_cast(significand & fraction_encode_mask); + new_value = static_cast(new_value | (exponent | significand)); + value_ = BitwiseCast(new_value); + } + + // Increments the significand of this number by the given amount. + // If this would spill the significand into the implicit bit, + // carry is set to true and the significand is shifted to fit into + // the correct location, otherwise carry is set to false. + // All significands and to_increment are assumed to be within the bounds + // for a valid significand. + static uint_type incrementSignificand(uint_type significand, + uint_type to_increment, bool* carry) { + significand = static_cast(significand + to_increment); + *carry = false; + if (significand & first_exponent_bit) { + *carry = true; + // The implicit 1-bit will have carried, so we should zero-out the + // top bit and shift back. + significand = static_cast(significand & ~first_exponent_bit); + significand = static_cast(significand >> 1); + } + return significand; + } + + // These exist because MSVC throws warnings on negative right-shifts + // even if they are not going to be executed. Eg: + // constant_number < 0? 0: constant_number + // These convert the negative left-shifts into right shifts. + + template + uint_type negatable_left_shift(int_type N, uint_type val) + { + if(N >= 0) + return val << N; + + return val >> -N; + } + + template + uint_type negatable_right_shift(int_type N, uint_type val) + { + if(N >= 0) + return val >> N; + + return val << -N; + } + + // Returns the significand, rounded to fit in a significand in + // other_T. This is shifted so that the most significant + // bit of the rounded number lines up with the most significant bit + // of the returned significand. + template + typename other_T::uint_type getRoundedNormalizedSignificand( + round_direction dir, bool* carry_bit) { + typedef typename other_T::uint_type other_uint_type; + static const int_type num_throwaway_bits = + static_cast(num_fraction_bits) - + static_cast(other_T::num_fraction_bits); + + static const uint_type last_significant_bit = + (num_throwaway_bits < 0) + ? 0 + : negatable_left_shift(num_throwaway_bits, 1u); + static const uint_type first_rounded_bit = + (num_throwaway_bits < 1) + ? 0 + : negatable_left_shift(num_throwaway_bits - 1, 1u); + + static const uint_type throwaway_mask_bits = + num_throwaway_bits > 0 ? num_throwaway_bits : 0; + static const uint_type throwaway_mask = + spvutils::SetBits::get; + + *carry_bit = false; + other_uint_type out_val = 0; + uint_type significand = getNormalizedSignificand(); + // If we are up-casting, then we just have to shift to the right location. + if (num_throwaway_bits <= 0) { + out_val = static_cast(significand); + uint_type shift_amount = static_cast(-num_throwaway_bits); + out_val = static_cast(out_val << shift_amount); + return out_val; + } + + // If every non-representable bit is 0, then we don't have any casting to + // do. + if ((significand & throwaway_mask) == 0) { + return static_cast( + negatable_right_shift(num_throwaway_bits, significand)); + } + + bool round_away_from_zero = false; + // We actually have to narrow the significand here, so we have to follow the + // rounding rules. + switch (dir) { + case kRoundToZero: + break; + case kRoundToPositiveInfinity: + round_away_from_zero = !isNegative(); + break; + case kRoundToNegativeInfinity: + round_away_from_zero = isNegative(); + break; + case kRoundToNearestEven: + // Have to round down, round bit is 0 + if ((first_rounded_bit & significand) == 0) { + break; + } + if (((significand & throwaway_mask) & ~first_rounded_bit) != 0) { + // If any subsequent bit of the rounded portion is non-0 then we round + // up. + round_away_from_zero = true; + break; + } + // We are exactly half-way between 2 numbers, pick even. + if ((significand & last_significant_bit) != 0) { + // 1 for our last bit, round up. + round_away_from_zero = true; + break; + } + break; + } + + if (round_away_from_zero) { + return static_cast( + negatable_right_shift(num_throwaway_bits, incrementSignificand( + significand, last_significant_bit, carry_bit))); + } else { + return static_cast( + negatable_right_shift(num_throwaway_bits, significand)); + } + } + + // Casts this value to another HexFloat. If the cast is widening, + // then round_dir is ignored. If the cast is narrowing, then + // the result is rounded in the direction specified. + // This number will retain Nan and Inf values. + // It will also saturate to Inf if the number overflows, and + // underflow to (0 or min depending on rounding) if the number underflows. + template + void castTo(other_T& other, round_direction round_dir) { + other = other_T(static_cast(0)); + bool negate = isNegative(); + if (getUnsignedBits() == 0) { + if (negate) { + other.set_value(-other.value()); + } + return; + } + uint_type significand = getSignificandBits(); + bool carried = false; + typename other_T::uint_type rounded_significand = + getRoundedNormalizedSignificand(round_dir, &carried); + + int_type exponent = getUnbiasedExponent(); + if (exponent == min_exponent) { + // If we are denormal, normalize the exponent, so that we can encode + // easily. + exponent = static_cast(exponent + 1); + for (uint_type check_bit = first_exponent_bit >> 1; check_bit != 0; + check_bit = static_cast(check_bit >> 1)) { + exponent = static_cast(exponent - 1); + if (check_bit & significand) break; + } + } + + bool is_nan = + (getBits() & exponent_mask) == exponent_mask && significand != 0; + bool is_inf = + !is_nan && + ((exponent + carried) > static_cast(other_T::exponent_bias) || + (significand == 0 && (getBits() & exponent_mask) == exponent_mask)); + + // If we are Nan or Inf we should pass that through. + if (is_inf) { + other.set_value(BitwiseCast( + static_cast( + (negate ? other_T::sign_mask : 0) | other_T::exponent_mask))); + return; + } + if (is_nan) { + typename other_T::uint_type shifted_significand; + shifted_significand = static_cast( + negatable_left_shift( + static_cast(other_T::num_fraction_bits) - + static_cast(num_fraction_bits), significand)); + + // We are some sort of Nan. We try to keep the bit-pattern of the Nan + // as close as possible. If we had to shift off bits so we are 0, then we + // just set the last bit. + other.set_value(BitwiseCast( + static_cast( + (negate ? other_T::sign_mask : 0) | other_T::exponent_mask | + (shifted_significand == 0 ? 0x1 : shifted_significand)))); + return; + } + + bool round_underflow_up = + isNegative() ? round_dir == kRoundToNegativeInfinity + : round_dir == kRoundToPositiveInfinity; + typedef typename other_T::int_type other_int_type; + // setFromSignUnbiasedExponentAndNormalizedSignificand will + // zero out any underflowing value (but retain the sign). + other.setFromSignUnbiasedExponentAndNormalizedSignificand( + negate, static_cast(exponent), rounded_significand, + round_underflow_up); + return; + } + + private: + T value_; + + static_assert(num_used_bits == + Traits::num_exponent_bits + Traits::num_fraction_bits + 1, + "The number of bits do not fit"); + static_assert(sizeof(T) == sizeof(uint_type), "The type sizes do not match"); +}; + +// Returns 4 bits represented by the hex character. +inline uint8_t get_nibble_from_character(int character) { + const char* dec = "0123456789"; + const char* lower = "abcdef"; + const char* upper = "ABCDEF"; + const char* p = nullptr; + if ((p = strchr(dec, character))) { + return static_cast(p - dec); + } else if ((p = strchr(lower, character))) { + return static_cast(p - lower + 0xa); + } else if ((p = strchr(upper, character))) { + return static_cast(p - upper + 0xa); + } + + assert(false && "This was called with a non-hex character"); + return 0; +} + +// Outputs the given HexFloat to the stream. +template +std::ostream& operator<<(std::ostream& os, const HexFloat& value) { + typedef HexFloat HF; + typedef typename HF::uint_type uint_type; + typedef typename HF::int_type int_type; + + static_assert(HF::num_used_bits != 0, + "num_used_bits must be non-zero for a valid float"); + static_assert(HF::num_exponent_bits != 0, + "num_exponent_bits must be non-zero for a valid float"); + static_assert(HF::num_fraction_bits != 0, + "num_fractin_bits must be non-zero for a valid float"); + + const uint_type bits = spvutils::BitwiseCast(value.value()); + const char* const sign = (bits & HF::sign_mask) ? "-" : ""; + const uint_type exponent = static_cast( + (bits & HF::exponent_mask) >> HF::num_fraction_bits); + + uint_type fraction = static_cast((bits & HF::fraction_encode_mask) + << HF::num_overflow_bits); + + const bool is_zero = exponent == 0 && fraction == 0; + const bool is_denorm = exponent == 0 && !is_zero; + + // exponent contains the biased exponent we have to convert it back into + // the normal range. + int_type int_exponent = static_cast(exponent - HF::exponent_bias); + // If the number is all zeros, then we actually have to NOT shift the + // exponent. + int_exponent = is_zero ? 0 : int_exponent; + + // If we are denorm, then start shifting, and decreasing the exponent until + // our leading bit is 1. + + if (is_denorm) { + while ((fraction & HF::fraction_top_bit) == 0) { + fraction = static_cast(fraction << 1); + int_exponent = static_cast(int_exponent - 1); + } + // Since this is denormalized, we have to consume the leading 1 since it + // will end up being implicit. + fraction = static_cast(fraction << 1); // eat the leading 1 + fraction &= HF::fraction_represent_mask; + } + + uint_type fraction_nibbles = HF::fraction_nibbles; + // We do not have to display any trailing 0s, since this represents the + // fractional part. + while (fraction_nibbles > 0 && (fraction & 0xF) == 0) { + // Shift off any trailing values; + fraction = static_cast(fraction >> 4); + --fraction_nibbles; + } + + const auto saved_flags = os.flags(); + const auto saved_fill = os.fill(); + + os << sign << "0x" << (is_zero ? '0' : '1'); + if (fraction_nibbles) { + // Make sure to keep the leading 0s in place, since this is the fractional + // part. + os << "." << std::setw(static_cast(fraction_nibbles)) + << std::setfill('0') << std::hex << fraction; + } + os << "p" << std::dec << (int_exponent >= 0 ? "+" : "") << int_exponent; + + os.flags(saved_flags); + os.fill(saved_fill); + + return os; +} + +// Returns true if negate_value is true and the next character on the +// input stream is a plus or minus sign. In that case we also set the fail bit +// on the stream and set the value to the zero value for its type. +template +inline bool RejectParseDueToLeadingSign(std::istream& is, bool negate_value, + HexFloat& value) { + if (negate_value) { + auto next_char = is.peek(); + if (next_char == '-' || next_char == '+') { + // Fail the parse. Emulate standard behaviour by setting the value to + // the zero value, and set the fail bit on the stream. + value = HexFloat(typename HexFloat::uint_type(0)); + is.setstate(std::ios_base::failbit); + return true; + } + } + return false; +} + +// Parses a floating point number from the given stream and stores it into the +// value parameter. +// If negate_value is true then the number may not have a leading minus or +// plus, and if it successfully parses, then the number is negated before +// being stored into the value parameter. +// If the value cannot be correctly parsed or overflows the target floating +// point type, then set the fail bit on the stream. +// TODO(dneto): Promise C++11 standard behavior in how the value is set in +// the error case, but only after all target platforms implement it correctly. +// In particular, the Microsoft C++ runtime appears to be out of spec. +template +inline std::istream& ParseNormalFloat(std::istream& is, bool negate_value, + HexFloat& value) { + if (RejectParseDueToLeadingSign(is, negate_value, value)) { + return is; + } + T val; + is >> val; + if (negate_value) { + val = -val; + } + value.set_value(val); + // In the failure case, map -0.0 to 0.0. + if (is.fail() && value.getUnsignedBits() == 0u) { + value = HexFloat(typename HexFloat::uint_type(0)); + } + if (val.isInfinity()) { + // Fail the parse. Emulate standard behaviour by setting the value to + // the closest normal value, and set the fail bit on the stream. + value.set_value((value.isNegative() | negate_value) ? T::lowest() + : T::max()); + is.setstate(std::ios_base::failbit); + } + return is; +} + +// Specialization of ParseNormalFloat for FloatProxy values. +// This will parse the float as it were a 32-bit floating point number, +// and then round it down to fit into a Float16 value. +// The number is rounded towards zero. +// If negate_value is true then the number may not have a leading minus or +// plus, and if it successfully parses, then the number is negated before +// being stored into the value parameter. +// If the value cannot be correctly parsed or overflows the target floating +// point type, then set the fail bit on the stream. +// TODO(dneto): Promise C++11 standard behavior in how the value is set in +// the error case, but only after all target platforms implement it correctly. +// In particular, the Microsoft C++ runtime appears to be out of spec. +template <> +inline std::istream& +ParseNormalFloat, HexFloatTraits>>( + std::istream& is, bool negate_value, + HexFloat, HexFloatTraits>>& value) { + // First parse as a 32-bit float. + HexFloat> float_val(0.0f); + ParseNormalFloat(is, negate_value, float_val); + + // Then convert to 16-bit float, saturating at infinities, and + // rounding toward zero. + float_val.castTo(value, kRoundToZero); + + // Overflow on 16-bit behaves the same as for 32- and 64-bit: set the + // fail bit and set the lowest or highest value. + if (Float16::isInfinity(value.value().getAsFloat())) { + value.set_value(value.isNegative() ? Float16::lowest() : Float16::max()); + is.setstate(std::ios_base::failbit); + } + return is; +} + +// Reads a HexFloat from the given stream. +// If the float is not encoded as a hex-float then it will be parsed +// as a regular float. +// This may fail if your stream does not support at least one unget. +// Nan values can be encoded with "0x1.p+exponent_bias". +// This would normally overflow a float and round to +// infinity but this special pattern is the exact representation for a NaN, +// and therefore is actually encoded as the correct NaN. To encode inf, +// either 0x0p+exponent_bias can be specified or any exponent greater than +// exponent_bias. +// Examples using IEEE 32-bit float encoding. +// 0x1.0p+128 (+inf) +// -0x1.0p-128 (-inf) +// +// 0x1.1p+128 (+Nan) +// -0x1.1p+128 (-Nan) +// +// 0x1p+129 (+inf) +// -0x1p+129 (-inf) +template +std::istream& operator>>(std::istream& is, HexFloat& value) { + using HF = HexFloat; + using uint_type = typename HF::uint_type; + using int_type = typename HF::int_type; + + value.set_value(static_cast(0.f)); + + if (is.flags() & std::ios::skipws) { + // If the user wants to skip whitespace , then we should obey that. + while (std::isspace(is.peek())) { + is.get(); + } + } + + auto next_char = is.peek(); + bool negate_value = false; + + if (next_char != '-' && next_char != '0') { + return ParseNormalFloat(is, negate_value, value); + } + + if (next_char == '-') { + negate_value = true; + is.get(); + next_char = is.peek(); + } + + if (next_char == '0') { + is.get(); // We may have to unget this. + auto maybe_hex_start = is.peek(); + if (maybe_hex_start != 'x' && maybe_hex_start != 'X') { + is.unget(); + return ParseNormalFloat(is, negate_value, value); + } else { + is.get(); // Throw away the 'x'; + } + } else { + return ParseNormalFloat(is, negate_value, value); + } + + // This "looks" like a hex-float so treat it as one. + bool seen_p = false; + bool seen_dot = false; + uint_type fraction_index = 0; + + uint_type fraction = 0; + int_type exponent = HF::exponent_bias; + + // Strip off leading zeros so we don't have to special-case them later. + while ((next_char = is.peek()) == '0') { + is.get(); + } + + bool is_denorm = + true; // Assume denorm "representation" until we hear otherwise. + // NB: This does not mean the value is actually denorm, + // it just means that it was written 0. + bool bits_written = false; // Stays false until we write a bit. + while (!seen_p && !seen_dot) { + // Handle characters that are left of the fractional part. + if (next_char == '.') { + seen_dot = true; + } else if (next_char == 'p') { + seen_p = true; + } else if (::isxdigit(next_char)) { + // We know this is not denormalized since we have stripped all leading + // zeroes and we are not a ".". + is_denorm = false; + int number = get_nibble_from_character(next_char); + for (int i = 0; i < 4; ++i, number <<= 1) { + uint_type write_bit = (number & 0x8) ? 0x1 : 0x0; + if (bits_written) { + // If we are here the bits represented belong in the fractional + // part of the float, and we have to adjust the exponent accordingly. + fraction = static_cast( + fraction | + static_cast( + write_bit << (HF::top_bit_left_shift - fraction_index++))); + exponent = static_cast(exponent + 1); + } + bits_written |= write_bit != 0; + } + } else { + // We have not found our exponent yet, so we have to fail. + is.setstate(std::ios::failbit); + return is; + } + is.get(); + next_char = is.peek(); + } + bits_written = false; + while (seen_dot && !seen_p) { + // Handle only fractional parts now. + if (next_char == 'p') { + seen_p = true; + } else if (::isxdigit(next_char)) { + int number = get_nibble_from_character(next_char); + for (int i = 0; i < 4; ++i, number <<= 1) { + uint_type write_bit = (number & 0x8) ? 0x01 : 0x00; + bits_written |= write_bit != 0; + if (is_denorm && !bits_written) { + // Handle modifying the exponent here this way we can handle + // an arbitrary number of hex values without overflowing our + // integer. + exponent = static_cast(exponent - 1); + } else { + fraction = static_cast( + fraction | + static_cast( + write_bit << (HF::top_bit_left_shift - fraction_index++))); + } + } + } else { + // We still have not found our 'p' exponent yet, so this is not a valid + // hex-float. + is.setstate(std::ios::failbit); + return is; + } + is.get(); + next_char = is.peek(); + } + + bool seen_sign = false; + int8_t exponent_sign = 1; + int_type written_exponent = 0; + while (true) { + if ((next_char == '-' || next_char == '+')) { + if (seen_sign) { + is.setstate(std::ios::failbit); + return is; + } + seen_sign = true; + exponent_sign = (next_char == '-') ? -1 : 1; + } else if (::isdigit(next_char)) { + // Hex-floats express their exponent as decimal. + written_exponent = static_cast(written_exponent * 10); + written_exponent = + static_cast(written_exponent + (next_char - '0')); + } else { + break; + } + is.get(); + next_char = is.peek(); + } + + written_exponent = static_cast(written_exponent * exponent_sign); + exponent = static_cast(exponent + written_exponent); + + bool is_zero = is_denorm && (fraction == 0); + if (is_denorm && !is_zero) { + fraction = static_cast(fraction << 1); + exponent = static_cast(exponent - 1); + } else if (is_zero) { + exponent = 0; + } + + if (exponent <= 0 && !is_zero) { + fraction = static_cast(fraction >> 1); + fraction |= static_cast(1) << HF::top_bit_left_shift; + } + + fraction = (fraction >> HF::fraction_right_shift) & HF::fraction_encode_mask; + + const int_type max_exponent = + SetBits::get; + + // Handle actual denorm numbers + while (exponent < 0 && !is_zero) { + fraction = static_cast(fraction >> 1); + exponent = static_cast(exponent + 1); + + fraction &= HF::fraction_encode_mask; + if (fraction == 0) { + // We have underflowed our fraction. We should clamp to zero. + is_zero = true; + exponent = 0; + } + } + + // We have overflowed so we should be inf/-inf. + if (exponent > max_exponent) { + exponent = max_exponent; + fraction = 0; + } + + uint_type output_bits = static_cast( + static_cast(negate_value ? 1 : 0) << HF::top_bit_left_shift); + output_bits |= fraction; + + uint_type shifted_exponent = static_cast( + static_cast(exponent << HF::exponent_left_shift) & + HF::exponent_mask); + output_bits |= shifted_exponent; + + T output_float = spvutils::BitwiseCast(output_bits); + value.set_value(output_float); + + return is; +} + +// Writes a FloatProxy value to a stream. +// Zero and normal numbers are printed in the usual notation, but with +// enough digits to fully reproduce the value. Other values (subnormal, +// NaN, and infinity) are printed as a hex float. +template +std::ostream& operator<<(std::ostream& os, const FloatProxy& value) { + auto float_val = value.getAsFloat(); + switch (std::fpclassify(float_val)) { + case FP_ZERO: + case FP_NORMAL: { + auto saved_precision = os.precision(); + os.precision(std::numeric_limits::digits10); + os << float_val; + os.precision(saved_precision); + } break; + default: + os << HexFloat>(value); + break; + } + return os; +} + +template <> +inline std::ostream& operator<<(std::ostream& os, + const FloatProxy& value) { + os << HexFloat>(value); + return os; +} +} + +#endif // LIBSPIRV_UTIL_HEX_FLOAT_H_ diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 7447fcf7..bb3c3f4c 100755 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1,880 +1,925 @@ -// Copyright (c) 2014-2016 The Khronos Group Inc. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and/or associated documentation files (the "Materials"), -// to deal in the Materials without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Materials, and to permit persons to whom the -// Materials are furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Materials. -// -// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS -// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND -// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ -// -// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS -// IN THE MATERIALS. - -// This header is automatically generated by the same tool that creates -// the Binary Section of the SPIR-V specification. - -// Enumeration tokens for SPIR-V, in various styles: -// C, C++, C++11, JSON, Lua, Python -// -// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL -// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL -// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL -// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL -// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL'] -// -// Some tokens act like mask values, which can be OR'd together, -// while others are mutually exclusive. The mask-like ones have -// "Mask" in their name, and a parallel enum that has the shift -// amount (1 << x) for each corresponding enumerant. - -#ifndef spirv_HPP -#define spirv_HPP - -namespace spv { - -typedef unsigned int Id; - -#define SPV_VERSION 0x10000 -#define SPV_REVISION 3 - -static const unsigned int MagicNumber = 0x07230203; -static const unsigned int Version = 0x00010000; -static const unsigned int Revision = 3; -static const unsigned int OpCodeMask = 0xffff; -static const unsigned int WordCountShift = 16; - -enum SourceLanguage { - SourceLanguageUnknown = 0, - SourceLanguageESSL = 1, - SourceLanguageGLSL = 2, - SourceLanguageOpenCL_C = 3, - SourceLanguageOpenCL_CPP = 4, - SourceLanguageHLSL = 5, -}; - -enum ExecutionModel { - ExecutionModelVertex = 0, - ExecutionModelTessellationControl = 1, - ExecutionModelTessellationEvaluation = 2, - ExecutionModelGeometry = 3, - ExecutionModelFragment = 4, - ExecutionModelGLCompute = 5, - ExecutionModelKernel = 6, -}; - -enum AddressingModel { - AddressingModelLogical = 0, - AddressingModelPhysical32 = 1, - AddressingModelPhysical64 = 2, -}; - -enum MemoryModel { - MemoryModelSimple = 0, - MemoryModelGLSL450 = 1, - MemoryModelOpenCL = 2, -}; - -enum ExecutionMode { - ExecutionModeInvocations = 0, - ExecutionModeSpacingEqual = 1, - ExecutionModeSpacingFractionalEven = 2, - ExecutionModeSpacingFractionalOdd = 3, - ExecutionModeVertexOrderCw = 4, - ExecutionModeVertexOrderCcw = 5, - ExecutionModePixelCenterInteger = 6, - ExecutionModeOriginUpperLeft = 7, - ExecutionModeOriginLowerLeft = 8, - ExecutionModeEarlyFragmentTests = 9, - ExecutionModePointMode = 10, - ExecutionModeXfb = 11, - ExecutionModeDepthReplacing = 12, - ExecutionModeDepthGreater = 14, - ExecutionModeDepthLess = 15, - ExecutionModeDepthUnchanged = 16, - ExecutionModeLocalSize = 17, - ExecutionModeLocalSizeHint = 18, - ExecutionModeInputPoints = 19, - ExecutionModeInputLines = 20, - ExecutionModeInputLinesAdjacency = 21, - ExecutionModeTriangles = 22, - ExecutionModeInputTrianglesAdjacency = 23, - ExecutionModeQuads = 24, - ExecutionModeIsolines = 25, - ExecutionModeOutputVertices = 26, - ExecutionModeOutputPoints = 27, - ExecutionModeOutputLineStrip = 28, - ExecutionModeOutputTriangleStrip = 29, - ExecutionModeVecTypeHint = 30, - ExecutionModeContractionOff = 31, -}; - -enum StorageClass { - StorageClassUniformConstant = 0, - StorageClassInput = 1, - StorageClassUniform = 2, - StorageClassOutput = 3, - StorageClassWorkgroup = 4, - StorageClassCrossWorkgroup = 5, - StorageClassPrivate = 6, - StorageClassFunction = 7, - StorageClassGeneric = 8, - StorageClassPushConstant = 9, - StorageClassAtomicCounter = 10, - StorageClassImage = 11, -}; - -enum Dim { - Dim1D = 0, - Dim2D = 1, - Dim3D = 2, - DimCube = 3, - DimRect = 4, - DimBuffer = 5, - DimSubpassData = 6, -}; - -enum SamplerAddressingMode { - SamplerAddressingModeNone = 0, - SamplerAddressingModeClampToEdge = 1, - SamplerAddressingModeClamp = 2, - SamplerAddressingModeRepeat = 3, - SamplerAddressingModeRepeatMirrored = 4, -}; - -enum SamplerFilterMode { - SamplerFilterModeNearest = 0, - SamplerFilterModeLinear = 1, -}; - -enum ImageFormat { - ImageFormatUnknown = 0, - ImageFormatRgba32f = 1, - ImageFormatRgba16f = 2, - ImageFormatR32f = 3, - ImageFormatRgba8 = 4, - ImageFormatRgba8Snorm = 5, - ImageFormatRg32f = 6, - ImageFormatRg16f = 7, - ImageFormatR11fG11fB10f = 8, - ImageFormatR16f = 9, - ImageFormatRgba16 = 10, - ImageFormatRgb10A2 = 11, - ImageFormatRg16 = 12, - ImageFormatRg8 = 13, - ImageFormatR16 = 14, - ImageFormatR8 = 15, - ImageFormatRgba16Snorm = 16, - ImageFormatRg16Snorm = 17, - ImageFormatRg8Snorm = 18, - ImageFormatR16Snorm = 19, - ImageFormatR8Snorm = 20, - ImageFormatRgba32i = 21, - ImageFormatRgba16i = 22, - ImageFormatRgba8i = 23, - ImageFormatR32i = 24, - ImageFormatRg32i = 25, - ImageFormatRg16i = 26, - ImageFormatRg8i = 27, - ImageFormatR16i = 28, - ImageFormatR8i = 29, - ImageFormatRgba32ui = 30, - ImageFormatRgba16ui = 31, - ImageFormatRgba8ui = 32, - ImageFormatR32ui = 33, - ImageFormatRgb10a2ui = 34, - ImageFormatRg32ui = 35, - ImageFormatRg16ui = 36, - ImageFormatRg8ui = 37, - ImageFormatR16ui = 38, - ImageFormatR8ui = 39, -}; - -enum ImageChannelOrder { - ImageChannelOrderR = 0, - ImageChannelOrderA = 1, - ImageChannelOrderRG = 2, - ImageChannelOrderRA = 3, - ImageChannelOrderRGB = 4, - ImageChannelOrderRGBA = 5, - ImageChannelOrderBGRA = 6, - ImageChannelOrderARGB = 7, - ImageChannelOrderIntensity = 8, - ImageChannelOrderLuminance = 9, - ImageChannelOrderRx = 10, - ImageChannelOrderRGx = 11, - ImageChannelOrderRGBx = 12, - ImageChannelOrderDepth = 13, - ImageChannelOrderDepthStencil = 14, - ImageChannelOrdersRGB = 15, - ImageChannelOrdersRGBx = 16, - ImageChannelOrdersRGBA = 17, - ImageChannelOrdersBGRA = 18, -}; - -enum ImageChannelDataType { - ImageChannelDataTypeSnormInt8 = 0, - ImageChannelDataTypeSnormInt16 = 1, - ImageChannelDataTypeUnormInt8 = 2, - ImageChannelDataTypeUnormInt16 = 3, - ImageChannelDataTypeUnormShort565 = 4, - ImageChannelDataTypeUnormShort555 = 5, - ImageChannelDataTypeUnormInt101010 = 6, - ImageChannelDataTypeSignedInt8 = 7, - ImageChannelDataTypeSignedInt16 = 8, - ImageChannelDataTypeSignedInt32 = 9, - ImageChannelDataTypeUnsignedInt8 = 10, - ImageChannelDataTypeUnsignedInt16 = 11, - ImageChannelDataTypeUnsignedInt32 = 12, - ImageChannelDataTypeHalfFloat = 13, - ImageChannelDataTypeFloat = 14, - ImageChannelDataTypeUnormInt24 = 15, - ImageChannelDataTypeUnormInt101010_2 = 16, -}; - -enum ImageOperandsShift { - ImageOperandsBiasShift = 0, - ImageOperandsLodShift = 1, - ImageOperandsGradShift = 2, - ImageOperandsConstOffsetShift = 3, - ImageOperandsOffsetShift = 4, - ImageOperandsConstOffsetsShift = 5, - ImageOperandsSampleShift = 6, - ImageOperandsMinLodShift = 7, -}; - -enum ImageOperandsMask { - ImageOperandsMaskNone = 0, - ImageOperandsBiasMask = 0x00000001, - ImageOperandsLodMask = 0x00000002, - ImageOperandsGradMask = 0x00000004, - ImageOperandsConstOffsetMask = 0x00000008, - ImageOperandsOffsetMask = 0x00000010, - ImageOperandsConstOffsetsMask = 0x00000020, - ImageOperandsSampleMask = 0x00000040, - ImageOperandsMinLodMask = 0x00000080, -}; - -enum FPFastMathModeShift { - FPFastMathModeNotNaNShift = 0, - FPFastMathModeNotInfShift = 1, - FPFastMathModeNSZShift = 2, - FPFastMathModeAllowRecipShift = 3, - FPFastMathModeFastShift = 4, -}; - -enum FPFastMathModeMask { - FPFastMathModeMaskNone = 0, - FPFastMathModeNotNaNMask = 0x00000001, - FPFastMathModeNotInfMask = 0x00000002, - FPFastMathModeNSZMask = 0x00000004, - FPFastMathModeAllowRecipMask = 0x00000008, - FPFastMathModeFastMask = 0x00000010, -}; - -enum FPRoundingMode { - FPRoundingModeRTE = 0, - FPRoundingModeRTZ = 1, - FPRoundingModeRTP = 2, - FPRoundingModeRTN = 3, -}; - -enum LinkageType { - LinkageTypeExport = 0, - LinkageTypeImport = 1, -}; - -enum AccessQualifier { - AccessQualifierReadOnly = 0, - AccessQualifierWriteOnly = 1, - AccessQualifierReadWrite = 2, -}; - -enum FunctionParameterAttribute { - FunctionParameterAttributeZext = 0, - FunctionParameterAttributeSext = 1, - FunctionParameterAttributeByVal = 2, - FunctionParameterAttributeSret = 3, - FunctionParameterAttributeNoAlias = 4, - FunctionParameterAttributeNoCapture = 5, - FunctionParameterAttributeNoWrite = 6, - FunctionParameterAttributeNoReadWrite = 7, -}; - -enum Decoration { - DecorationRelaxedPrecision = 0, - DecorationSpecId = 1, - DecorationBlock = 2, - DecorationBufferBlock = 3, - DecorationRowMajor = 4, - DecorationColMajor = 5, - DecorationArrayStride = 6, - DecorationMatrixStride = 7, - DecorationGLSLShared = 8, - DecorationGLSLPacked = 9, - DecorationCPacked = 10, - DecorationBuiltIn = 11, - DecorationNoPerspective = 13, - DecorationFlat = 14, - DecorationPatch = 15, - DecorationCentroid = 16, - DecorationSample = 17, - DecorationInvariant = 18, - DecorationRestrict = 19, - DecorationAliased = 20, - DecorationVolatile = 21, - DecorationConstant = 22, - DecorationCoherent = 23, - DecorationNonWritable = 24, - DecorationNonReadable = 25, - DecorationUniform = 26, - DecorationSaturatedConversion = 28, - DecorationStream = 29, - DecorationLocation = 30, - DecorationComponent = 31, - DecorationIndex = 32, - DecorationBinding = 33, - DecorationDescriptorSet = 34, - DecorationOffset = 35, - DecorationXfbBuffer = 36, - DecorationXfbStride = 37, - DecorationFuncParamAttr = 38, - DecorationFPRoundingMode = 39, - DecorationFPFastMathMode = 40, - DecorationLinkageAttributes = 41, - DecorationNoContraction = 42, - DecorationInputAttachmentIndex = 43, - DecorationAlignment = 44, -}; - -enum BuiltIn { - BuiltInPosition = 0, - BuiltInPointSize = 1, - BuiltInClipDistance = 3, - BuiltInCullDistance = 4, - BuiltInVertexId = 5, - BuiltInInstanceId = 6, - BuiltInPrimitiveId = 7, - BuiltInInvocationId = 8, - BuiltInLayer = 9, - BuiltInViewportIndex = 10, - BuiltInTessLevelOuter = 11, - BuiltInTessLevelInner = 12, - BuiltInTessCoord = 13, - BuiltInPatchVertices = 14, - BuiltInFragCoord = 15, - BuiltInPointCoord = 16, - BuiltInFrontFacing = 17, - BuiltInSampleId = 18, - BuiltInSamplePosition = 19, - BuiltInSampleMask = 20, - BuiltInFragDepth = 22, - BuiltInHelperInvocation = 23, - BuiltInNumWorkgroups = 24, - BuiltInWorkgroupSize = 25, - BuiltInWorkgroupId = 26, - BuiltInLocalInvocationId = 27, - BuiltInGlobalInvocationId = 28, - BuiltInLocalInvocationIndex = 29, - BuiltInWorkDim = 30, - BuiltInGlobalSize = 31, - BuiltInEnqueuedWorkgroupSize = 32, - BuiltInGlobalOffset = 33, - BuiltInGlobalLinearId = 34, - BuiltInSubgroupSize = 36, - BuiltInSubgroupMaxSize = 37, - BuiltInNumSubgroups = 38, - BuiltInNumEnqueuedSubgroups = 39, - BuiltInSubgroupId = 40, - BuiltInSubgroupLocalInvocationId = 41, - BuiltInVertexIndex = 42, - BuiltInInstanceIndex = 43, -}; - -enum SelectionControlShift { - SelectionControlFlattenShift = 0, - SelectionControlDontFlattenShift = 1, -}; - -enum SelectionControlMask { - SelectionControlMaskNone = 0, - SelectionControlFlattenMask = 0x00000001, - SelectionControlDontFlattenMask = 0x00000002, -}; - -enum LoopControlShift { - LoopControlUnrollShift = 0, - LoopControlDontUnrollShift = 1, -}; - -enum LoopControlMask { - LoopControlMaskNone = 0, - LoopControlUnrollMask = 0x00000001, - LoopControlDontUnrollMask = 0x00000002, -}; - -enum FunctionControlShift { - FunctionControlInlineShift = 0, - FunctionControlDontInlineShift = 1, - FunctionControlPureShift = 2, - FunctionControlConstShift = 3, -}; - -enum FunctionControlMask { - FunctionControlMaskNone = 0, - FunctionControlInlineMask = 0x00000001, - FunctionControlDontInlineMask = 0x00000002, - FunctionControlPureMask = 0x00000004, - FunctionControlConstMask = 0x00000008, -}; - -enum MemorySemanticsShift { - MemorySemanticsAcquireShift = 1, - MemorySemanticsReleaseShift = 2, - MemorySemanticsAcquireReleaseShift = 3, - MemorySemanticsSequentiallyConsistentShift = 4, - MemorySemanticsUniformMemoryShift = 6, - MemorySemanticsSubgroupMemoryShift = 7, - MemorySemanticsWorkgroupMemoryShift = 8, - MemorySemanticsCrossWorkgroupMemoryShift = 9, - MemorySemanticsAtomicCounterMemoryShift = 10, - MemorySemanticsImageMemoryShift = 11, -}; - -enum MemorySemanticsMask { - MemorySemanticsMaskNone = 0, - MemorySemanticsAcquireMask = 0x00000002, - MemorySemanticsReleaseMask = 0x00000004, - MemorySemanticsAcquireReleaseMask = 0x00000008, - MemorySemanticsSequentiallyConsistentMask = 0x00000010, - MemorySemanticsUniformMemoryMask = 0x00000040, - MemorySemanticsSubgroupMemoryMask = 0x00000080, - MemorySemanticsWorkgroupMemoryMask = 0x00000100, - MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, - MemorySemanticsAtomicCounterMemoryMask = 0x00000400, - MemorySemanticsImageMemoryMask = 0x00000800, -}; - -enum MemoryAccessShift { - MemoryAccessVolatileShift = 0, - MemoryAccessAlignedShift = 1, - MemoryAccessNontemporalShift = 2, -}; - -enum MemoryAccessMask { - MemoryAccessMaskNone = 0, - MemoryAccessVolatileMask = 0x00000001, - MemoryAccessAlignedMask = 0x00000002, - MemoryAccessNontemporalMask = 0x00000004, -}; - -enum Scope { - ScopeCrossDevice = 0, - ScopeDevice = 1, - ScopeWorkgroup = 2, - ScopeSubgroup = 3, - ScopeInvocation = 4, -}; - -enum GroupOperation { - GroupOperationReduce = 0, - GroupOperationInclusiveScan = 1, - GroupOperationExclusiveScan = 2, -}; - -enum KernelEnqueueFlags { - KernelEnqueueFlagsNoWait = 0, - KernelEnqueueFlagsWaitKernel = 1, - KernelEnqueueFlagsWaitWorkGroup = 2, -}; - -enum KernelProfilingInfoShift { - KernelProfilingInfoCmdExecTimeShift = 0, -}; - -enum KernelProfilingInfoMask { - KernelProfilingInfoMaskNone = 0, - KernelProfilingInfoCmdExecTimeMask = 0x00000001, -}; - -enum Capability { - CapabilityMatrix = 0, - CapabilityShader = 1, - CapabilityGeometry = 2, - CapabilityTessellation = 3, - CapabilityAddresses = 4, - CapabilityLinkage = 5, - CapabilityKernel = 6, - CapabilityVector16 = 7, - CapabilityFloat16Buffer = 8, - CapabilityFloat16 = 9, - CapabilityFloat64 = 10, - CapabilityInt64 = 11, - CapabilityInt64Atomics = 12, - CapabilityImageBasic = 13, - CapabilityImageReadWrite = 14, - CapabilityImageMipmap = 15, - CapabilityPipes = 17, - CapabilityGroups = 18, - CapabilityDeviceEnqueue = 19, - CapabilityLiteralSampler = 20, - CapabilityAtomicStorage = 21, - CapabilityInt16 = 22, - CapabilityTessellationPointSize = 23, - CapabilityGeometryPointSize = 24, - CapabilityImageGatherExtended = 25, - CapabilityStorageImageMultisample = 27, - CapabilityUniformBufferArrayDynamicIndexing = 28, - CapabilitySampledImageArrayDynamicIndexing = 29, - CapabilityStorageBufferArrayDynamicIndexing = 30, - CapabilityStorageImageArrayDynamicIndexing = 31, - CapabilityClipDistance = 32, - CapabilityCullDistance = 33, - CapabilityImageCubeArray = 34, - CapabilitySampleRateShading = 35, - CapabilityImageRect = 36, - CapabilitySampledRect = 37, - CapabilityGenericPointer = 38, - CapabilityInt8 = 39, - CapabilityInputAttachment = 40, - CapabilitySparseResidency = 41, - CapabilityMinLod = 42, - CapabilitySampled1D = 43, - CapabilityImage1D = 44, - CapabilitySampledCubeArray = 45, - CapabilitySampledBuffer = 46, - CapabilityImageBuffer = 47, - CapabilityImageMSArray = 48, - CapabilityStorageImageExtendedFormats = 49, - CapabilityImageQuery = 50, - CapabilityDerivativeControl = 51, - CapabilityInterpolationFunction = 52, - CapabilityTransformFeedback = 53, - CapabilityGeometryStreams = 54, - CapabilityStorageImageReadWithoutFormat = 55, - CapabilityStorageImageWriteWithoutFormat = 56, - CapabilityMultiViewport = 57, -}; - -enum Op { - OpNop = 0, - OpUndef = 1, - OpSourceContinued = 2, - OpSource = 3, - OpSourceExtension = 4, - OpName = 5, - OpMemberName = 6, - OpString = 7, - OpLine = 8, - OpExtension = 10, - OpExtInstImport = 11, - OpExtInst = 12, - OpMemoryModel = 14, - OpEntryPoint = 15, - OpExecutionMode = 16, - OpCapability = 17, - OpTypeVoid = 19, - OpTypeBool = 20, - OpTypeInt = 21, - OpTypeFloat = 22, - OpTypeVector = 23, - OpTypeMatrix = 24, - OpTypeImage = 25, - OpTypeSampler = 26, - OpTypeSampledImage = 27, - OpTypeArray = 28, - OpTypeRuntimeArray = 29, - OpTypeStruct = 30, - OpTypeOpaque = 31, - OpTypePointer = 32, - OpTypeFunction = 33, - OpTypeEvent = 34, - OpTypeDeviceEvent = 35, - OpTypeReserveId = 36, - OpTypeQueue = 37, - OpTypePipe = 38, - OpTypeForwardPointer = 39, - OpConstantTrue = 41, - OpConstantFalse = 42, - OpConstant = 43, - OpConstantComposite = 44, - OpConstantSampler = 45, - OpConstantNull = 46, - OpSpecConstantTrue = 48, - OpSpecConstantFalse = 49, - OpSpecConstant = 50, - OpSpecConstantComposite = 51, - OpSpecConstantOp = 52, - OpFunction = 54, - OpFunctionParameter = 55, - OpFunctionEnd = 56, - OpFunctionCall = 57, - OpVariable = 59, - OpImageTexelPointer = 60, - OpLoad = 61, - OpStore = 62, - OpCopyMemory = 63, - OpCopyMemorySized = 64, - OpAccessChain = 65, - OpInBoundsAccessChain = 66, - OpPtrAccessChain = 67, - OpArrayLength = 68, - OpGenericPtrMemSemantics = 69, - OpInBoundsPtrAccessChain = 70, - OpDecorate = 71, - OpMemberDecorate = 72, - OpDecorationGroup = 73, - OpGroupDecorate = 74, - OpGroupMemberDecorate = 75, - OpVectorExtractDynamic = 77, - OpVectorInsertDynamic = 78, - OpVectorShuffle = 79, - OpCompositeConstruct = 80, - OpCompositeExtract = 81, - OpCompositeInsert = 82, - OpCopyObject = 83, - OpTranspose = 84, - OpSampledImage = 86, - OpImageSampleImplicitLod = 87, - OpImageSampleExplicitLod = 88, - OpImageSampleDrefImplicitLod = 89, - OpImageSampleDrefExplicitLod = 90, - OpImageSampleProjImplicitLod = 91, - OpImageSampleProjExplicitLod = 92, - OpImageSampleProjDrefImplicitLod = 93, - OpImageSampleProjDrefExplicitLod = 94, - OpImageFetch = 95, - OpImageGather = 96, - OpImageDrefGather = 97, - OpImageRead = 98, - OpImageWrite = 99, - OpImage = 100, - OpImageQueryFormat = 101, - OpImageQueryOrder = 102, - OpImageQuerySizeLod = 103, - OpImageQuerySize = 104, - OpImageQueryLod = 105, - OpImageQueryLevels = 106, - OpImageQuerySamples = 107, - OpConvertFToU = 109, - OpConvertFToS = 110, - OpConvertSToF = 111, - OpConvertUToF = 112, - OpUConvert = 113, - OpSConvert = 114, - OpFConvert = 115, - OpQuantizeToF16 = 116, - OpConvertPtrToU = 117, - OpSatConvertSToU = 118, - OpSatConvertUToS = 119, - OpConvertUToPtr = 120, - OpPtrCastToGeneric = 121, - OpGenericCastToPtr = 122, - OpGenericCastToPtrExplicit = 123, - OpBitcast = 124, - OpSNegate = 126, - OpFNegate = 127, - OpIAdd = 128, - OpFAdd = 129, - OpISub = 130, - OpFSub = 131, - OpIMul = 132, - OpFMul = 133, - OpUDiv = 134, - OpSDiv = 135, - OpFDiv = 136, - OpUMod = 137, - OpSRem = 138, - OpSMod = 139, - OpFRem = 140, - OpFMod = 141, - OpVectorTimesScalar = 142, - OpMatrixTimesScalar = 143, - OpVectorTimesMatrix = 144, - OpMatrixTimesVector = 145, - OpMatrixTimesMatrix = 146, - OpOuterProduct = 147, - OpDot = 148, - OpIAddCarry = 149, - OpISubBorrow = 150, - OpUMulExtended = 151, - OpSMulExtended = 152, - OpAny = 154, - OpAll = 155, - OpIsNan = 156, - OpIsInf = 157, - OpIsFinite = 158, - OpIsNormal = 159, - OpSignBitSet = 160, - OpLessOrGreater = 161, - OpOrdered = 162, - OpUnordered = 163, - OpLogicalEqual = 164, - OpLogicalNotEqual = 165, - OpLogicalOr = 166, - OpLogicalAnd = 167, - OpLogicalNot = 168, - OpSelect = 169, - OpIEqual = 170, - OpINotEqual = 171, - OpUGreaterThan = 172, - OpSGreaterThan = 173, - OpUGreaterThanEqual = 174, - OpSGreaterThanEqual = 175, - OpULessThan = 176, - OpSLessThan = 177, - OpULessThanEqual = 178, - OpSLessThanEqual = 179, - OpFOrdEqual = 180, - OpFUnordEqual = 181, - OpFOrdNotEqual = 182, - OpFUnordNotEqual = 183, - OpFOrdLessThan = 184, - OpFUnordLessThan = 185, - OpFOrdGreaterThan = 186, - OpFUnordGreaterThan = 187, - OpFOrdLessThanEqual = 188, - OpFUnordLessThanEqual = 189, - OpFOrdGreaterThanEqual = 190, - OpFUnordGreaterThanEqual = 191, - OpShiftRightLogical = 194, - OpShiftRightArithmetic = 195, - OpShiftLeftLogical = 196, - OpBitwiseOr = 197, - OpBitwiseXor = 198, - OpBitwiseAnd = 199, - OpNot = 200, - OpBitFieldInsert = 201, - OpBitFieldSExtract = 202, - OpBitFieldUExtract = 203, - OpBitReverse = 204, - OpBitCount = 205, - OpDPdx = 207, - OpDPdy = 208, - OpFwidth = 209, - OpDPdxFine = 210, - OpDPdyFine = 211, - OpFwidthFine = 212, - OpDPdxCoarse = 213, - OpDPdyCoarse = 214, - OpFwidthCoarse = 215, - OpEmitVertex = 218, - OpEndPrimitive = 219, - OpEmitStreamVertex = 220, - OpEndStreamPrimitive = 221, - OpControlBarrier = 224, - OpMemoryBarrier = 225, - OpAtomicLoad = 227, - OpAtomicStore = 228, - OpAtomicExchange = 229, - OpAtomicCompareExchange = 230, - OpAtomicCompareExchangeWeak = 231, - OpAtomicIIncrement = 232, - OpAtomicIDecrement = 233, - OpAtomicIAdd = 234, - OpAtomicISub = 235, - OpAtomicSMin = 236, - OpAtomicUMin = 237, - OpAtomicSMax = 238, - OpAtomicUMax = 239, - OpAtomicAnd = 240, - OpAtomicOr = 241, - OpAtomicXor = 242, - OpPhi = 245, - OpLoopMerge = 246, - OpSelectionMerge = 247, - OpLabel = 248, - OpBranch = 249, - OpBranchConditional = 250, - OpSwitch = 251, - OpKill = 252, - OpReturn = 253, - OpReturnValue = 254, - OpUnreachable = 255, - OpLifetimeStart = 256, - OpLifetimeStop = 257, - OpGroupAsyncCopy = 259, - OpGroupWaitEvents = 260, - OpGroupAll = 261, - OpGroupAny = 262, - OpGroupBroadcast = 263, - OpGroupIAdd = 264, - OpGroupFAdd = 265, - OpGroupFMin = 266, - OpGroupUMin = 267, - OpGroupSMin = 268, - OpGroupFMax = 269, - OpGroupUMax = 270, - OpGroupSMax = 271, - OpReadPipe = 274, - OpWritePipe = 275, - OpReservedReadPipe = 276, - OpReservedWritePipe = 277, - OpReserveReadPipePackets = 278, - OpReserveWritePipePackets = 279, - OpCommitReadPipe = 280, - OpCommitWritePipe = 281, - OpIsValidReserveId = 282, - OpGetNumPipePackets = 283, - OpGetMaxPipePackets = 284, - OpGroupReserveReadPipePackets = 285, - OpGroupReserveWritePipePackets = 286, - OpGroupCommitReadPipe = 287, - OpGroupCommitWritePipe = 288, - OpEnqueueMarker = 291, - OpEnqueueKernel = 292, - OpGetKernelNDrangeSubGroupCount = 293, - OpGetKernelNDrangeMaxSubGroupSize = 294, - OpGetKernelWorkGroupSize = 295, - OpGetKernelPreferredWorkGroupSizeMultiple = 296, - OpRetainEvent = 297, - OpReleaseEvent = 298, - OpCreateUserEvent = 299, - OpIsValidEvent = 300, - OpSetUserEventStatus = 301, - OpCaptureEventProfilingInfo = 302, - OpGetDefaultQueue = 303, - OpBuildNDRange = 304, - OpImageSparseSampleImplicitLod = 305, - OpImageSparseSampleExplicitLod = 306, - OpImageSparseSampleDrefImplicitLod = 307, - OpImageSparseSampleDrefExplicitLod = 308, - OpImageSparseSampleProjImplicitLod = 309, - OpImageSparseSampleProjExplicitLod = 310, - OpImageSparseSampleProjDrefImplicitLod = 311, - OpImageSparseSampleProjDrefExplicitLod = 312, - OpImageSparseFetch = 313, - OpImageSparseGather = 314, - OpImageSparseDrefGather = 315, - OpImageSparseTexelsResident = 316, - OpNoLine = 317, - OpAtomicFlagTestAndSet = 318, - OpAtomicFlagClear = 319, - OpImageSparseRead = 320, -}; - -// Overload operator| for mask bit combining - -inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } -inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } -inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } -inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } -inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } -inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } -inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } -inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } - -} // end namespace spv - -#endif // #ifndef spirv_HPP +// Copyright (c) 2014-2016 The Khronos Group Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and/or associated documentation files (the "Materials"), +// to deal in the Materials without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Materials, and to permit persons to whom the +// Materials are furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Materials. +// +// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS +// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND +// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +// +// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS +// IN THE MATERIALS. + +// This header is automatically generated by the same tool that creates +// the Binary Section of the SPIR-V specification. + +// Enumeration tokens for SPIR-V, in various styles: +// C, C++, C++11, JSON, Lua, Python +// +// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL +// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL +// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL +// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL +// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL'] +// +// Some tokens act like mask values, which can be OR'd together, +// while others are mutually exclusive. The mask-like ones have +// "Mask" in their name, and a parallel enum that has the shift +// amount (1 << x) for each corresponding enumerant. + +#ifndef spirv_HPP +#define spirv_HPP + +namespace spv { + +typedef unsigned int Id; + +#define SPV_VERSION 0x10000 +#define SPV_REVISION 8 + +static const unsigned int MagicNumber = 0x07230203; +static const unsigned int Version = 0x00010000; +static const unsigned int Revision = 8; +static const unsigned int OpCodeMask = 0xffff; +static const unsigned int WordCountShift = 16; + +enum SourceLanguage { + SourceLanguageUnknown = 0, + SourceLanguageESSL = 1, + SourceLanguageGLSL = 2, + SourceLanguageOpenCL_C = 3, + SourceLanguageOpenCL_CPP = 4, + SourceLanguageHLSL = 5, + SourceLanguageMax = 0x7fffffff, +}; + +enum ExecutionModel { + ExecutionModelVertex = 0, + ExecutionModelTessellationControl = 1, + ExecutionModelTessellationEvaluation = 2, + ExecutionModelGeometry = 3, + ExecutionModelFragment = 4, + ExecutionModelGLCompute = 5, + ExecutionModelKernel = 6, + ExecutionModelMax = 0x7fffffff, +}; + +enum AddressingModel { + AddressingModelLogical = 0, + AddressingModelPhysical32 = 1, + AddressingModelPhysical64 = 2, + AddressingModelMax = 0x7fffffff, +}; + +enum MemoryModel { + MemoryModelSimple = 0, + MemoryModelGLSL450 = 1, + MemoryModelOpenCL = 2, + MemoryModelMax = 0x7fffffff, +}; + +enum ExecutionMode { + ExecutionModeInvocations = 0, + ExecutionModeSpacingEqual = 1, + ExecutionModeSpacingFractionalEven = 2, + ExecutionModeSpacingFractionalOdd = 3, + ExecutionModeVertexOrderCw = 4, + ExecutionModeVertexOrderCcw = 5, + ExecutionModePixelCenterInteger = 6, + ExecutionModeOriginUpperLeft = 7, + ExecutionModeOriginLowerLeft = 8, + ExecutionModeEarlyFragmentTests = 9, + ExecutionModePointMode = 10, + ExecutionModeXfb = 11, + ExecutionModeDepthReplacing = 12, + ExecutionModeDepthGreater = 14, + ExecutionModeDepthLess = 15, + ExecutionModeDepthUnchanged = 16, + ExecutionModeLocalSize = 17, + ExecutionModeLocalSizeHint = 18, + ExecutionModeInputPoints = 19, + ExecutionModeInputLines = 20, + ExecutionModeInputLinesAdjacency = 21, + ExecutionModeTriangles = 22, + ExecutionModeInputTrianglesAdjacency = 23, + ExecutionModeQuads = 24, + ExecutionModeIsolines = 25, + ExecutionModeOutputVertices = 26, + ExecutionModeOutputPoints = 27, + ExecutionModeOutputLineStrip = 28, + ExecutionModeOutputTriangleStrip = 29, + ExecutionModeVecTypeHint = 30, + ExecutionModeContractionOff = 31, + ExecutionModeMax = 0x7fffffff, +}; + +enum StorageClass { + StorageClassUniformConstant = 0, + StorageClassInput = 1, + StorageClassUniform = 2, + StorageClassOutput = 3, + StorageClassWorkgroup = 4, + StorageClassCrossWorkgroup = 5, + StorageClassPrivate = 6, + StorageClassFunction = 7, + StorageClassGeneric = 8, + StorageClassPushConstant = 9, + StorageClassAtomicCounter = 10, + StorageClassImage = 11, + StorageClassMax = 0x7fffffff, +}; + +enum Dim { + Dim1D = 0, + Dim2D = 1, + Dim3D = 2, + DimCube = 3, + DimRect = 4, + DimBuffer = 5, + DimSubpassData = 6, + DimMax = 0x7fffffff, +}; + +enum SamplerAddressingMode { + SamplerAddressingModeNone = 0, + SamplerAddressingModeClampToEdge = 1, + SamplerAddressingModeClamp = 2, + SamplerAddressingModeRepeat = 3, + SamplerAddressingModeRepeatMirrored = 4, + SamplerAddressingModeMax = 0x7fffffff, +}; + +enum SamplerFilterMode { + SamplerFilterModeNearest = 0, + SamplerFilterModeLinear = 1, + SamplerFilterModeMax = 0x7fffffff, +}; + +enum ImageFormat { + ImageFormatUnknown = 0, + ImageFormatRgba32f = 1, + ImageFormatRgba16f = 2, + ImageFormatR32f = 3, + ImageFormatRgba8 = 4, + ImageFormatRgba8Snorm = 5, + ImageFormatRg32f = 6, + ImageFormatRg16f = 7, + ImageFormatR11fG11fB10f = 8, + ImageFormatR16f = 9, + ImageFormatRgba16 = 10, + ImageFormatRgb10A2 = 11, + ImageFormatRg16 = 12, + ImageFormatRg8 = 13, + ImageFormatR16 = 14, + ImageFormatR8 = 15, + ImageFormatRgba16Snorm = 16, + ImageFormatRg16Snorm = 17, + ImageFormatRg8Snorm = 18, + ImageFormatR16Snorm = 19, + ImageFormatR8Snorm = 20, + ImageFormatRgba32i = 21, + ImageFormatRgba16i = 22, + ImageFormatRgba8i = 23, + ImageFormatR32i = 24, + ImageFormatRg32i = 25, + ImageFormatRg16i = 26, + ImageFormatRg8i = 27, + ImageFormatR16i = 28, + ImageFormatR8i = 29, + ImageFormatRgba32ui = 30, + ImageFormatRgba16ui = 31, + ImageFormatRgba8ui = 32, + ImageFormatR32ui = 33, + ImageFormatRgb10a2ui = 34, + ImageFormatRg32ui = 35, + ImageFormatRg16ui = 36, + ImageFormatRg8ui = 37, + ImageFormatR16ui = 38, + ImageFormatR8ui = 39, + ImageFormatMax = 0x7fffffff, +}; + +enum ImageChannelOrder { + ImageChannelOrderR = 0, + ImageChannelOrderA = 1, + ImageChannelOrderRG = 2, + ImageChannelOrderRA = 3, + ImageChannelOrderRGB = 4, + ImageChannelOrderRGBA = 5, + ImageChannelOrderBGRA = 6, + ImageChannelOrderARGB = 7, + ImageChannelOrderIntensity = 8, + ImageChannelOrderLuminance = 9, + ImageChannelOrderRx = 10, + ImageChannelOrderRGx = 11, + ImageChannelOrderRGBx = 12, + ImageChannelOrderDepth = 13, + ImageChannelOrderDepthStencil = 14, + ImageChannelOrdersRGB = 15, + ImageChannelOrdersRGBx = 16, + ImageChannelOrdersRGBA = 17, + ImageChannelOrdersBGRA = 18, + ImageChannelOrderABGR = 19, + ImageChannelOrderMax = 0x7fffffff, +}; + +enum ImageChannelDataType { + ImageChannelDataTypeSnormInt8 = 0, + ImageChannelDataTypeSnormInt16 = 1, + ImageChannelDataTypeUnormInt8 = 2, + ImageChannelDataTypeUnormInt16 = 3, + ImageChannelDataTypeUnormShort565 = 4, + ImageChannelDataTypeUnormShort555 = 5, + ImageChannelDataTypeUnormInt101010 = 6, + ImageChannelDataTypeSignedInt8 = 7, + ImageChannelDataTypeSignedInt16 = 8, + ImageChannelDataTypeSignedInt32 = 9, + ImageChannelDataTypeUnsignedInt8 = 10, + ImageChannelDataTypeUnsignedInt16 = 11, + ImageChannelDataTypeUnsignedInt32 = 12, + ImageChannelDataTypeHalfFloat = 13, + ImageChannelDataTypeFloat = 14, + ImageChannelDataTypeUnormInt24 = 15, + ImageChannelDataTypeUnormInt101010_2 = 16, + ImageChannelDataTypeMax = 0x7fffffff, +}; + +enum ImageOperandsShift { + ImageOperandsBiasShift = 0, + ImageOperandsLodShift = 1, + ImageOperandsGradShift = 2, + ImageOperandsConstOffsetShift = 3, + ImageOperandsOffsetShift = 4, + ImageOperandsConstOffsetsShift = 5, + ImageOperandsSampleShift = 6, + ImageOperandsMinLodShift = 7, + ImageOperandsMax = 0x7fffffff, +}; + +enum ImageOperandsMask { + ImageOperandsMaskNone = 0, + ImageOperandsBiasMask = 0x00000001, + ImageOperandsLodMask = 0x00000002, + ImageOperandsGradMask = 0x00000004, + ImageOperandsConstOffsetMask = 0x00000008, + ImageOperandsOffsetMask = 0x00000010, + ImageOperandsConstOffsetsMask = 0x00000020, + ImageOperandsSampleMask = 0x00000040, + ImageOperandsMinLodMask = 0x00000080, +}; + +enum FPFastMathModeShift { + FPFastMathModeNotNaNShift = 0, + FPFastMathModeNotInfShift = 1, + FPFastMathModeNSZShift = 2, + FPFastMathModeAllowRecipShift = 3, + FPFastMathModeFastShift = 4, + FPFastMathModeMax = 0x7fffffff, +}; + +enum FPFastMathModeMask { + FPFastMathModeMaskNone = 0, + FPFastMathModeNotNaNMask = 0x00000001, + FPFastMathModeNotInfMask = 0x00000002, + FPFastMathModeNSZMask = 0x00000004, + FPFastMathModeAllowRecipMask = 0x00000008, + FPFastMathModeFastMask = 0x00000010, +}; + +enum FPRoundingMode { + FPRoundingModeRTE = 0, + FPRoundingModeRTZ = 1, + FPRoundingModeRTP = 2, + FPRoundingModeRTN = 3, + FPRoundingModeMax = 0x7fffffff, +}; + +enum LinkageType { + LinkageTypeExport = 0, + LinkageTypeImport = 1, + LinkageTypeMax = 0x7fffffff, +}; + +enum AccessQualifier { + AccessQualifierReadOnly = 0, + AccessQualifierWriteOnly = 1, + AccessQualifierReadWrite = 2, + AccessQualifierMax = 0x7fffffff, +}; + +enum FunctionParameterAttribute { + FunctionParameterAttributeZext = 0, + FunctionParameterAttributeSext = 1, + FunctionParameterAttributeByVal = 2, + FunctionParameterAttributeSret = 3, + FunctionParameterAttributeNoAlias = 4, + FunctionParameterAttributeNoCapture = 5, + FunctionParameterAttributeNoWrite = 6, + FunctionParameterAttributeNoReadWrite = 7, + FunctionParameterAttributeMax = 0x7fffffff, +}; + +enum Decoration { + DecorationRelaxedPrecision = 0, + DecorationSpecId = 1, + DecorationBlock = 2, + DecorationBufferBlock = 3, + DecorationRowMajor = 4, + DecorationColMajor = 5, + DecorationArrayStride = 6, + DecorationMatrixStride = 7, + DecorationGLSLShared = 8, + DecorationGLSLPacked = 9, + DecorationCPacked = 10, + DecorationBuiltIn = 11, + DecorationNoPerspective = 13, + DecorationFlat = 14, + DecorationPatch = 15, + DecorationCentroid = 16, + DecorationSample = 17, + DecorationInvariant = 18, + DecorationRestrict = 19, + DecorationAliased = 20, + DecorationVolatile = 21, + DecorationConstant = 22, + DecorationCoherent = 23, + DecorationNonWritable = 24, + DecorationNonReadable = 25, + DecorationUniform = 26, + DecorationSaturatedConversion = 28, + DecorationStream = 29, + DecorationLocation = 30, + DecorationComponent = 31, + DecorationIndex = 32, + DecorationBinding = 33, + DecorationDescriptorSet = 34, + DecorationOffset = 35, + DecorationXfbBuffer = 36, + DecorationXfbStride = 37, + DecorationFuncParamAttr = 38, + DecorationFPRoundingMode = 39, + DecorationFPFastMathMode = 40, + DecorationLinkageAttributes = 41, + DecorationNoContraction = 42, + DecorationInputAttachmentIndex = 43, + DecorationAlignment = 44, + DecorationMax = 0x7fffffff, +}; + +enum BuiltIn { + BuiltInPosition = 0, + BuiltInPointSize = 1, + BuiltInClipDistance = 3, + BuiltInCullDistance = 4, + BuiltInVertexId = 5, + BuiltInInstanceId = 6, + BuiltInPrimitiveId = 7, + BuiltInInvocationId = 8, + BuiltInLayer = 9, + BuiltInViewportIndex = 10, + BuiltInTessLevelOuter = 11, + BuiltInTessLevelInner = 12, + BuiltInTessCoord = 13, + BuiltInPatchVertices = 14, + BuiltInFragCoord = 15, + BuiltInPointCoord = 16, + BuiltInFrontFacing = 17, + BuiltInSampleId = 18, + BuiltInSamplePosition = 19, + BuiltInSampleMask = 20, + BuiltInFragDepth = 22, + BuiltInHelperInvocation = 23, + BuiltInNumWorkgroups = 24, + BuiltInWorkgroupSize = 25, + BuiltInWorkgroupId = 26, + BuiltInLocalInvocationId = 27, + BuiltInGlobalInvocationId = 28, + BuiltInLocalInvocationIndex = 29, + BuiltInWorkDim = 30, + BuiltInGlobalSize = 31, + BuiltInEnqueuedWorkgroupSize = 32, + BuiltInGlobalOffset = 33, + BuiltInGlobalLinearId = 34, + BuiltInSubgroupSize = 36, + BuiltInSubgroupMaxSize = 37, + BuiltInNumSubgroups = 38, + BuiltInNumEnqueuedSubgroups = 39, + BuiltInSubgroupId = 40, + BuiltInSubgroupLocalInvocationId = 41, + BuiltInVertexIndex = 42, + BuiltInInstanceIndex = 43, + BuiltInSubgroupEqMaskKHR = 4416, + BuiltInSubgroupGeMaskKHR = 4417, + BuiltInSubgroupGtMaskKHR = 4418, + BuiltInSubgroupLeMaskKHR = 4419, + BuiltInSubgroupLtMaskKHR = 4420, + BuiltInBaseVertex = 4424, + BuiltInBaseInstance = 4425, + BuiltInDrawIndex = 4426, + BuiltInMax = 0x7fffffff, +}; + +enum SelectionControlShift { + SelectionControlFlattenShift = 0, + SelectionControlDontFlattenShift = 1, + SelectionControlMax = 0x7fffffff, +}; + +enum SelectionControlMask { + SelectionControlMaskNone = 0, + SelectionControlFlattenMask = 0x00000001, + SelectionControlDontFlattenMask = 0x00000002, +}; + +enum LoopControlShift { + LoopControlUnrollShift = 0, + LoopControlDontUnrollShift = 1, + LoopControlMax = 0x7fffffff, +}; + +enum LoopControlMask { + LoopControlMaskNone = 0, + LoopControlUnrollMask = 0x00000001, + LoopControlDontUnrollMask = 0x00000002, +}; + +enum FunctionControlShift { + FunctionControlInlineShift = 0, + FunctionControlDontInlineShift = 1, + FunctionControlPureShift = 2, + FunctionControlConstShift = 3, + FunctionControlMax = 0x7fffffff, +}; + +enum FunctionControlMask { + FunctionControlMaskNone = 0, + FunctionControlInlineMask = 0x00000001, + FunctionControlDontInlineMask = 0x00000002, + FunctionControlPureMask = 0x00000004, + FunctionControlConstMask = 0x00000008, +}; + +enum MemorySemanticsShift { + MemorySemanticsAcquireShift = 1, + MemorySemanticsReleaseShift = 2, + MemorySemanticsAcquireReleaseShift = 3, + MemorySemanticsSequentiallyConsistentShift = 4, + MemorySemanticsUniformMemoryShift = 6, + MemorySemanticsSubgroupMemoryShift = 7, + MemorySemanticsWorkgroupMemoryShift = 8, + MemorySemanticsCrossWorkgroupMemoryShift = 9, + MemorySemanticsAtomicCounterMemoryShift = 10, + MemorySemanticsImageMemoryShift = 11, + MemorySemanticsMax = 0x7fffffff, +}; + +enum MemorySemanticsMask { + MemorySemanticsMaskNone = 0, + MemorySemanticsAcquireMask = 0x00000002, + MemorySemanticsReleaseMask = 0x00000004, + MemorySemanticsAcquireReleaseMask = 0x00000008, + MemorySemanticsSequentiallyConsistentMask = 0x00000010, + MemorySemanticsUniformMemoryMask = 0x00000040, + MemorySemanticsSubgroupMemoryMask = 0x00000080, + MemorySemanticsWorkgroupMemoryMask = 0x00000100, + MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, + MemorySemanticsAtomicCounterMemoryMask = 0x00000400, + MemorySemanticsImageMemoryMask = 0x00000800, +}; + +enum MemoryAccessShift { + MemoryAccessVolatileShift = 0, + MemoryAccessAlignedShift = 1, + MemoryAccessNontemporalShift = 2, + MemoryAccessMax = 0x7fffffff, +}; + +enum MemoryAccessMask { + MemoryAccessMaskNone = 0, + MemoryAccessVolatileMask = 0x00000001, + MemoryAccessAlignedMask = 0x00000002, + MemoryAccessNontemporalMask = 0x00000004, +}; + +enum Scope { + ScopeCrossDevice = 0, + ScopeDevice = 1, + ScopeWorkgroup = 2, + ScopeSubgroup = 3, + ScopeInvocation = 4, + ScopeMax = 0x7fffffff, +}; + +enum GroupOperation { + GroupOperationReduce = 0, + GroupOperationInclusiveScan = 1, + GroupOperationExclusiveScan = 2, + GroupOperationMax = 0x7fffffff, +}; + +enum KernelEnqueueFlags { + KernelEnqueueFlagsNoWait = 0, + KernelEnqueueFlagsWaitKernel = 1, + KernelEnqueueFlagsWaitWorkGroup = 2, + KernelEnqueueFlagsMax = 0x7fffffff, +}; + +enum KernelProfilingInfoShift { + KernelProfilingInfoCmdExecTimeShift = 0, + KernelProfilingInfoMax = 0x7fffffff, +}; + +enum KernelProfilingInfoMask { + KernelProfilingInfoMaskNone = 0, + KernelProfilingInfoCmdExecTimeMask = 0x00000001, +}; + +enum Capability { + CapabilityMatrix = 0, + CapabilityShader = 1, + CapabilityGeometry = 2, + CapabilityTessellation = 3, + CapabilityAddresses = 4, + CapabilityLinkage = 5, + CapabilityKernel = 6, + CapabilityVector16 = 7, + CapabilityFloat16Buffer = 8, + CapabilityFloat16 = 9, + CapabilityFloat64 = 10, + CapabilityInt64 = 11, + CapabilityInt64Atomics = 12, + CapabilityImageBasic = 13, + CapabilityImageReadWrite = 14, + CapabilityImageMipmap = 15, + CapabilityPipes = 17, + CapabilityGroups = 18, + CapabilityDeviceEnqueue = 19, + CapabilityLiteralSampler = 20, + CapabilityAtomicStorage = 21, + CapabilityInt16 = 22, + CapabilityTessellationPointSize = 23, + CapabilityGeometryPointSize = 24, + CapabilityImageGatherExtended = 25, + CapabilityStorageImageMultisample = 27, + CapabilityUniformBufferArrayDynamicIndexing = 28, + CapabilitySampledImageArrayDynamicIndexing = 29, + CapabilityStorageBufferArrayDynamicIndexing = 30, + CapabilityStorageImageArrayDynamicIndexing = 31, + CapabilityClipDistance = 32, + CapabilityCullDistance = 33, + CapabilityImageCubeArray = 34, + CapabilitySampleRateShading = 35, + CapabilityImageRect = 36, + CapabilitySampledRect = 37, + CapabilityGenericPointer = 38, + CapabilityInt8 = 39, + CapabilityInputAttachment = 40, + CapabilitySparseResidency = 41, + CapabilityMinLod = 42, + CapabilitySampled1D = 43, + CapabilityImage1D = 44, + CapabilitySampledCubeArray = 45, + CapabilitySampledBuffer = 46, + CapabilityImageBuffer = 47, + CapabilityImageMSArray = 48, + CapabilityStorageImageExtendedFormats = 49, + CapabilityImageQuery = 50, + CapabilityDerivativeControl = 51, + CapabilityInterpolationFunction = 52, + CapabilityTransformFeedback = 53, + CapabilityGeometryStreams = 54, + CapabilityStorageImageReadWithoutFormat = 55, + CapabilityStorageImageWriteWithoutFormat = 56, + CapabilityMultiViewport = 57, + CapabilitySubgroupBallotKHR = 4423, + CapabilityDrawParameters = 4427, + CapabilityMax = 0x7fffffff, +}; + +enum Op { + OpNop = 0, + OpUndef = 1, + OpSourceContinued = 2, + OpSource = 3, + OpSourceExtension = 4, + OpName = 5, + OpMemberName = 6, + OpString = 7, + OpLine = 8, + OpExtension = 10, + OpExtInstImport = 11, + OpExtInst = 12, + OpMemoryModel = 14, + OpEntryPoint = 15, + OpExecutionMode = 16, + OpCapability = 17, + OpTypeVoid = 19, + OpTypeBool = 20, + OpTypeInt = 21, + OpTypeFloat = 22, + OpTypeVector = 23, + OpTypeMatrix = 24, + OpTypeImage = 25, + OpTypeSampler = 26, + OpTypeSampledImage = 27, + OpTypeArray = 28, + OpTypeRuntimeArray = 29, + OpTypeStruct = 30, + OpTypeOpaque = 31, + OpTypePointer = 32, + OpTypeFunction = 33, + OpTypeEvent = 34, + OpTypeDeviceEvent = 35, + OpTypeReserveId = 36, + OpTypeQueue = 37, + OpTypePipe = 38, + OpTypeForwardPointer = 39, + OpConstantTrue = 41, + OpConstantFalse = 42, + OpConstant = 43, + OpConstantComposite = 44, + OpConstantSampler = 45, + OpConstantNull = 46, + OpSpecConstantTrue = 48, + OpSpecConstantFalse = 49, + OpSpecConstant = 50, + OpSpecConstantComposite = 51, + OpSpecConstantOp = 52, + OpFunction = 54, + OpFunctionParameter = 55, + OpFunctionEnd = 56, + OpFunctionCall = 57, + OpVariable = 59, + OpImageTexelPointer = 60, + OpLoad = 61, + OpStore = 62, + OpCopyMemory = 63, + OpCopyMemorySized = 64, + OpAccessChain = 65, + OpInBoundsAccessChain = 66, + OpPtrAccessChain = 67, + OpArrayLength = 68, + OpGenericPtrMemSemantics = 69, + OpInBoundsPtrAccessChain = 70, + OpDecorate = 71, + OpMemberDecorate = 72, + OpDecorationGroup = 73, + OpGroupDecorate = 74, + OpGroupMemberDecorate = 75, + OpVectorExtractDynamic = 77, + OpVectorInsertDynamic = 78, + OpVectorShuffle = 79, + OpCompositeConstruct = 80, + OpCompositeExtract = 81, + OpCompositeInsert = 82, + OpCopyObject = 83, + OpTranspose = 84, + OpSampledImage = 86, + OpImageSampleImplicitLod = 87, + OpImageSampleExplicitLod = 88, + OpImageSampleDrefImplicitLod = 89, + OpImageSampleDrefExplicitLod = 90, + OpImageSampleProjImplicitLod = 91, + OpImageSampleProjExplicitLod = 92, + OpImageSampleProjDrefImplicitLod = 93, + OpImageSampleProjDrefExplicitLod = 94, + OpImageFetch = 95, + OpImageGather = 96, + OpImageDrefGather = 97, + OpImageRead = 98, + OpImageWrite = 99, + OpImage = 100, + OpImageQueryFormat = 101, + OpImageQueryOrder = 102, + OpImageQuerySizeLod = 103, + OpImageQuerySize = 104, + OpImageQueryLod = 105, + OpImageQueryLevels = 106, + OpImageQuerySamples = 107, + OpConvertFToU = 109, + OpConvertFToS = 110, + OpConvertSToF = 111, + OpConvertUToF = 112, + OpUConvert = 113, + OpSConvert = 114, + OpFConvert = 115, + OpQuantizeToF16 = 116, + OpConvertPtrToU = 117, + OpSatConvertSToU = 118, + OpSatConvertUToS = 119, + OpConvertUToPtr = 120, + OpPtrCastToGeneric = 121, + OpGenericCastToPtr = 122, + OpGenericCastToPtrExplicit = 123, + OpBitcast = 124, + OpSNegate = 126, + OpFNegate = 127, + OpIAdd = 128, + OpFAdd = 129, + OpISub = 130, + OpFSub = 131, + OpIMul = 132, + OpFMul = 133, + OpUDiv = 134, + OpSDiv = 135, + OpFDiv = 136, + OpUMod = 137, + OpSRem = 138, + OpSMod = 139, + OpFRem = 140, + OpFMod = 141, + OpVectorTimesScalar = 142, + OpMatrixTimesScalar = 143, + OpVectorTimesMatrix = 144, + OpMatrixTimesVector = 145, + OpMatrixTimesMatrix = 146, + OpOuterProduct = 147, + OpDot = 148, + OpIAddCarry = 149, + OpISubBorrow = 150, + OpUMulExtended = 151, + OpSMulExtended = 152, + OpAny = 154, + OpAll = 155, + OpIsNan = 156, + OpIsInf = 157, + OpIsFinite = 158, + OpIsNormal = 159, + OpSignBitSet = 160, + OpLessOrGreater = 161, + OpOrdered = 162, + OpUnordered = 163, + OpLogicalEqual = 164, + OpLogicalNotEqual = 165, + OpLogicalOr = 166, + OpLogicalAnd = 167, + OpLogicalNot = 168, + OpSelect = 169, + OpIEqual = 170, + OpINotEqual = 171, + OpUGreaterThan = 172, + OpSGreaterThan = 173, + OpUGreaterThanEqual = 174, + OpSGreaterThanEqual = 175, + OpULessThan = 176, + OpSLessThan = 177, + OpULessThanEqual = 178, + OpSLessThanEqual = 179, + OpFOrdEqual = 180, + OpFUnordEqual = 181, + OpFOrdNotEqual = 182, + OpFUnordNotEqual = 183, + OpFOrdLessThan = 184, + OpFUnordLessThan = 185, + OpFOrdGreaterThan = 186, + OpFUnordGreaterThan = 187, + OpFOrdLessThanEqual = 188, + OpFUnordLessThanEqual = 189, + OpFOrdGreaterThanEqual = 190, + OpFUnordGreaterThanEqual = 191, + OpShiftRightLogical = 194, + OpShiftRightArithmetic = 195, + OpShiftLeftLogical = 196, + OpBitwiseOr = 197, + OpBitwiseXor = 198, + OpBitwiseAnd = 199, + OpNot = 200, + OpBitFieldInsert = 201, + OpBitFieldSExtract = 202, + OpBitFieldUExtract = 203, + OpBitReverse = 204, + OpBitCount = 205, + OpDPdx = 207, + OpDPdy = 208, + OpFwidth = 209, + OpDPdxFine = 210, + OpDPdyFine = 211, + OpFwidthFine = 212, + OpDPdxCoarse = 213, + OpDPdyCoarse = 214, + OpFwidthCoarse = 215, + OpEmitVertex = 218, + OpEndPrimitive = 219, + OpEmitStreamVertex = 220, + OpEndStreamPrimitive = 221, + OpControlBarrier = 224, + OpMemoryBarrier = 225, + OpAtomicLoad = 227, + OpAtomicStore = 228, + OpAtomicExchange = 229, + OpAtomicCompareExchange = 230, + OpAtomicCompareExchangeWeak = 231, + OpAtomicIIncrement = 232, + OpAtomicIDecrement = 233, + OpAtomicIAdd = 234, + OpAtomicISub = 235, + OpAtomicSMin = 236, + OpAtomicUMin = 237, + OpAtomicSMax = 238, + OpAtomicUMax = 239, + OpAtomicAnd = 240, + OpAtomicOr = 241, + OpAtomicXor = 242, + OpPhi = 245, + OpLoopMerge = 246, + OpSelectionMerge = 247, + OpLabel = 248, + OpBranch = 249, + OpBranchConditional = 250, + OpSwitch = 251, + OpKill = 252, + OpReturn = 253, + OpReturnValue = 254, + OpUnreachable = 255, + OpLifetimeStart = 256, + OpLifetimeStop = 257, + OpGroupAsyncCopy = 259, + OpGroupWaitEvents = 260, + OpGroupAll = 261, + OpGroupAny = 262, + OpGroupBroadcast = 263, + OpGroupIAdd = 264, + OpGroupFAdd = 265, + OpGroupFMin = 266, + OpGroupUMin = 267, + OpGroupSMin = 268, + OpGroupFMax = 269, + OpGroupUMax = 270, + OpGroupSMax = 271, + OpReadPipe = 274, + OpWritePipe = 275, + OpReservedReadPipe = 276, + OpReservedWritePipe = 277, + OpReserveReadPipePackets = 278, + OpReserveWritePipePackets = 279, + OpCommitReadPipe = 280, + OpCommitWritePipe = 281, + OpIsValidReserveId = 282, + OpGetNumPipePackets = 283, + OpGetMaxPipePackets = 284, + OpGroupReserveReadPipePackets = 285, + OpGroupReserveWritePipePackets = 286, + OpGroupCommitReadPipe = 287, + OpGroupCommitWritePipe = 288, + OpEnqueueMarker = 291, + OpEnqueueKernel = 292, + OpGetKernelNDrangeSubGroupCount = 293, + OpGetKernelNDrangeMaxSubGroupSize = 294, + OpGetKernelWorkGroupSize = 295, + OpGetKernelPreferredWorkGroupSizeMultiple = 296, + OpRetainEvent = 297, + OpReleaseEvent = 298, + OpCreateUserEvent = 299, + OpIsValidEvent = 300, + OpSetUserEventStatus = 301, + OpCaptureEventProfilingInfo = 302, + OpGetDefaultQueue = 303, + OpBuildNDRange = 304, + OpImageSparseSampleImplicitLod = 305, + OpImageSparseSampleExplicitLod = 306, + OpImageSparseSampleDrefImplicitLod = 307, + OpImageSparseSampleDrefExplicitLod = 308, + OpImageSparseSampleProjImplicitLod = 309, + OpImageSparseSampleProjExplicitLod = 310, + OpImageSparseSampleProjDrefImplicitLod = 311, + OpImageSparseSampleProjDrefExplicitLod = 312, + OpImageSparseFetch = 313, + OpImageSparseGather = 314, + OpImageSparseDrefGather = 315, + OpImageSparseTexelsResident = 316, + OpNoLine = 317, + OpAtomicFlagTestAndSet = 318, + OpAtomicFlagClear = 319, + OpImageSparseRead = 320, + OpSubgroupBallotKHR = 4421, + OpSubgroupFirstInvocationKHR = 4422, + OpMax = 0x7fffffff, +}; + +// Overload operator| for mask bit combining + +inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } +inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } +inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } +inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } +inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } +inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } +inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } +inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } + +} // end namespace spv + +#endif // #ifndef spirv_HPP + diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 42c054a4..c584c9dc 100755 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -64,8 +64,7 @@ class Module; const Id NoResult = 0; const Id NoType = 0; -const unsigned int BadValue = 0xFFFFFFFF; -const Decoration NoPrecision = (Decoration)BadValue; +const Decoration NoPrecision = DecorationMax; const MemorySemanticsMask MemorySemanticsAllMemory = (MemorySemanticsMask)(MemorySemanticsSequentiallyConsistentMask | MemorySemanticsUniformMemoryMask | diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index d69351ef..231ba277 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -24,6 +24,7 @@ set(LIBRARIES OSDependent HLSL SPIRV + SPVRemapper glslang-default-resource-limits) if(WIN32) diff --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp index 80198634..8a5e6f37 100644 --- a/StandAlone/ResourceLimits.cpp +++ b/StandAlone/ResourceLimits.cpp @@ -241,8 +241,10 @@ std::string GetDefaultTBuiltInResourceString() 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 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config) 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 63e9878a..0ac72d3b 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -1,6 +1,6 @@ // //Copyright (C) 2002-2005 3Dlabs Inc. Ltd. -//Copyright (C) 2013 LunarG, Inc. +//Copyright (C) 2013-2016 LunarG, Inc. // //All rights reserved. // @@ -46,9 +46,11 @@ #include "../SPIRV/GLSL.std.450.h" #include "../SPIRV/doc.h" #include "../SPIRV/disassemble.h" -#include -#include -#include +#include +#include +#include +#include +#include #include "../glslang/OSDependent/osinclude.h" @@ -78,6 +80,9 @@ enum TOptions { EOptionOutputHexadecimal = (1 << 16), EOptionReadHlsl = (1 << 17), EOptionCascadingErrors = (1 << 18), + EOptionAutoMapBindings = (1 << 19), + EOptionFlattenUniformArrays = (1 << 20), + EOptionNoStorageFormat = (1 << 21), }; // @@ -96,7 +101,7 @@ enum TFailCode { // // Forward declarations. // -EShLanguage FindLanguage(const std::string& name); +EShLanguage FindLanguage(const std::string& name, bool parseSuffix=true); void CompileFile(const char* fileName, ShHandle); void usage(); void FreeFileData(char** data); @@ -155,6 +160,11 @@ int Options = 0; const char* ExecutableName = nullptr; const char* binaryFileName = nullptr; const char* entryPointName = nullptr; +const char* shaderStageName = nullptr; + +std::array baseSamplerBinding; +std::array baseTextureBinding; +std::array baseUboBinding; // // Create the default name for saving a binary if -o is not provided. @@ -203,6 +213,35 @@ void Error(const char* message) exit(EFailUsage); } +// +// Process an optional binding base of the form: +// --argname [stage] base +// Where stage is one of the forms accepted by FindLanguage, and base is an integer +// +void ProcessBindingBase(int& argc, char**& argv, std::array& base) +{ + if (argc < 2) + usage(); + + if (!isdigit(argv[1][0])) { + if (argc < 3) // this form needs one more argument + usage(); + + // Parse form: --argname stage base + const EShLanguage lang = FindLanguage(argv[1], false); + base[lang] = atoi(argv[2]); + argc-= 2; + argv+= 2; + } else { + // Parse form: --argname base + for (int lang=0; lang= 1; argc--, argv++) { if (argv[0][0] == '-') { switch (argv[0][1]) { + case '-': + { + std::string lowerword(argv[0]+2); + std::transform(lowerword.begin(), lowerword.end(), lowerword.begin(), ::tolower); + + // handle --word style options + if (lowerword == "shift-sampler-bindings" || // synonyms + lowerword == "shift-sampler-binding" || + lowerword == "ssb") { + ProcessBindingBase(argc, argv, baseSamplerBinding); + } else if (lowerword == "shift-texture-bindings" || // synonyms + lowerword == "shift-texture-binding" || + lowerword == "stb") { + ProcessBindingBase(argc, argv, baseTextureBinding); + } else if (lowerword == "shift-ubo-bindings" || // synonyms + lowerword == "shift-ubo-binding" || + lowerword == "sub") { + ProcessBindingBase(argc, argv, baseUboBinding); + } else if (lowerword == "auto-map-bindings" || // synonyms + lowerword == "auto-map-binding" || + lowerword == "amb") { + Options |= EOptionAutoMapBindings; + } else if (lowerword == "flatten-uniform-arrays" || // synonyms + lowerword == "flatten-uniform-array" || + lowerword == "fua") { + Options |= EOptionFlattenUniformArrays; + } else if (lowerword == "no-storage-format" || // synonyms + lowerword == "nsf") { + Options |= EOptionNoStorageFormat; + } else { + usage(); + } + } + break; case 'H': Options |= EOptionHumanReadableSpv; if ((Options & EOptionSpv) == 0) { @@ -236,6 +313,15 @@ void ProcessArguments(int argc, char* argv[]) Options |= EOptionVulkanRules; Options |= EOptionLinkProgram; break; + case 'S': + shaderStageName = argv[1]; + if (argc > 0) { + argc--; + argv++; + } + else + Error("no specified for -S"); + break; case 'G': Options |= EOptionSpv; Options |= EOptionLinkProgram; @@ -330,6 +416,10 @@ void ProcessArguments(int argc, char* argv[]) // -o or -x makes no sense if there is no target binary if (binaryFileName && (Options & EOptionSpv) == 0) Error("no binary generation requested (e.g., -V)"); + + if ((Options & EOptionFlattenUniformArrays) != 0 && + (Options & EOptionReadHlsl) == 0) + Error("uniform array flattening only valid when compiling HLSL source."); } // @@ -402,7 +492,26 @@ void StderrIfNonEmpty(const char* str) 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,9 +538,19 @@ void CompileAndLinkShaderUnits(std::vector compUnits) 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); + + shader->setShiftSamplerBinding(baseSamplerBinding[compUnit.stage]); + shader->setShiftTextureBinding(baseTextureBinding[compUnit.stage]); + shader->setShiftUboBinding(baseUboBinding[compUnit.stage]); + shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0); + shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0); + + if (Options & EOptionAutoMapBindings) + shader->setAutoMapBindings(true); + shaders.push_back(shader); const int defaultVersion = Options & EOptionDefaultDesktop? 110: 100; @@ -470,6 +589,12 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages)) LinkFailed = true; + // Map IO + if (Options & EOptionSpv) { + if (!program.mapIO()) + LinkFailed = true; + } + // Report if (! (Options & EOptionSuppressInfolog) && ! (Options & EOptionMemoryLeakMode)) { @@ -548,11 +673,11 @@ void CompileAndLinkShaderFiles() // they are all getting linked together.) glslang::TWorkItem* workItem; while (Worklist.remove(workItem)) { - ShaderCompUnit compUnit = { + ShaderCompUnit compUnit( FindLanguage(workItem->name), workItem->name, ReadFileData(workItem->name.c_str()) - }; + ); if (! compUnit.text) { usage(); @@ -596,6 +721,8 @@ int C_DECL main(int argc, char* argv[]) printf("SPIR-V Version %s\n", spirvVersion.c_str()); printf("GLSL.std.450 Version %d, Revision %d\n", GLSLstd450Version, GLSLstd450Revision); printf("Khronos Tool ID %d\n", glslang::GetKhronosToolId()); + printf("GL_KHR_vulkan_glsl version %d\n", 100); + printf("ARB_GL_gl_spirv version %d\n", 100); if (Worklist.empty()) return ESuccess; } @@ -674,15 +801,25 @@ int C_DECL main(int argc, char* argv[]) // .frag = fragment // .comp = compute // -EShLanguage FindLanguage(const std::string& name) +EShLanguage FindLanguage(const std::string& name, bool parseSuffix) { - size_t ext = name.rfind('.'); - if (ext == std::string::npos) { - usage(); - return EShLangVertex; + size_t ext = 0; + + // Search for a suffix on a filename: e.g, "myfile.frag". If given + // the suffix directly, we skip looking the '.' + if (parseSuffix) { + ext = name.rfind('.'); + if (ext == std::string::npos) { + usage(); + return EShLangVertex; + } + ++ext; } - std::string suffix = name.substr(ext + 1, std::string::npos); + std::string suffix = name.substr(ext, std::string::npos); + if (shaderStageName) + suffix = shaderStageName; + if (suffix == "vert") return EShLangVertex; else if (suffix == "tesc") @@ -776,6 +913,8 @@ void usage() " -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 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" @@ -795,6 +934,25 @@ void usage() " -v print version strings\n" " -w suppress warnings (except as required by #extension : warn)\n" " -x save 32-bit hexadecimal numbers as text, requires a binary option (e.g., -V)\n" + "\n" + " --shift-sampler-binding [stage] num set base binding number for samplers\n" + " --ssb [stage] num synonym for --shift-sampler-binding\n" + "\n" + " --shift-texture-binding [stage] num set base binding number for textures\n" + " --stb [stage] num synonym for --shift-texture-binding\n" + "\n" + " --shift-UBO-binding [stage] num set base binding number for UBOs\n" + " --sub [stage] num synonym for --shift-UBO-binding\n" + "\n" + " --auto-map-bindings automatically bind uniform variables without\n" + " explicit bindings.\n" + " --amb synonym for --auto-map-bindings\n" + "\n" + " --flatten-uniform-arrays flatten uniform texture & sampler arrays to scalars\n" + " --fua synonym for --flatten-uniform-arrays\n" + "\n" + " --no-storage-format use Unknown image format\n" + " --nsf synonym for --no-storage-format\n" ); exit(EFailUsage); diff --git a/Test/120.vert b/Test/120.vert index b7724b43..d2765571 100644 --- a/Test/120.vert +++ b/Test/120.vert @@ -192,6 +192,8 @@ void foo213() gl_ClipDistance[1] = 0.3; // ERROR } +int gl_ModelViewMatrix[] = 0; + // token pasting (ERRORS...) #define mac abc##def diff --git a/Test/400.vert b/Test/400.vert index 2c3dd042..315c7ea0 100644 --- a/Test/400.vert +++ b/Test/400.vert @@ -4,6 +4,103 @@ in double d; // ERROR, no doubles 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/420.frag b/Test/420.frag index 98ddf3d2..1444758e 100644 --- a/Test/420.frag +++ b/Test/420.frag @@ -10,3 +10,5 @@ void main() layout(depth_less) in float depth; // ERROR: depth_less only applies to gl_FragDepth layout(depth_any) out float gl_FragDepth; // ERROR, done after use + +layout(binding=0) uniform atomic_uint a[]; diff --git a/Test/420.tese b/Test/420.tese index 988a26d7..4c3693a8 100644 --- a/Test/420.tese +++ b/Test/420.tese @@ -51,6 +51,18 @@ struct S4 { S3 s[2]; }; +struct Single1 { int f; }; +Single1 single1 = { 10 }; + +struct Single2 { uvec2 v; }; +Single2 single2 = { { 1, 2 } }; + +struct Single3 { Single1 s1; }; +Single3 single3 = { { 3 } }; + +struct Single4 { Single2 s1; }; +Single4 single4 = { { { 4u, 5u } } }; + const S4 constructed = S4(uvec2(1, 2), S3[2](S3(3.0, mat2x3(4.0)), S3(5.0, mat2x3(6.0)))); diff --git a/Test/420.vert b/Test/420.vert index 49035ea4..ab28140e 100644 --- a/Test/420.vert +++ b/Test/420.vert @@ -156,4 +156,6 @@ void qlod() levels = textureQueryLevels(samp1D); // ERROR, not until 430 levels = textureQueryLevels(samp1Ds); // ERROR, not until 430 -} \ No newline at end of file +} + +layout(binding=0) writeonly uniform image1D badArray[]; diff --git a/Test/440.vert b/Test/440.vert index ac946be0..2e61f797 100644 --- a/Test/440.vert +++ b/Test/440.vert @@ -63,6 +63,20 @@ layout(location = 1, component = 1) out; // ERROR, no global set layout(location = 50, component = 3) out int be; layout(location = 50, component = 0) out vec3 bf; +layout(location = 51, component = 1) out double dfo; // ERROR, odd component +layout(location = 52, component = 2) out dvec2 dvo; // ERROR, overflow +layout(location = 53) out double dfo2; +layout(location = 53, component = 2) out vec2 ffv2; // okay, fits +layout(location = 54) out dvec4 dvec4out; // uses up location 55 too +layout(location = 55) out float overf; // ERROR, collides with previous dvec4 +layout(location = 56, component = 1) out vec2 df2o; +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; } bbinst1; diff --git a/Test/badMacroArgs.frag b/Test/badMacroArgs.frag new file mode 100755 index 00000000..7d7de870 --- /dev/null +++ b/Test/badMacroArgs.frag @@ -0,0 +1,4 @@ +#version 400 + +#define m(a) a +m() \ No newline at end of file diff --git a/Test/baseResults/100.frag.out b/Test/baseResults/100.frag.out index 70b89349..edd65ab2 100644 --- a/Test/baseResults/100.frag.out +++ b/Test/baseResults/100.frag.out @@ -241,7 +241,7 @@ ERROR: node is still EOpNull! 0:122 'sExt' (uniform lowp samplerExternalOES) 0:122 Construct vec3 (temp lowp 3-component vector of float) 0:122 'f13' (invariant global mediump float) -0:123 textureProj (global lowp 4-component vector of float) +0:123 textureProj (global lowp 4-component vector of float, operation at mediump) 0:123 'sExt' (uniform lowp samplerExternalOES) 0:123 direct index (smooth temp mediump 4-component vector of float) 0:123 'v' (smooth in 3-element array of mediump 4-component vector of float) @@ -278,7 +278,7 @@ ERROR: node is still EOpNull! 0:145 'a' (in mediump int) 0:145 'b' (in mediump float) 0:147 Sequence -0:147 textureProjGrad (global lowp 4-component vector of float) +0:147 textureProjGrad (global lowp 4-component vector of float, operation at mediump) 0:147 's2Dg' (uniform lowp sampler2D) 0:147 Construct vec3 (temp mediump 3-component vector of float) 0:147 'f13' (invariant global mediump float) @@ -299,17 +299,17 @@ ERROR: node is still EOpNull! 0:158 Function Definition: foo323433( (global void) 0:158 Function Parameters: 0:160 Sequence -0:160 textureLod (global lowp 4-component vector of float) +0:160 textureLod (global lowp 4-component vector of float, operation at mediump) 0:160 's2Dg' (uniform lowp sampler2D) 0:160 'uv2' (invariant uniform mediump 2-component vector of float) 0:160 'f13' (invariant global mediump float) -0:161 textureProjGrad (global lowp 4-component vector of float) +0:161 textureProjGrad (global lowp 4-component vector of float, operation at mediump) 0:161 's2Dg' (uniform lowp sampler2D) 0:161 Construct vec3 (temp mediump 3-component vector of float) 0:161 'f13' (invariant global mediump float) 0:161 'uv2' (invariant uniform mediump 2-component vector of float) 0:161 'uv2' (invariant uniform mediump 2-component vector of float) -0:162 textureGrad (global lowp 4-component vector of float) +0:162 textureGrad (global lowp 4-component vector of float, operation at mediump) 0:162 's2Dg' (uniform lowp sampler2D) 0:162 'uv2' (invariant uniform mediump 2-component vector of float) 0:162 'uv2' (invariant uniform mediump 2-component vector of float) @@ -579,7 +579,7 @@ ERROR: node is still EOpNull! 0:122 'sExt' (uniform lowp samplerExternalOES) 0:122 Construct vec3 (temp lowp 3-component vector of float) 0:122 'f13' (invariant global mediump float) -0:123 textureProj (global lowp 4-component vector of float) +0:123 textureProj (global lowp 4-component vector of float, operation at mediump) 0:123 'sExt' (uniform lowp samplerExternalOES) 0:123 direct index (smooth temp mediump 4-component vector of float) 0:123 'v' (smooth in 3-element array of mediump 4-component vector of float) @@ -616,7 +616,7 @@ ERROR: node is still EOpNull! 0:145 'a' (in mediump int) 0:145 'b' (in mediump float) 0:147 Sequence -0:147 textureProjGrad (global lowp 4-component vector of float) +0:147 textureProjGrad (global lowp 4-component vector of float, operation at mediump) 0:147 's2Dg' (uniform lowp sampler2D) 0:147 Construct vec3 (temp mediump 3-component vector of float) 0:147 'f13' (invariant global mediump float) @@ -637,17 +637,17 @@ ERROR: node is still EOpNull! 0:158 Function Definition: foo323433( (global void) 0:158 Function Parameters: 0:160 Sequence -0:160 textureLod (global lowp 4-component vector of float) +0:160 textureLod (global lowp 4-component vector of float, operation at mediump) 0:160 's2Dg' (uniform lowp sampler2D) 0:160 'uv2' (invariant uniform mediump 2-component vector of float) 0:160 'f13' (invariant global mediump float) -0:161 textureProjGrad (global lowp 4-component vector of float) +0:161 textureProjGrad (global lowp 4-component vector of float, operation at mediump) 0:161 's2Dg' (uniform lowp sampler2D) 0:161 Construct vec3 (temp mediump 3-component vector of float) 0:161 'f13' (invariant global mediump float) 0:161 'uv2' (invariant uniform mediump 2-component vector of float) 0:161 'uv2' (invariant uniform mediump 2-component vector of float) -0:162 textureGrad (global lowp 4-component vector of float) +0:162 textureGrad (global lowp 4-component vector of float, operation at mediump) 0:162 's2Dg' (uniform lowp sampler2D) 0:162 'uv2' (invariant uniform mediump 2-component vector of float) 0:162 'uv2' (invariant uniform mediump 2-component vector of float) diff --git a/Test/baseResults/120.frag.out b/Test/baseResults/120.frag.out index 0d10b0e9..4fa76000 100644 --- a/Test/baseResults/120.frag.out +++ b/Test/baseResults/120.frag.out @@ -23,7 +23,7 @@ ERROR: 0:84: 'z' : vector field selection out of range 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/120.vert.out b/Test/baseResults/120.vert.out index a6e833a3..73ced6a1 100644 --- a/Test/baseResults/120.vert.out +++ b/Test/baseResults/120.vert.out @@ -75,10 +75,11 @@ ERROR: 0:191: '=' : cannot convert from 'temp float' to 'temp int' ERROR: 0:192: 'gl_ClipDistance' : undeclared identifier ERROR: 0:192: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector ERROR: 0:192: 'assign' : l-value required (can't modify a const) -ERROR: 0:198: 'token pasting (##)' : not supported for this version or the enabled extensions -ERROR: 0:198: '##' : token pasting not implemented (internal error) -ERROR: 0:198: '' : syntax error -ERROR: 79 compilation errors. No code generated. +ERROR: 0:195: 'gl_ModelViewMatrix' : identifiers starting with "gl_" are reserved +ERROR: 0:200: 'token pasting (##)' : not supported for this version or the enabled extensions +ERROR: 0:200: '##' : token pasting not implemented (internal error) +ERROR: 0:200: '' : syntax error +ERROR: 80 compilation errors. No code generated. Shader version: 120 diff --git a/Test/baseResults/150.tesc.out b/Test/baseResults/150.tesc.out index 78020e12..1736bf0e 100644 --- a/Test/baseResults/150.tesc.out +++ b/Test/baseResults/150.tesc.out @@ -732,7 +732,7 @@ ERROR: 0:29: 'const 2-element array of 4-component vector of float' : cannot con ERROR: 0:29: '=' : cannot convert from 'const float' to 'global 2-element array of 4-component vector of float' ERROR: 0:30: 'initializer list' : wrong number of matrix columns: temp 4X2 matrix of float ERROR: 0:40: 'constructor' : cannot convert parameter 1 from 'temp float' to 'temp structure{global float s, global float t}' -ERROR: 0:58: 'initializer list' : wrong number of structure members +ERROR: 0:70: 'initializer list' : wrong number of structure members ERROR: 13 compilation errors. No code generated. @@ -770,51 +770,73 @@ ERROR: node is still EOpNull! 0:42 5.000000 0:42 5.200000 0:42 1.100000 -0:67 Sequence -0:67 move second child to first child (temp 3-component vector of float) -0:67 'av3' (global 3-component vector of float) -0:67 Construct vec3 (global 3-component vector of float) -0:67 'vc1' (global float) -0:67 'vc2' (global float) -0:67 'vc3' (global float) -0:68 Sequence -0:68 move second child to first child (temp 3-component vector of float) -0:68 'bv3' (global 3-component vector of float) -0:68 Construct vec3 (temp 3-component vector of float) -0:68 'vc1' (global float) -0:68 'vc2' (global float) -0:68 'vc3' (global float) -0:70 Function Definition: main( (global void) -0:70 Function Parameters: -0:72 Sequence -0:72 MemoryBarrier (global void) -0:74 Test condition and select (temp void) -0:74 Condition -0:74 Compare Equal (temp bool) -0:74 Constant: -0:74 1 (const uint) -0:74 2 (const uint) -0:74 3.000000 -0:74 4.000000 -0:74 0.000000 -0:74 0.000000 -0:74 0.000000 -0:74 4.000000 -0:74 0.000000 -0:74 5.000000 -0:74 6.000000 -0:74 0.000000 -0:74 0.000000 -0:74 0.000000 -0:74 6.000000 -0:74 0.000000 -0:74 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) -0:74 true case is null -0:76 Test condition and select (temp void) -0:76 Condition -0:76 Constant: -0:76 true (const bool) -0:76 true case is null +0:55 Sequence +0:55 move second child to first child (temp structure{global int f}) +0:55 'single1' (global structure{global int f}) +0:55 Constant: +0:55 10 (const int) +0:58 Sequence +0:58 move second child to first child (temp structure{global 2-component vector of uint v}) +0:58 'single2' (global structure{global 2-component vector of uint v}) +0:58 Constant: +0:58 1 (const uint) +0:58 2 (const uint) +0:61 Sequence +0:61 move second child to first child (temp structure{global structure{global int f} s1}) +0:61 'single3' (global structure{global structure{global int f} s1}) +0:61 Constant: +0:61 3 (const int) +0:64 Sequence +0:64 move second child to first child (temp structure{global structure{global 2-component vector of uint v} s1}) +0:64 'single4' (global structure{global structure{global 2-component vector of uint v} s1}) +0:64 Constant: +0:64 4 (const uint) +0:64 5 (const uint) +0:79 Sequence +0:79 move second child to first child (temp 3-component vector of float) +0:79 'av3' (global 3-component vector of float) +0:79 Construct vec3 (global 3-component vector of float) +0:79 'vc1' (global float) +0:79 'vc2' (global float) +0:79 'vc3' (global float) +0:80 Sequence +0:80 move second child to first child (temp 3-component vector of float) +0:80 'bv3' (global 3-component vector of float) +0:80 Construct vec3 (temp 3-component vector of float) +0:80 'vc1' (global float) +0:80 'vc2' (global float) +0:80 'vc3' (global float) +0:82 Function Definition: main( (global void) +0:82 Function Parameters: +0:84 Sequence +0:84 MemoryBarrier (global void) +0:86 Test condition and select (temp void) +0:86 Condition +0:86 Compare Equal (temp bool) +0:86 Constant: +0:86 1 (const uint) +0:86 2 (const uint) +0:86 3.000000 +0:86 4.000000 +0:86 0.000000 +0:86 0.000000 +0:86 0.000000 +0:86 4.000000 +0:86 0.000000 +0:86 5.000000 +0:86 6.000000 +0:86 0.000000 +0:86 0.000000 +0:86 0.000000 +0:86 6.000000 +0:86 0.000000 +0:86 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) +0:86 true case is null +0:88 Test condition and select (temp void) +0:88 Condition +0:88 Constant: +0:88 true (const bool) +0:88 true case is null 0:? Linker Objects 0:? 'a' (const 2X2 matrix of float) 0:? 1.000000 @@ -840,6 +862,10 @@ ERROR: node is still EOpNull! 0:? 'c3' (global 4X2 matrix of float) 0:? 'd2' (global implicitly-sized array of structure{global float s, global float t}) 0:? 'b5' (global 5-element array of float) +0:? 'single1' (global structure{global int f}) +0:? 'single2' (global structure{global 2-component vector of uint v}) +0:? 'single3' (global structure{global structure{global int f} s1}) +0:? 'single4' (global structure{global structure{global 2-component vector of uint v} s1}) 0:? 'constructed' (const structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) @@ -1524,51 +1550,73 @@ ERROR: node is still EOpNull! 0:42 5.000000 0:42 5.200000 0:42 1.100000 -0:67 Sequence -0:67 move second child to first child (temp 3-component vector of float) -0:67 'av3' (global 3-component vector of float) -0:67 Construct vec3 (global 3-component vector of float) -0:67 'vc1' (global float) -0:67 'vc2' (global float) -0:67 'vc3' (global float) -0:68 Sequence -0:68 move second child to first child (temp 3-component vector of float) -0:68 'bv3' (global 3-component vector of float) -0:68 Construct vec3 (temp 3-component vector of float) -0:68 'vc1' (global float) -0:68 'vc2' (global float) -0:68 'vc3' (global float) -0:70 Function Definition: main( (global void) -0:70 Function Parameters: -0:72 Sequence -0:72 MemoryBarrier (global void) -0:74 Test condition and select (temp void) -0:74 Condition -0:74 Compare Equal (temp bool) -0:74 Constant: -0:74 1 (const uint) -0:74 2 (const uint) -0:74 3.000000 -0:74 4.000000 -0:74 0.000000 -0:74 0.000000 -0:74 0.000000 -0:74 4.000000 -0:74 0.000000 -0:74 5.000000 -0:74 6.000000 -0:74 0.000000 -0:74 0.000000 -0:74 0.000000 -0:74 6.000000 -0:74 0.000000 -0:74 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) -0:74 true case is null -0:76 Test condition and select (temp void) -0:76 Condition -0:76 Constant: -0:76 true (const bool) -0:76 true case is null +0:55 Sequence +0:55 move second child to first child (temp structure{global int f}) +0:55 'single1' (global structure{global int f}) +0:55 Constant: +0:55 10 (const int) +0:58 Sequence +0:58 move second child to first child (temp structure{global 2-component vector of uint v}) +0:58 'single2' (global structure{global 2-component vector of uint v}) +0:58 Constant: +0:58 1 (const uint) +0:58 2 (const uint) +0:61 Sequence +0:61 move second child to first child (temp structure{global structure{global int f} s1}) +0:61 'single3' (global structure{global structure{global int f} s1}) +0:61 Constant: +0:61 3 (const int) +0:64 Sequence +0:64 move second child to first child (temp structure{global structure{global 2-component vector of uint v} s1}) +0:64 'single4' (global structure{global structure{global 2-component vector of uint v} s1}) +0:64 Constant: +0:64 4 (const uint) +0:64 5 (const uint) +0:79 Sequence +0:79 move second child to first child (temp 3-component vector of float) +0:79 'av3' (global 3-component vector of float) +0:79 Construct vec3 (global 3-component vector of float) +0:79 'vc1' (global float) +0:79 'vc2' (global float) +0:79 'vc3' (global float) +0:80 Sequence +0:80 move second child to first child (temp 3-component vector of float) +0:80 'bv3' (global 3-component vector of float) +0:80 Construct vec3 (temp 3-component vector of float) +0:80 'vc1' (global float) +0:80 'vc2' (global float) +0:80 'vc3' (global float) +0:82 Function Definition: main( (global void) +0:82 Function Parameters: +0:84 Sequence +0:84 MemoryBarrier (global void) +0:86 Test condition and select (temp void) +0:86 Condition +0:86 Compare Equal (temp bool) +0:86 Constant: +0:86 1 (const uint) +0:86 2 (const uint) +0:86 3.000000 +0:86 4.000000 +0:86 0.000000 +0:86 0.000000 +0:86 0.000000 +0:86 4.000000 +0:86 0.000000 +0:86 5.000000 +0:86 6.000000 +0:86 0.000000 +0:86 0.000000 +0:86 0.000000 +0:86 6.000000 +0:86 0.000000 +0:86 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) +0:86 true case is null +0:88 Test condition and select (temp void) +0:88 Condition +0:88 Constant: +0:88 true (const bool) +0:88 true case is null 0:? Linker Objects 0:? 'patchIn' (patch in 4-component vector of float) 0:? 'anon@0' (out block{gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 3-element array of float ClipDistance gl_ClipDistance}) @@ -1616,6 +1664,10 @@ ERROR: node is still EOpNull! 0:? 'c3' (global 4X2 matrix of float) 0:? 'd2' (global 1-element array of structure{global float s, global float t}) 0:? 'b5' (global 5-element array of float) +0:? 'single1' (global structure{global int f}) +0:? 'single2' (global structure{global 2-component vector of uint v}) +0:? 'single3' (global structure{global structure{global int f} s1}) +0:? 'single4' (global structure{global structure{global 2-component vector of uint v} s1}) 0:? 'constructed' (const structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) diff --git a/Test/baseResults/300.frag.out b/Test/baseResults/300.frag.out index a0c2615d..6ec58aa1 100644 --- a/Test/baseResults/300.frag.out +++ b/Test/baseResults/300.frag.out @@ -28,7 +28,7 @@ ERROR: 0:102: 'arrays of arrays' : not supported for this version or the enabled ERROR: 0:103: 'arrays of arrays' : not supported for this version or the enabled extensions ERROR: 0:100: 'arrays of arrays' : not supported for this version or the enabled extensions ERROR: 0:100: 'array-of-array of block' : not supported with this profile: es -ERROR: 0:111: 'variable indexing fragment shader ouput array' : not supported with this profile: es +ERROR: 0:111: 'variable indexing fragment shader output array' : not supported with this profile: es ERROR: 0:119: '==' : can't use with samplers or structs containing samplers ERROR: 0:120: '!=' : can't use with samplers or structs containing samplers ERROR: 0:121: '==' : can't use with samplers or structs containing samplers @@ -72,20 +72,20 @@ ERROR: node is still EOpNull! 0:59 1.200000 0:60 move second child to first child (temp lowp float) 0:60 'f' (temp lowp float) -0:60 textureOffset (global lowp float) +0:60 textureOffset (global lowp float, operation at mediump) 0:60 's2DShadow' (uniform lowp sampler2DShadow) 0:60 'c3D' (smooth in lowp 3-component vector of float) 0:60 'ic2D' (flat in mediump 2-component vector of int) 0:60 'c1D' (smooth in lowp float) 0:61 move second child to first child (temp lowp 4-component vector of float) 0:61 'v' (temp lowp 4-component vector of float) -0:61 textureFetch (global lowp 4-component vector of float) +0:61 textureFetch (global lowp 4-component vector of float, operation at mediump) 0:61 's3D' (uniform lowp sampler3D) 0:61 'ic3D' (flat in mediump 3-component vector of int) 0:61 'ic1D' (flat in mediump int) 0:62 move second child to first child (temp lowp 4-component vector of float) 0:62 'v' (temp lowp 4-component vector of float) -0:62 textureFetchOffset (global lowp 4-component vector of float) +0:62 textureFetchOffset (global lowp 4-component vector of float, operation at mediump) 0:62 direct index (temp lowp sampler2D) 0:62 'arrayedSampler' (uniform 5-element array of lowp sampler2D) 0:62 Constant: @@ -96,14 +96,14 @@ ERROR: node is still EOpNull! 0:62 'ic2D' (flat in mediump 2-component vector of int) 0:63 move second child to first child (temp lowp float) 0:63 'f' (temp lowp float) -0:63 textureLodOffset (global lowp float) +0:63 textureLodOffset (global lowp float, operation at mediump) 0:63 's2DShadow' (uniform lowp sampler2DShadow) 0:63 'c3D' (smooth in lowp 3-component vector of float) 0:63 'c1D' (smooth in lowp float) 0:63 'ic2D' (flat in mediump 2-component vector of int) 0:64 move second child to first child (temp lowp 4-component vector of float) 0:64 'v' (temp lowp 4-component vector of float) -0:64 textureProjLodOffset (global lowp 4-component vector of float) +0:64 textureProjLodOffset (global lowp 4-component vector of float, operation at mediump) 0:64 's2D' (uniform lowp sampler2D) 0:64 'c3D' (smooth in lowp 3-component vector of float) 0:64 'c1D' (smooth in lowp float) @@ -117,7 +117,7 @@ ERROR: node is still EOpNull! 0:65 'c3D' (smooth in lowp 3-component vector of float) 0:66 move second child to first child (temp lowp float) 0:66 'f' (temp lowp float) -0:66 textureGradOffset (global lowp float) +0:66 textureGradOffset (global lowp float, operation at mediump) 0:66 's2DArrayShadow' (uniform lowp sampler2DArrayShadow) 0:66 'c4D' (smooth temp lowp 4-component vector of float) 0:66 'c2D' (smooth in lowp 2-component vector of float) @@ -132,7 +132,7 @@ ERROR: node is still EOpNull! 0:67 'c3D' (smooth in lowp 3-component vector of float) 0:68 move second child to first child (temp lowp 4-component vector of float) 0:68 'v' (temp lowp 4-component vector of float) -0:68 textureProjGradOffset (global lowp 4-component vector of float) +0:68 textureProjGradOffset (global lowp 4-component vector of float, operation at mediump) 0:68 's2D' (uniform lowp sampler2D) 0:68 'c3D' (smooth in lowp 3-component vector of float) 0:68 'c2D' (smooth in lowp 2-component vector of float) @@ -152,7 +152,7 @@ ERROR: node is still EOpNull! 0:72 'c2D' (smooth in lowp 2-component vector of float) 0:73 move second child to first child (temp mediump 4-component vector of int) 0:73 'iv' (temp mediump 4-component vector of int) -0:73 textureProjOffset (global lowp 4-component vector of int) +0:73 textureProjOffset (global lowp 4-component vector of int, operation at mediump) 0:73 'is2D' (uniform lowp isampler2D) 0:73 'c4D' (smooth temp lowp 4-component vector of float) 0:73 'ic2D' (flat in mediump 2-component vector of int) @@ -184,7 +184,7 @@ ERROR: node is still EOpNull! 0:77 'c1D' (smooth in lowp float) 0:78 move second child to first child (temp mediump 4-component vector of int) 0:78 'iv' (temp mediump 4-component vector of int) -0:78 textureFetch (global lowp 4-component vector of int) +0:78 textureFetch (global lowp 4-component vector of int, operation at mediump) 0:78 'is2DArray' (uniform lowp isampler2DArray) 0:78 'ic3D' (flat in mediump 3-component vector of int) 0:78 'ic1D' (flat in mediump int) @@ -196,7 +196,7 @@ ERROR: node is still EOpNull! 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) -0:80 textureSize (global highp 2-component vector of int) +0:80 textureSize (global highp 2-component vector of int, operation at lowp) 0:80 'sCubeShadow' (uniform lowp samplerCubeShadow) 0:80 Constant: 0:80 2 (const int) @@ -428,20 +428,20 @@ ERROR: node is still EOpNull! 0:59 1.200000 0:60 move second child to first child (temp lowp float) 0:60 'f' (temp lowp float) -0:60 textureOffset (global lowp float) +0:60 textureOffset (global lowp float, operation at mediump) 0:60 's2DShadow' (uniform lowp sampler2DShadow) 0:60 'c3D' (smooth in lowp 3-component vector of float) 0:60 'ic2D' (flat in mediump 2-component vector of int) 0:60 'c1D' (smooth in lowp float) 0:61 move second child to first child (temp lowp 4-component vector of float) 0:61 'v' (temp lowp 4-component vector of float) -0:61 textureFetch (global lowp 4-component vector of float) +0:61 textureFetch (global lowp 4-component vector of float, operation at mediump) 0:61 's3D' (uniform lowp sampler3D) 0:61 'ic3D' (flat in mediump 3-component vector of int) 0:61 'ic1D' (flat in mediump int) 0:62 move second child to first child (temp lowp 4-component vector of float) 0:62 'v' (temp lowp 4-component vector of float) -0:62 textureFetchOffset (global lowp 4-component vector of float) +0:62 textureFetchOffset (global lowp 4-component vector of float, operation at mediump) 0:62 direct index (temp lowp sampler2D) 0:62 'arrayedSampler' (uniform 5-element array of lowp sampler2D) 0:62 Constant: @@ -452,14 +452,14 @@ ERROR: node is still EOpNull! 0:62 'ic2D' (flat in mediump 2-component vector of int) 0:63 move second child to first child (temp lowp float) 0:63 'f' (temp lowp float) -0:63 textureLodOffset (global lowp float) +0:63 textureLodOffset (global lowp float, operation at mediump) 0:63 's2DShadow' (uniform lowp sampler2DShadow) 0:63 'c3D' (smooth in lowp 3-component vector of float) 0:63 'c1D' (smooth in lowp float) 0:63 'ic2D' (flat in mediump 2-component vector of int) 0:64 move second child to first child (temp lowp 4-component vector of float) 0:64 'v' (temp lowp 4-component vector of float) -0:64 textureProjLodOffset (global lowp 4-component vector of float) +0:64 textureProjLodOffset (global lowp 4-component vector of float, operation at mediump) 0:64 's2D' (uniform lowp sampler2D) 0:64 'c3D' (smooth in lowp 3-component vector of float) 0:64 'c1D' (smooth in lowp float) @@ -473,7 +473,7 @@ ERROR: node is still EOpNull! 0:65 'c3D' (smooth in lowp 3-component vector of float) 0:66 move second child to first child (temp lowp float) 0:66 'f' (temp lowp float) -0:66 textureGradOffset (global lowp float) +0:66 textureGradOffset (global lowp float, operation at mediump) 0:66 's2DArrayShadow' (uniform lowp sampler2DArrayShadow) 0:66 'c4D' (smooth temp lowp 4-component vector of float) 0:66 'c2D' (smooth in lowp 2-component vector of float) @@ -488,7 +488,7 @@ ERROR: node is still EOpNull! 0:67 'c3D' (smooth in lowp 3-component vector of float) 0:68 move second child to first child (temp lowp 4-component vector of float) 0:68 'v' (temp lowp 4-component vector of float) -0:68 textureProjGradOffset (global lowp 4-component vector of float) +0:68 textureProjGradOffset (global lowp 4-component vector of float, operation at mediump) 0:68 's2D' (uniform lowp sampler2D) 0:68 'c3D' (smooth in lowp 3-component vector of float) 0:68 'c2D' (smooth in lowp 2-component vector of float) @@ -508,7 +508,7 @@ ERROR: node is still EOpNull! 0:72 'c2D' (smooth in lowp 2-component vector of float) 0:73 move second child to first child (temp mediump 4-component vector of int) 0:73 'iv' (temp mediump 4-component vector of int) -0:73 textureProjOffset (global lowp 4-component vector of int) +0:73 textureProjOffset (global lowp 4-component vector of int, operation at mediump) 0:73 'is2D' (uniform lowp isampler2D) 0:73 'c4D' (smooth temp lowp 4-component vector of float) 0:73 'ic2D' (flat in mediump 2-component vector of int) @@ -540,7 +540,7 @@ ERROR: node is still EOpNull! 0:77 'c1D' (smooth in lowp float) 0:78 move second child to first child (temp mediump 4-component vector of int) 0:78 'iv' (temp mediump 4-component vector of int) -0:78 textureFetch (global lowp 4-component vector of int) +0:78 textureFetch (global lowp 4-component vector of int, operation at mediump) 0:78 'is2DArray' (uniform lowp isampler2DArray) 0:78 'ic3D' (flat in mediump 3-component vector of int) 0:78 'ic1D' (flat in mediump int) @@ -552,7 +552,7 @@ ERROR: node is still EOpNull! 0:80 0 (const int) 0:80 Constant: 0:80 1 (const int) -0:80 textureSize (global highp 2-component vector of int) +0:80 textureSize (global highp 2-component vector of int, operation at lowp) 0:80 'sCubeShadow' (uniform lowp samplerCubeShadow) 0:80 Constant: 0:80 2 (const int) diff --git a/Test/baseResults/300.vert.out b/Test/baseResults/300.vert.out index 80745abe..ecfa3d50 100644 --- a/Test/baseResults/300.vert.out +++ b/Test/baseResults/300.vert.out @@ -9,7 +9,7 @@ ERROR: 0:12: '' : vertex input cannot be further qualified ERROR: 0:13: '' : interpolation qualifiers must appear before storage and precision qualifiers ERROR: 0:14: '' : in/out must appear before const ERROR: 0:15: '' : precision qualifier must appear as last qualifier -ERROR: 0:16: '' : can only have one interpolation qualifier (flat, smooth, noperspective) +ERROR: 0:16: '' : can only have one interpolation qualifier (flat, smooth, noperspective, __explicitInterpAMD) ERROR: 0:17: 'sample' : Reserved word. ERROR: 0:17: '' : can only have one auxiliary qualifier (centroid, patch, and sample) ERROR: 0:18: 'uniform' : too many storage qualifiers @@ -175,7 +175,7 @@ ERROR: node is still EOpNull! 0:120 Sequence 0:120 move second child to first child (temp highp 2-component vector of int) 0:120 'x1' (temp highp 2-component vector of int) -0:120 textureSize (global highp 2-component vector of int) +0:120 textureSize (global highp 2-component vector of int, operation at lowp) 0:120 's2D' (uniform lowp sampler2D) 0:120 Constant: 0:120 2 (const int) @@ -184,7 +184,7 @@ ERROR: node is still EOpNull! 0:122 Sequence 0:122 move second child to first child (temp highp 3-component vector of int) 0:122 'x3' (temp highp 3-component vector of int) -0:122 textureSize (global highp 3-component vector of int) +0:122 textureSize (global highp 3-component vector of int, operation at lowp) 0:122 's2DAS' (uniform lowp sampler2DArrayShadow) 0:122 Constant: 0:122 -1 (const int) @@ -193,7 +193,7 @@ ERROR: node is still EOpNull! 0:124 Sequence 0:124 move second child to first child (temp highp 4-component vector of float) 0:124 'x4' (temp highp 4-component vector of float) -0:124 texture (global lowp 4-component vector of float) +0:124 texture (global lowp 4-component vector of float, operation at highp) 0:124 's2D' (uniform lowp sampler2D) 0:124 'c2D' (in highp 2-component vector of float) 0:125 Constant: @@ -217,7 +217,7 @@ ERROR: node is still EOpNull! 0:128 Sequence 0:128 move second child to first child (temp highp float) 0:128 'x6' (temp highp float) -0:128 textureProjGradOffset (global lowp float) +0:128 textureProjGradOffset (global lowp float, operation at highp) 0:128 's2DS' (uniform lowp sampler2DShadow) 0:128 'invIn' (invariant in highp 4-component vector of float) 0:128 Constant: @@ -459,7 +459,7 @@ ERROR: node is still EOpNull! 0:120 Sequence 0:120 move second child to first child (temp highp 2-component vector of int) 0:120 'x1' (temp highp 2-component vector of int) -0:120 textureSize (global highp 2-component vector of int) +0:120 textureSize (global highp 2-component vector of int, operation at lowp) 0:120 's2D' (uniform lowp sampler2D) 0:120 Constant: 0:120 2 (const int) @@ -468,7 +468,7 @@ ERROR: node is still EOpNull! 0:122 Sequence 0:122 move second child to first child (temp highp 3-component vector of int) 0:122 'x3' (temp highp 3-component vector of int) -0:122 textureSize (global highp 3-component vector of int) +0:122 textureSize (global highp 3-component vector of int, operation at lowp) 0:122 's2DAS' (uniform lowp sampler2DArrayShadow) 0:122 Constant: 0:122 -1 (const int) @@ -477,7 +477,7 @@ ERROR: node is still EOpNull! 0:124 Sequence 0:124 move second child to first child (temp highp 4-component vector of float) 0:124 'x4' (temp highp 4-component vector of float) -0:124 texture (global lowp 4-component vector of float) +0:124 texture (global lowp 4-component vector of float, operation at highp) 0:124 's2D' (uniform lowp sampler2D) 0:124 'c2D' (in highp 2-component vector of float) 0:125 Constant: @@ -501,7 +501,7 @@ ERROR: node is still EOpNull! 0:128 Sequence 0:128 move second child to first child (temp highp float) 0:128 'x6' (temp highp float) -0:128 textureProjGradOffset (global lowp float) +0:128 textureProjGradOffset (global lowp float, operation at highp) 0:128 's2DS' (uniform lowp sampler2DShadow) 0:128 'invIn' (invariant in highp 4-component vector of float) 0:128 Constant: diff --git a/Test/baseResults/300BuiltIns.frag.out b/Test/baseResults/300BuiltIns.frag.out index c2f12c92..a3bab690 100644 --- a/Test/baseResults/300BuiltIns.frag.out +++ b/Test/baseResults/300BuiltIns.frag.out @@ -128,12 +128,12 @@ ERROR: node is still EOpNull! 0:52 Sequence 0:52 move second child to first child (temp 2-component vector of bool) 0:52 'b10' (temp 2-component vector of bool) -0:52 isnan (global 2-component vector of bool) +0:52 isnan (global 2-component vector of bool, operation at mediump) 0:52 'v2a' (global mediump 2-component vector of float) 0:53 Sequence 0:53 move second child to first child (temp 4-component vector of bool) 0:53 'b11' (temp 4-component vector of bool) -0:53 isinf (global 4-component vector of bool) +0:53 isinf (global 4-component vector of bool, operation at mediump) 0:53 'v4' (global mediump 4-component vector of float) 0:56 Sequence 0:56 move second child to first child (temp highp int) @@ -158,17 +158,17 @@ ERROR: node is still EOpNull! 0:62 Sequence 0:62 move second child to first child (temp highp uint) 0:62 'u19' (temp mediump uint) -0:62 packSnorm2x16 (global highp uint) +0:62 packSnorm2x16 (global highp uint, operation at mediump) 0:62 'v2a' (global mediump 2-component vector of float) 0:63 Sequence -0:63 move second child to first child (temp mediump 2-component vector of float) +0:63 move second child to first child (temp highp 2-component vector of float) 0:63 'v20' (temp mediump 2-component vector of float) -0:63 unpackSnorm2x16 (global mediump 2-component vector of float) +0:63 unpackSnorm2x16 (global highp 2-component vector of float) 0:63 'uy' (global mediump uint) 0:64 Sequence 0:64 move second child to first child (temp highp uint) 0:64 'u15' (temp mediump uint) -0:64 packUnorm2x16 (global highp uint) +0:64 packUnorm2x16 (global highp uint, operation at mediump) 0:64 'v2a' (global mediump 2-component vector of float) 0:65 Sequence 0:65 move second child to first child (temp highp 2-component vector of float) @@ -178,12 +178,12 @@ ERROR: node is still EOpNull! 0:66 Sequence 0:66 move second child to first child (temp highp uint) 0:66 'u17' (temp mediump uint) -0:66 packHalf2x16 (global highp uint) +0:66 packHalf2x16 (global highp uint, operation at mediump) 0:66 'v2b' (global mediump 2-component vector of float) 0:67 Sequence 0:67 move second child to first child (temp mediump 2-component vector of float) 0:67 'v18' (temp mediump 2-component vector of float) -0:67 unpackHalf2x16 (global mediump 2-component vector of float) +0:67 unpackHalf2x16 (global mediump 2-component vector of float, operation at highp) 0:67 'uy' (global mediump uint) 0:70 Constant: 0:70 0.000000 @@ -335,12 +335,12 @@ ERROR: node is still EOpNull! 0:52 Sequence 0:52 move second child to first child (temp 2-component vector of bool) 0:52 'b10' (temp 2-component vector of bool) -0:52 isnan (global 2-component vector of bool) +0:52 isnan (global 2-component vector of bool, operation at mediump) 0:52 'v2a' (global mediump 2-component vector of float) 0:53 Sequence 0:53 move second child to first child (temp 4-component vector of bool) 0:53 'b11' (temp 4-component vector of bool) -0:53 isinf (global 4-component vector of bool) +0:53 isinf (global 4-component vector of bool, operation at mediump) 0:53 'v4' (global mediump 4-component vector of float) 0:56 Sequence 0:56 move second child to first child (temp highp int) @@ -365,17 +365,17 @@ ERROR: node is still EOpNull! 0:62 Sequence 0:62 move second child to first child (temp highp uint) 0:62 'u19' (temp mediump uint) -0:62 packSnorm2x16 (global highp uint) +0:62 packSnorm2x16 (global highp uint, operation at mediump) 0:62 'v2a' (global mediump 2-component vector of float) 0:63 Sequence -0:63 move second child to first child (temp mediump 2-component vector of float) +0:63 move second child to first child (temp highp 2-component vector of float) 0:63 'v20' (temp mediump 2-component vector of float) -0:63 unpackSnorm2x16 (global mediump 2-component vector of float) +0:63 unpackSnorm2x16 (global highp 2-component vector of float) 0:63 'uy' (global mediump uint) 0:64 Sequence 0:64 move second child to first child (temp highp uint) 0:64 'u15' (temp mediump uint) -0:64 packUnorm2x16 (global highp uint) +0:64 packUnorm2x16 (global highp uint, operation at mediump) 0:64 'v2a' (global mediump 2-component vector of float) 0:65 Sequence 0:65 move second child to first child (temp highp 2-component vector of float) @@ -385,12 +385,12 @@ ERROR: node is still EOpNull! 0:66 Sequence 0:66 move second child to first child (temp highp uint) 0:66 'u17' (temp mediump uint) -0:66 packHalf2x16 (global highp uint) +0:66 packHalf2x16 (global highp uint, operation at mediump) 0:66 'v2b' (global mediump 2-component vector of float) 0:67 Sequence 0:67 move second child to first child (temp mediump 2-component vector of float) 0:67 'v18' (temp mediump 2-component vector of float) -0:67 unpackHalf2x16 (global mediump 2-component vector of float) +0:67 unpackHalf2x16 (global mediump 2-component vector of float, operation at highp) 0:67 'uy' (global mediump uint) 0:70 Constant: 0:70 0.000000 diff --git a/Test/baseResults/310.comp.out b/Test/baseResults/310.comp.out index b56f0702..9a5e4e89 100644 --- a/Test/baseResults/310.comp.out +++ b/Test/baseResults/310.comp.out @@ -122,7 +122,7 @@ ERROR: node is still EOpNull! 0:61 2 (const int) 0:61 Constant: 0:61 4.700000 -0:62 array length (temp highp int) +0:62 array length (temp int) 0:62 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) 0:62 'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) 0:62 Constant: @@ -178,9 +178,9 @@ ERROR: node is still EOpNull! 0:92 0 (const int) 0:92 0 (const int) 0:92 0 (const int) -0:93 imageLoad (global highp 4-component vector of float) +0:93 imageLoad (global mediump 4-component vector of float) 0:93 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D) -0:93 Construct ivec2 (temp highp 2-component vector of int) +0:93 Construct ivec2 (temp mediump 2-component vector of int) 0:93 'i' (temp highp int) 0:93 'i' (temp highp int) 0:94 imageLoad (global highp 4-component vector of int) @@ -549,7 +549,7 @@ ERROR: node is still EOpNull! 0:61 2 (const int) 0:61 Constant: 0:61 4.700000 -0:62 array length (temp highp int) +0:62 array length (temp int) 0:62 values: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of highp float) 0:62 'ro' (layout(column_major shared ) readonly buffer block{layout(column_major shared ) buffer highp int value, layout(column_major shared ) buffer implicitly-sized array of highp float values}) 0:62 Constant: @@ -605,9 +605,9 @@ ERROR: node is still EOpNull! 0:92 0 (const int) 0:92 0 (const int) 0:92 0 (const int) -0:93 imageLoad (global highp 4-component vector of float) +0:93 imageLoad (global mediump 4-component vector of float) 0:93 'img2Drgba' (layout(rgba32f ) readonly uniform mediump image2D) -0:93 Construct ivec2 (temp highp 2-component vector of int) +0:93 Construct ivec2 (temp mediump 2-component vector of int) 0:93 'i' (temp highp int) 0:93 'i' (temp highp int) 0:94 imageLoad (global highp 4-component vector of int) diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out index 905a9ca9..6cfd3f44 100644 --- a/Test/baseResults/310.frag.out +++ b/Test/baseResults/310.frag.out @@ -353,7 +353,7 @@ ERROR: node is still EOpNull! 0:101 3 (const int) 0:102 move second child to first child (temp highp 2-component vector of int) 0:102 'v2' (temp highp 2-component vector of int) -0:102 textureSize (global highp 2-component vector of int) +0:102 textureSize (global highp 2-component vector of int, operation at mediump) 0:102 's2dms' (uniform mediump sampler2DMS) 0:103 move second child to first child (temp highp 2-component vector of int) 0:103 'v2' (temp highp 2-component vector of int) @@ -361,19 +361,19 @@ ERROR: node is still EOpNull! 0:103 'i2D' (layout(binding=2 ) writeonly uniform highp image2D) 0:104 move second child to first child (temp highp 3-component vector of int) 0:104 'v3' (temp highp 3-component vector of int) -0:104 imageQuerySize (global highp 3-component vector of int) +0:104 imageQuerySize (global highp 3-component vector of int, operation at mediump) 0:104 'i3D' (layout(binding=4 ) readonly uniform mediump image3D) 0:105 move second child to first child (temp highp 2-component vector of int) 0:105 'v2' (temp highp 2-component vector of int) -0:105 imageQuerySize (global highp 2-component vector of int) +0:105 imageQuerySize (global highp 2-component vector of int, operation at mediump) 0:105 'iCube' (layout(binding=5 ) uniform mediump imageCube) 0:106 move second child to first child (temp highp 3-component vector of int) 0:106 'v3' (temp highp 3-component vector of int) -0:106 imageQuerySize (global highp 3-component vector of int) +0:106 imageQuerySize (global highp 3-component vector of int, operation at mediump) 0:106 'i2DA' (layout(binding=6 ) uniform mediump image2DArray) 0:107 move second child to first child (temp highp 2-component vector of int) 0:107 'v2' (temp highp 2-component vector of int) -0:107 imageQuerySize (global highp 2-component vector of int) +0:107 imageQuerySize (global highp 2-component vector of int, operation at mediump) 0:107 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform mediump image2D) 0:165 Function Definition: fooIO( (global void) 0:165 Function Parameters: @@ -1234,7 +1234,7 @@ ERROR: node is still EOpNull! 0:101 3 (const int) 0:102 move second child to first child (temp highp 2-component vector of int) 0:102 'v2' (temp highp 2-component vector of int) -0:102 textureSize (global highp 2-component vector of int) +0:102 textureSize (global highp 2-component vector of int, operation at mediump) 0:102 's2dms' (uniform mediump sampler2DMS) 0:103 move second child to first child (temp highp 2-component vector of int) 0:103 'v2' (temp highp 2-component vector of int) @@ -1242,19 +1242,19 @@ ERROR: node is still EOpNull! 0:103 'i2D' (layout(binding=2 ) writeonly uniform highp image2D) 0:104 move second child to first child (temp highp 3-component vector of int) 0:104 'v3' (temp highp 3-component vector of int) -0:104 imageQuerySize (global highp 3-component vector of int) +0:104 imageQuerySize (global highp 3-component vector of int, operation at mediump) 0:104 'i3D' (layout(binding=4 ) readonly uniform mediump image3D) 0:105 move second child to first child (temp highp 2-component vector of int) 0:105 'v2' (temp highp 2-component vector of int) -0:105 imageQuerySize (global highp 2-component vector of int) +0:105 imageQuerySize (global highp 2-component vector of int, operation at mediump) 0:105 'iCube' (layout(binding=5 ) uniform mediump imageCube) 0:106 move second child to first child (temp highp 3-component vector of int) 0:106 'v3' (temp highp 3-component vector of int) -0:106 imageQuerySize (global highp 3-component vector of int) +0:106 imageQuerySize (global highp 3-component vector of int, operation at mediump) 0:106 'i2DA' (layout(binding=6 ) uniform mediump image2DArray) 0:107 move second child to first child (temp highp 2-component vector of int) 0:107 'v2' (temp highp 2-component vector of int) -0:107 imageQuerySize (global highp 2-component vector of int) +0:107 imageQuerySize (global highp 2-component vector of int, operation at mediump) 0:107 'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform mediump image2D) 0:165 Function Definition: fooIO( (global void) 0:165 Function Parameters: diff --git a/Test/baseResults/310.vert.out b/Test/baseResults/310.vert.out index 678c3e12..84a50e89 100644 --- a/Test/baseResults/310.vert.out +++ b/Test/baseResults/310.vert.out @@ -125,12 +125,12 @@ ERROR: node is still EOpNull! 0:17 'u1' (temp highp uint) 0:17 'u1' (temp highp uint) 0:17 'u1' (temp highp uint) -0:19 uMulExtended (global void) +0:19 uMulExtended (global highp void) 0:19 'u4' (temp highp 4-component vector of uint) 0:19 'u4' (temp highp 4-component vector of uint) 0:19 'u4' (temp highp 4-component vector of uint) 0:19 'u4' (temp highp 4-component vector of uint) -0:21 iMulExtended (global void) +0:21 iMulExtended (global highp void) 0:21 'i4' (temp highp 4-component vector of int) 0:21 'i4' (temp highp 4-component vector of int) 0:21 'i4' (temp highp 4-component vector of int) @@ -179,27 +179,27 @@ ERROR: node is still EOpNull! 0:31 'u4' (temp highp 4-component vector of uint) 0:32 move second child to first child (temp highp int) 0:32 'i1' (temp highp int) -0:32 bitCount (global highp int) +0:32 bitCount (global lowp int, operation at highp) 0:32 'i1' (temp highp int) 0:33 move second child to first child (temp highp 3-component vector of int) 0:33 'i3' (temp highp 3-component vector of int) -0:33 bitCount (global highp 3-component vector of int) +0:33 bitCount (global lowp 3-component vector of int, operation at highp) 0:33 'u3' (temp highp 3-component vector of uint) 0:34 move second child to first child (temp highp 2-component vector of int) 0:34 'i2' (temp highp 2-component vector of int) -0:34 findLSB (global highp 2-component vector of int) +0:34 findLSB (global lowp 2-component vector of int, operation at highp) 0:34 'i2' (temp highp 2-component vector of int) 0:35 move second child to first child (temp highp 4-component vector of int) 0:35 'i4' (temp highp 4-component vector of int) -0:35 findLSB (global highp 4-component vector of int) +0:35 findLSB (global lowp 4-component vector of int, operation at highp) 0:35 'u4' (temp highp 4-component vector of uint) 0:36 move second child to first child (temp highp int) 0:36 'i1' (temp highp int) -0:36 findMSB (global highp int) +0:36 findMSB (global lowp int, operation at highp) 0:36 'i1' (temp highp int) 0:37 move second child to first child (temp highp 2-component vector of int) 0:37 'i2' (temp highp 2-component vector of int) -0:37 findMSB (global highp 2-component vector of int) +0:37 findMSB (global lowp 2-component vector of int, operation at highp) 0:37 'u2' (temp highp 2-component vector of uint) 0:40 move second child to first child (temp highp 3-component vector of float) 0:40 'v3' (temp highp 3-component vector of float) @@ -213,19 +213,19 @@ ERROR: node is still EOpNull! 0:42 'i2' (temp highp 2-component vector of int) 0:45 move second child to first child (temp highp uint) 0:45 'u1' (temp highp uint) -0:45 PackUnorm4x8 (global highp uint) +0:45 PackUnorm4x8 (global highp uint, operation at mediump) 0:45 'v4' (temp mediump 4-component vector of float) 0:46 move second child to first child (temp highp uint) 0:46 'u1' (temp highp uint) -0:46 PackSnorm4x8 (global highp uint) +0:46 PackSnorm4x8 (global highp uint, operation at mediump) 0:46 'v4' (temp mediump 4-component vector of float) -0:47 move second child to first child (temp highp 4-component vector of float) +0:47 move second child to first child (temp mediump 4-component vector of float) 0:47 'v4' (temp mediump 4-component vector of float) -0:47 UnpackUnorm4x8 (global highp 4-component vector of float) +0:47 UnpackUnorm4x8 (global mediump 4-component vector of float, operation at highp) 0:47 'u1' (temp highp uint) -0:48 move second child to first child (temp highp 4-component vector of float) +0:48 move second child to first child (temp mediump 4-component vector of float) 0:48 'v4' (temp mediump 4-component vector of float) -0:48 UnpackSnorm4x8 (global highp 4-component vector of float) +0:48 UnpackSnorm4x8 (global mediump 4-component vector of float, operation at highp) 0:48 'u1' (temp highp uint) 0:60 Function Definition: foo( (global void) 0:60 Function Parameters: @@ -340,7 +340,7 @@ ERROR: node is still EOpNull! 0:165 0.100000 0:165 Convert float to int (temp lowp 2-component vector of int) 0:165 'inf' (in highp 2-component vector of float) -0:166 textureGatherOffsets (global lowp 4-component vector of float) +0:166 textureGatherOffsets (global lowp 4-component vector of float, operation at highp) 0:166 direct index (temp lowp sampler2D) 0:166 'sArray' (uniform 4-element array of lowp sampler2D) 0:166 Constant: @@ -404,7 +404,7 @@ ERROR: node is still EOpNull! 0:180 0.100000 0:180 Convert float to int (temp lowp 2-component vector of int) 0:180 'inf' (in highp 2-component vector of float) -0:181 textureGatherOffsets (global lowp 4-component vector of float) +0:181 textureGatherOffsets (global lowp 4-component vector of float, operation at highp) 0:181 direct index (temp lowp sampler2D) 0:181 'sArray' (uniform 4-element array of lowp sampler2D) 0:181 Constant: @@ -421,7 +421,7 @@ ERROR: node is still EOpNull! 0:181 0 (const int) 0:181 0 (const int) 0:181 0 (const int) -0:182 textureGatherOffsets (global lowp 4-component vector of float) +0:182 textureGatherOffsets (global lowp 4-component vector of float, operation at highp) 0:182 direct index (temp lowp sampler2D) 0:182 'sArray' (uniform 4-element array of lowp sampler2D) 0:182 Constant: @@ -1056,12 +1056,12 @@ ERROR: node is still EOpNull! 0:17 'u1' (temp highp uint) 0:17 'u1' (temp highp uint) 0:17 'u1' (temp highp uint) -0:19 uMulExtended (global void) +0:19 uMulExtended (global highp void) 0:19 'u4' (temp highp 4-component vector of uint) 0:19 'u4' (temp highp 4-component vector of uint) 0:19 'u4' (temp highp 4-component vector of uint) 0:19 'u4' (temp highp 4-component vector of uint) -0:21 iMulExtended (global void) +0:21 iMulExtended (global highp void) 0:21 'i4' (temp highp 4-component vector of int) 0:21 'i4' (temp highp 4-component vector of int) 0:21 'i4' (temp highp 4-component vector of int) @@ -1110,27 +1110,27 @@ ERROR: node is still EOpNull! 0:31 'u4' (temp highp 4-component vector of uint) 0:32 move second child to first child (temp highp int) 0:32 'i1' (temp highp int) -0:32 bitCount (global highp int) +0:32 bitCount (global lowp int, operation at highp) 0:32 'i1' (temp highp int) 0:33 move second child to first child (temp highp 3-component vector of int) 0:33 'i3' (temp highp 3-component vector of int) -0:33 bitCount (global highp 3-component vector of int) +0:33 bitCount (global lowp 3-component vector of int, operation at highp) 0:33 'u3' (temp highp 3-component vector of uint) 0:34 move second child to first child (temp highp 2-component vector of int) 0:34 'i2' (temp highp 2-component vector of int) -0:34 findLSB (global highp 2-component vector of int) +0:34 findLSB (global lowp 2-component vector of int, operation at highp) 0:34 'i2' (temp highp 2-component vector of int) 0:35 move second child to first child (temp highp 4-component vector of int) 0:35 'i4' (temp highp 4-component vector of int) -0:35 findLSB (global highp 4-component vector of int) +0:35 findLSB (global lowp 4-component vector of int, operation at highp) 0:35 'u4' (temp highp 4-component vector of uint) 0:36 move second child to first child (temp highp int) 0:36 'i1' (temp highp int) -0:36 findMSB (global highp int) +0:36 findMSB (global lowp int, operation at highp) 0:36 'i1' (temp highp int) 0:37 move second child to first child (temp highp 2-component vector of int) 0:37 'i2' (temp highp 2-component vector of int) -0:37 findMSB (global highp 2-component vector of int) +0:37 findMSB (global lowp 2-component vector of int, operation at highp) 0:37 'u2' (temp highp 2-component vector of uint) 0:40 move second child to first child (temp highp 3-component vector of float) 0:40 'v3' (temp highp 3-component vector of float) @@ -1144,19 +1144,19 @@ ERROR: node is still EOpNull! 0:42 'i2' (temp highp 2-component vector of int) 0:45 move second child to first child (temp highp uint) 0:45 'u1' (temp highp uint) -0:45 PackUnorm4x8 (global highp uint) +0:45 PackUnorm4x8 (global highp uint, operation at mediump) 0:45 'v4' (temp mediump 4-component vector of float) 0:46 move second child to first child (temp highp uint) 0:46 'u1' (temp highp uint) -0:46 PackSnorm4x8 (global highp uint) +0:46 PackSnorm4x8 (global highp uint, operation at mediump) 0:46 'v4' (temp mediump 4-component vector of float) -0:47 move second child to first child (temp highp 4-component vector of float) +0:47 move second child to first child (temp mediump 4-component vector of float) 0:47 'v4' (temp mediump 4-component vector of float) -0:47 UnpackUnorm4x8 (global highp 4-component vector of float) +0:47 UnpackUnorm4x8 (global mediump 4-component vector of float, operation at highp) 0:47 'u1' (temp highp uint) -0:48 move second child to first child (temp highp 4-component vector of float) +0:48 move second child to first child (temp mediump 4-component vector of float) 0:48 'v4' (temp mediump 4-component vector of float) -0:48 UnpackSnorm4x8 (global highp 4-component vector of float) +0:48 UnpackSnorm4x8 (global mediump 4-component vector of float, operation at highp) 0:48 'u1' (temp highp uint) 0:60 Function Definition: foo( (global void) 0:60 Function Parameters: @@ -1271,7 +1271,7 @@ ERROR: node is still EOpNull! 0:165 0.100000 0:165 Convert float to int (temp lowp 2-component vector of int) 0:165 'inf' (in highp 2-component vector of float) -0:166 textureGatherOffsets (global lowp 4-component vector of float) +0:166 textureGatherOffsets (global lowp 4-component vector of float, operation at highp) 0:166 direct index (temp lowp sampler2D) 0:166 'sArray' (uniform 4-element array of lowp sampler2D) 0:166 Constant: @@ -1335,7 +1335,7 @@ ERROR: node is still EOpNull! 0:180 0.100000 0:180 Convert float to int (temp lowp 2-component vector of int) 0:180 'inf' (in highp 2-component vector of float) -0:181 textureGatherOffsets (global lowp 4-component vector of float) +0:181 textureGatherOffsets (global lowp 4-component vector of float, operation at highp) 0:181 direct index (temp lowp sampler2D) 0:181 'sArray' (uniform 4-element array of lowp sampler2D) 0:181 Constant: @@ -1352,7 +1352,7 @@ ERROR: node is still EOpNull! 0:181 0 (const int) 0:181 0 (const int) 0:181 0 (const int) -0:182 textureGatherOffsets (global lowp 4-component vector of float) +0:182 textureGatherOffsets (global lowp 4-component vector of float, operation at highp) 0:182 direct index (temp lowp sampler2D) 0:182 'sArray' (uniform 4-element array of lowp sampler2D) 0:182 Constant: diff --git a/Test/baseResults/310AofA.vert.out b/Test/baseResults/310AofA.vert.out index 40c43218..83f105ca 100644 --- a/Test/baseResults/310AofA.vert.out +++ b/Test/baseResults/310AofA.vert.out @@ -310,7 +310,7 @@ ERROR: node is still EOpNull! 0:96 1 (const int) 0:98 Constant: 0:98 7 (const int) -0:99 array length (temp highp int) +0:99 array length (temp int) 0:99 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float) 0:99 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v}) 0:99 'name3' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v}) @@ -622,7 +622,7 @@ ERROR: node is still EOpNull! 0:96 1 (const int) 0:98 Constant: 0:98 7 (const int) -0:99 array length (temp highp int) +0:99 array length (temp int) 0:99 v: direct index for structure (layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float) 0:99 direct index (layout(column_major shared ) temp block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v}) 0:99 'name3' (layout(column_major shared ) buffer 3-element array of block{layout(column_major shared ) buffer highp float u, layout(column_major shared ) buffer implicitly-sized array of 7-element array of highp 4-component vector of float v}) diff --git a/Test/baseResults/400.vert.out b/Test/baseResults/400.vert.out index 946f21d5..2b0d63da 100755 --- a/Test/baseResults/400.vert.out +++ b/Test/baseResults/400.vert.out @@ -3,13 +3,288 @@ Warning, version 400 is not yet complete; most version-specific features are pre 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 @@ Linked vertex stage: 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.frag.out b/Test/baseResults/420.frag.out index 0697b52b..784cdb4b 100644 --- a/Test/baseResults/420.frag.out +++ b/Test/baseResults/420.frag.out @@ -3,6 +3,7 @@ Warning, version 420 is not yet complete; most version-specific features are pre ERROR: 0:4: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth ERROR: 0:11: 'layout qualifier' : can only apply depth layout to gl_FragDepth ERROR: 0:12: 'gl_FragDepth' : cannot redeclare after use +WARNING: 0:14: 'atomic_uint' : implicitly sized atomic_uint array treated as having one element for tracking the default offset ERROR: 3 compilation errors. No code generated. @@ -20,6 +21,7 @@ ERROR: node is still EOpNull! 0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) 0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) 0:? 'depth' (smooth in float) +0:? 'a' (layout(binding=0 offset=0 ) uniform implicitly-sized array of atomic_uint) Linked fragment stage: @@ -39,4 +41,5 @@ ERROR: node is still EOpNull! 0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) 0:? 'gl_FragDepth' (gl_FragDepth float FragDepth) 0:? 'depth' (smooth in float) +0:? 'a' (layout(binding=0 offset=0 ) uniform 1-element array of atomic_uint) diff --git a/Test/baseResults/420.geom.out b/Test/baseResults/420.geom.out index 416df139..625feea7 100644 --- a/Test/baseResults/420.geom.out +++ b/Test/baseResults/420.geom.out @@ -132,7 +132,7 @@ ERROR: node is still EOpNull! 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.tese.out b/Test/baseResults/420.tese.out index fb9bc201..b8379d15 100644 --- a/Test/baseResults/420.tese.out +++ b/Test/baseResults/420.tese.out @@ -12,7 +12,7 @@ ERROR: 0:29: 'const 2-element array of 4-component vector of float' : cannot con ERROR: 0:29: '=' : cannot convert from 'const float' to 'global 2-element array of 4-component vector of float' ERROR: 0:30: 'initializer list' : wrong number of matrix columns: temp 4X2 matrix of float ERROR: 0:40: 'constructor' : cannot convert parameter 1 from 'temp float' to 'temp structure{global float s, global float t}' -ERROR: 0:58: 'initializer list' : wrong number of structure members +ERROR: 0:70: 'initializer list' : wrong number of structure members ERROR: 13 compilation errors. No code generated. @@ -50,51 +50,73 @@ ERROR: node is still EOpNull! 0:42 5.000000 0:42 5.200000 0:42 1.100000 -0:67 Sequence -0:67 move second child to first child (temp 3-component vector of float) -0:67 'av3' (global 3-component vector of float) -0:67 Construct vec3 (global 3-component vector of float) -0:67 'vc1' (global float) -0:67 'vc2' (global float) -0:67 'vc3' (global float) -0:68 Sequence -0:68 move second child to first child (temp 3-component vector of float) -0:68 'bv3' (global 3-component vector of float) -0:68 Construct vec3 (temp 3-component vector of float) -0:68 'vc1' (global float) -0:68 'vc2' (global float) -0:68 'vc3' (global float) -0:70 Function Definition: main( (global void) -0:70 Function Parameters: -0:72 Sequence -0:72 MemoryBarrier (global void) -0:74 Test condition and select (temp void) -0:74 Condition -0:74 Compare Equal (temp bool) -0:74 Constant: -0:74 1 (const uint) -0:74 2 (const uint) -0:74 3.000000 -0:74 4.000000 -0:74 0.000000 -0:74 0.000000 -0:74 0.000000 -0:74 4.000000 -0:74 0.000000 -0:74 5.000000 -0:74 6.000000 -0:74 0.000000 -0:74 0.000000 -0:74 0.000000 -0:74 6.000000 -0:74 0.000000 -0:74 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) -0:74 true case is null -0:76 Test condition and select (temp void) -0:76 Condition -0:76 Constant: -0:76 true (const bool) -0:76 true case is null +0:55 Sequence +0:55 move second child to first child (temp structure{global int f}) +0:55 'single1' (global structure{global int f}) +0:55 Constant: +0:55 10 (const int) +0:58 Sequence +0:58 move second child to first child (temp structure{global 2-component vector of uint v}) +0:58 'single2' (global structure{global 2-component vector of uint v}) +0:58 Constant: +0:58 1 (const uint) +0:58 2 (const uint) +0:61 Sequence +0:61 move second child to first child (temp structure{global structure{global int f} s1}) +0:61 'single3' (global structure{global structure{global int f} s1}) +0:61 Constant: +0:61 3 (const int) +0:64 Sequence +0:64 move second child to first child (temp structure{global structure{global 2-component vector of uint v} s1}) +0:64 'single4' (global structure{global structure{global 2-component vector of uint v} s1}) +0:64 Constant: +0:64 4 (const uint) +0:64 5 (const uint) +0:79 Sequence +0:79 move second child to first child (temp 3-component vector of float) +0:79 'av3' (global 3-component vector of float) +0:79 Construct vec3 (global 3-component vector of float) +0:79 'vc1' (global float) +0:79 'vc2' (global float) +0:79 'vc3' (global float) +0:80 Sequence +0:80 move second child to first child (temp 3-component vector of float) +0:80 'bv3' (global 3-component vector of float) +0:80 Construct vec3 (temp 3-component vector of float) +0:80 'vc1' (global float) +0:80 'vc2' (global float) +0:80 'vc3' (global float) +0:82 Function Definition: main( (global void) +0:82 Function Parameters: +0:84 Sequence +0:84 MemoryBarrier (global void) +0:86 Test condition and select (temp void) +0:86 Condition +0:86 Compare Equal (temp bool) +0:86 Constant: +0:86 1 (const uint) +0:86 2 (const uint) +0:86 3.000000 +0:86 4.000000 +0:86 0.000000 +0:86 0.000000 +0:86 0.000000 +0:86 4.000000 +0:86 0.000000 +0:86 5.000000 +0:86 6.000000 +0:86 0.000000 +0:86 0.000000 +0:86 0.000000 +0:86 6.000000 +0:86 0.000000 +0:86 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) +0:86 true case is null +0:88 Test condition and select (temp void) +0:88 Condition +0:88 Constant: +0:88 true (const bool) +0:88 true case is null 0:? Linker Objects 0:? 'a' (const 2X2 matrix of float) 0:? 1.000000 @@ -120,6 +142,10 @@ ERROR: node is still EOpNull! 0:? 'c3' (global 4X2 matrix of float) 0:? 'd2' (global implicitly-sized array of structure{global float s, global float t}) 0:? 'b5' (global 5-element array of float) +0:? 'single1' (global structure{global int f}) +0:? 'single2' (global structure{global 2-component vector of uint v}) +0:? 'single3' (global structure{global structure{global int f} s1}) +0:? 'single4' (global structure{global structure{global 2-component vector of uint v} s1}) 0:? 'constructed' (const structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) @@ -200,51 +226,73 @@ ERROR: node is still EOpNull! 0:42 5.000000 0:42 5.200000 0:42 1.100000 -0:67 Sequence -0:67 move second child to first child (temp 3-component vector of float) -0:67 'av3' (global 3-component vector of float) -0:67 Construct vec3 (global 3-component vector of float) -0:67 'vc1' (global float) -0:67 'vc2' (global float) -0:67 'vc3' (global float) -0:68 Sequence -0:68 move second child to first child (temp 3-component vector of float) -0:68 'bv3' (global 3-component vector of float) -0:68 Construct vec3 (temp 3-component vector of float) -0:68 'vc1' (global float) -0:68 'vc2' (global float) -0:68 'vc3' (global float) -0:70 Function Definition: main( (global void) -0:70 Function Parameters: -0:72 Sequence -0:72 MemoryBarrier (global void) -0:74 Test condition and select (temp void) -0:74 Condition -0:74 Compare Equal (temp bool) -0:74 Constant: -0:74 1 (const uint) -0:74 2 (const uint) -0:74 3.000000 -0:74 4.000000 -0:74 0.000000 -0:74 0.000000 -0:74 0.000000 -0:74 4.000000 -0:74 0.000000 -0:74 5.000000 -0:74 6.000000 -0:74 0.000000 -0:74 0.000000 -0:74 0.000000 -0:74 6.000000 -0:74 0.000000 -0:74 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) -0:74 true case is null -0:76 Test condition and select (temp void) -0:76 Condition -0:76 Constant: -0:76 true (const bool) -0:76 true case is null +0:55 Sequence +0:55 move second child to first child (temp structure{global int f}) +0:55 'single1' (global structure{global int f}) +0:55 Constant: +0:55 10 (const int) +0:58 Sequence +0:58 move second child to first child (temp structure{global 2-component vector of uint v}) +0:58 'single2' (global structure{global 2-component vector of uint v}) +0:58 Constant: +0:58 1 (const uint) +0:58 2 (const uint) +0:61 Sequence +0:61 move second child to first child (temp structure{global structure{global int f} s1}) +0:61 'single3' (global structure{global structure{global int f} s1}) +0:61 Constant: +0:61 3 (const int) +0:64 Sequence +0:64 move second child to first child (temp structure{global structure{global 2-component vector of uint v} s1}) +0:64 'single4' (global structure{global structure{global 2-component vector of uint v} s1}) +0:64 Constant: +0:64 4 (const uint) +0:64 5 (const uint) +0:79 Sequence +0:79 move second child to first child (temp 3-component vector of float) +0:79 'av3' (global 3-component vector of float) +0:79 Construct vec3 (global 3-component vector of float) +0:79 'vc1' (global float) +0:79 'vc2' (global float) +0:79 'vc3' (global float) +0:80 Sequence +0:80 move second child to first child (temp 3-component vector of float) +0:80 'bv3' (global 3-component vector of float) +0:80 Construct vec3 (temp 3-component vector of float) +0:80 'vc1' (global float) +0:80 'vc2' (global float) +0:80 'vc3' (global float) +0:82 Function Definition: main( (global void) +0:82 Function Parameters: +0:84 Sequence +0:84 MemoryBarrier (global void) +0:86 Test condition and select (temp void) +0:86 Condition +0:86 Compare Equal (temp bool) +0:86 Constant: +0:86 1 (const uint) +0:86 2 (const uint) +0:86 3.000000 +0:86 4.000000 +0:86 0.000000 +0:86 0.000000 +0:86 0.000000 +0:86 4.000000 +0:86 0.000000 +0:86 5.000000 +0:86 6.000000 +0:86 0.000000 +0:86 0.000000 +0:86 0.000000 +0:86 6.000000 +0:86 0.000000 +0:86 'curlybad1' (temp structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) +0:86 true case is null +0:88 Test condition and select (temp void) +0:88 Condition +0:88 Constant: +0:88 true (const bool) +0:88 true case is null 0:? Linker Objects 0:? 'a' (const 2X2 matrix of float) 0:? 1.000000 @@ -270,6 +318,10 @@ ERROR: node is still EOpNull! 0:? 'c3' (global 4X2 matrix of float) 0:? 'd2' (global 1-element array of structure{global float s, global float t}) 0:? 'b5' (global 5-element array of float) +0:? 'single1' (global structure{global int f}) +0:? 'single2' (global structure{global 2-component vector of uint v}) +0:? 'single3' (global structure{global structure{global int f} s1}) +0:? 'single4' (global structure{global structure{global 2-component vector of uint v} s1}) 0:? 'constructed' (const structure{global 2-component vector of uint uv2, global 2-element array of structure{global float f, global 2X3 matrix of float m23} s}) 0:? 1 (const uint) 0:? 2 (const uint) diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out index 0f5110cb..5636e7a1 100644 --- a/Test/baseResults/420.vert.out +++ b/Test/baseResults/420.vert.out @@ -4,7 +4,7 @@ ERROR: 0:2: '#version' : must occur first in shader WARNING: 0:3: varying deprecated in version 130; may be removed in future release ERROR: 0:3: 'varying' : no longer supported in core profile; removed in version 420 ERROR: 0:7: '' : vertex input cannot be further qualified -ERROR: 0:11: '' : can only have one interpolation qualifier (flat, smooth, noperspective) +ERROR: 0:11: '' : can only have one interpolation qualifier (flat, smooth, noperspective, __explicitInterpAMD) ERROR: 0:12: '' : can only have one auxiliary qualifier (centroid, patch, and sample) ERROR: 0:13: 'uniform' : too many storage qualifiers ERROR: 0:18: '=' : global const initializers must be constant 'const int' @@ -51,6 +51,7 @@ ERROR: 0:157: 'textureQueryLevels' : no matching overloaded function found ERROR: 0:157: 'assign' : cannot convert from 'const float' to 'temp int' ERROR: 0:158: 'textureQueryLevels' : no matching overloaded function found ERROR: 0:158: 'assign' : cannot convert from 'const float' to 'temp int' +WARNING: 0:161: '[]' : assuming array size of one for compile-time checking of binding numbers for implicitly-sized array ERROR: 50 compilation errors. No code generated. @@ -299,6 +300,7 @@ ERROR: node is still EOpNull! 0:? 'offcheckI' (layout(column_major shared ) uniform block{layout(column_major shared offset=16 ) uniform int foo}) 0:? 'samp1D' (uniform sampler1D) 0:? 'samp1Ds' (uniform sampler1DShadow) +0:? 'badArray' (layout(binding=0 ) writeonly uniform implicitly-sized array of image1D) 0:? 'gl_VertexID' (gl_VertexId int VertexId) 0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) @@ -551,6 +553,7 @@ ERROR: node is still EOpNull! 0:? 'offcheckI' (layout(column_major shared ) uniform block{layout(column_major shared offset=16 ) uniform int foo}) 0:? 'samp1D' (uniform sampler1D) 0:? 'samp1Ds' (uniform sampler1DShadow) +0:? 'badArray' (layout(binding=0 ) writeonly uniform 1-element array of image1D) 0:? 'gl_VertexID' (gl_VertexId int VertexId) 0:? 'gl_InstanceID' (gl_InstanceId int InstanceId) diff --git a/Test/baseResults/420_size_gl_in.geom.out b/Test/baseResults/420_size_gl_in.geom.out index 21d1944f..28d09a6d 100644 --- a/Test/baseResults/420_size_gl_in.geom.out +++ b/Test/baseResults/420_size_gl_in.geom.out @@ -39,7 +39,7 @@ ERROR: node is still EOpNull! 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 4b7825bd..676fcd3f 100644 --- a/Test/baseResults/430.vert.out +++ b/Test/baseResults/430.vert.out @@ -266,7 +266,7 @@ ERROR: node is still EOpNull! 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 cafd85a5..064fe19e 100644 --- a/Test/baseResults/440.frag.out +++ b/Test/baseResults/440.frag.out @@ -122,7 +122,7 @@ ERROR: node is still EOpNull! 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 9ad3c1bd..022ddec4 100644 --- a/Test/baseResults/440.vert.out +++ b/Test/baseResults/440.vert.out @@ -19,74 +19,79 @@ ERROR: 0:55: 'component' : type overflows the available 4 components ERROR: 0:57: 'component' : cannot apply to a matrix, structure, or block ERROR: 0:58: 'component' : cannot apply to a matrix, structure, or block ERROR: 0:61: 'location/component/index' : cannot declare a default, use a full declaration -ERROR: 0:81: 'xfb layout qualifier' : can only be used on an output -ERROR: 0:87: 'xfb_offset' : cannot declare a default, use a full declaration -ERROR: 0:97: 'xfb_buffer' : member cannot contradict block (or what block inherited from global) -ERROR: 0:102: 'xfb_buffer' : member cannot contradict block (or what block inherited from global) -ERROR: 0:102: 'xfb_offset' : overlapping offsets at offset 32 in buffer 3 -ERROR: 0:103: 'xfb_offset' : overlapping offsets at offset 0 in buffer 2 -ERROR: 0:105: 'xfb_offset' : overlapping offsets at offset 24 in buffer 2 -ERROR: 0:108: 'xfb_stride' : all stride settings must match for xfb buffer 15 -ERROR: 0:112: 'xfb_offset' : overlapping offsets at offset 4 in buffer 1 -ERROR: 0:114: 'xfb_stride' : all stride settings must match for xfb buffer 3 -ERROR: 0:115: 'xfb_stride' : all stride settings must match for xfb buffer 3 -ERROR: 0:119: 'xfb_stride' : all stride settings must match for xfb buffer 3 -ERROR: 0:117: 'xfb_stride' : all stride settings must match for xfb buffer 3 -ERROR: 0:138: 'xfb_offset' : overlapping offsets at offset 64 in buffer 0 -ERROR: 0:143: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4 -ERROR: 0:144: 'xfb_offset' : must be a multiple of size of first component -ERROR: 0:145: 'xfb_offset' : type contains double; xfb_offset must be a multiple of 8 -ERROR: 0:147: 'xfb_offset' : must be a multiple of size of first component -ERROR: 0:148: 'xfb_offset' : type contains double; xfb_offset must be a multiple of 8 -ERROR: 0:152: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4 -ERROR: 0:155: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4 -ERROR: 0:155: 'xfb_stride' : 1/4 stride is too large: gl_MaxTransformFeedbackInterleavedComponents is 64 +ERROR: 0:66: 'component' : doubles cannot start on an odd-numbered component +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: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: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:165: 'gl_BaseVertexARB' : required extension not requested: GL_ARB_shader_draw_parameters -ERROR: 0:165: 'gl_BaseInstanceARB' : required extension not requested: GL_ARB_shader_draw_parameters -ERROR: 0:165: 'gl_DrawIDARB' : required extension not requested: GL_ARB_shader_draw_parameters -ERROR: 0:173: 'assign' : l-value required "gl_BaseVertexARB" (can't modify shader input) -ERROR: 0:174: 'assign' : l-value required "gl_BaseInstanceARB" (can't modify shader input) -ERROR: 0:175: 'assign' : l-value required "gl_DrawIDARB" (can't modify shader input) -ERROR: 0:176: 'glBaseInstanceARB' : undeclared identifier -ERROR: 49 compilation errors. No code generated. +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: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: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:163 Function Definition: drawParamsBad( (global int) -0:163 Function Parameters: -0:165 Sequence -0:165 Branch: Return with expression -0:165 add (temp int) -0:165 add (temp int) -0:165 'gl_BaseVertexARB' (in int BaseVertex) -0:165 'gl_BaseInstanceARB' (in int BaseInstance) -0:165 'gl_DrawIDARB' (in int DrawId) -0:170 Function Definition: drawParams( (global int) -0:170 Function Parameters: -0:172 Sequence -0:172 Branch: Return with expression -0:172 add (temp int) -0:172 add (temp int) -0:172 'gl_BaseVertexARB' (in int BaseVertex) -0:172 'gl_BaseInstanceARB' (in int BaseInstance) -0:172 'gl_DrawIDARB' (in int DrawId) -0:173 move second child to first child (temp int) -0:173 'gl_BaseVertexARB' (in int BaseVertex) -0:173 Constant: -0:173 3 (const int) -0:174 move second child to first child (temp int) -0:174 'gl_BaseInstanceARB' (in int BaseInstance) -0:174 Constant: -0:174 3 (const int) -0:175 move second child to first child (temp int) -0:175 'gl_DrawIDARB' (in int DrawId) -0:175 Constant: -0:175 3 (const int) -0:176 '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) @@ -119,6 +124,19 @@ ERROR: node is still EOpNull! 0:? 'bd' (out block{layout(location=40 component=2 ) out float u, layout(location=40 component=0 ) out float v, layout(location=40 component=3 ) out float w, layout(location=40 component=1 ) out 2-component vector of float x, layout(location=41 component=3 ) out 2-component vector of float y, layout(location=42 component=1 ) out 4-component vector of float z, layout(location=42 component=1 ) out 4X4 matrix of float ba, layout(location=43 component=1 ) out structure{global int a} Ss}) 0:? 'be' (layout(location=50 component=3 ) smooth out int) 0:? 'bf' (layout(location=50 component=0 ) smooth out 3-component vector of float) +0:? 'dfo' (layout(location=51 component=1 ) smooth out double) +0:? 'dvo' (layout(location=52 component=2 ) smooth out 2-component vector of double) +0:? 'dfo2' (layout(location=53 ) smooth out double) +0:? 'ffv2' (layout(location=53 component=2 ) smooth out 2-component vector of float) +0:? 'dvec4out' (layout(location=54 ) smooth out 4-component vector of double) +0:? 'overf' (layout(location=55 ) smooth out float) +0:? 'df2o' (layout(location=56 component=1 ) smooth out 2-component vector of float) +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}) @@ -142,7 +160,7 @@ ERROR: node is still EOpNull! 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: @@ -156,37 +174,37 @@ Shader version: 440 Requested GL_ARB_shader_draw_parameters in xfb mode ERROR: node is still EOpNull! -0:163 Function Definition: drawParamsBad( (global int) -0:163 Function Parameters: -0:165 Sequence -0:165 Branch: Return with expression -0:165 add (temp int) -0:165 add (temp int) -0:165 'gl_BaseVertexARB' (in int BaseVertex) -0:165 'gl_BaseInstanceARB' (in int BaseInstance) -0:165 'gl_DrawIDARB' (in int DrawId) -0:170 Function Definition: drawParams( (global int) -0:170 Function Parameters: -0:172 Sequence -0:172 Branch: Return with expression -0:172 add (temp int) -0:172 add (temp int) -0:172 'gl_BaseVertexARB' (in int BaseVertex) -0:172 'gl_BaseInstanceARB' (in int BaseInstance) -0:172 'gl_DrawIDARB' (in int DrawId) -0:173 move second child to first child (temp int) -0:173 'gl_BaseVertexARB' (in int BaseVertex) -0:173 Constant: -0:173 3 (const int) -0:174 move second child to first child (temp int) -0:174 'gl_BaseInstanceARB' (in int BaseInstance) -0:174 Constant: -0:174 3 (const int) -0:175 move second child to first child (temp int) -0:175 'gl_DrawIDARB' (in int DrawId) -0:175 Constant: -0:175 3 (const int) -0:176 '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) @@ -219,6 +237,19 @@ ERROR: node is still EOpNull! 0:? 'bd' (out block{layout(location=40 component=2 ) out float u, layout(location=40 component=0 ) out float v, layout(location=40 component=3 ) out float w, layout(location=40 component=1 ) out 2-component vector of float x, layout(location=41 component=3 ) out 2-component vector of float y, layout(location=42 component=1 ) out 4-component vector of float z, layout(location=42 component=1 ) out 4X4 matrix of float ba, layout(location=43 component=1 ) out structure{global int a} Ss}) 0:? 'be' (layout(location=50 component=3 ) smooth out int) 0:? 'bf' (layout(location=50 component=0 ) smooth out 3-component vector of float) +0:? 'dfo' (layout(location=51 component=1 ) smooth out double) +0:? 'dvo' (layout(location=52 component=2 ) smooth out 2-component vector of double) +0:? 'dfo2' (layout(location=53 ) smooth out double) +0:? 'ffv2' (layout(location=53 component=2 ) smooth out 2-component vector of float) +0:? 'dvec4out' (layout(location=54 ) smooth out 4-component vector of double) +0:? 'overf' (layout(location=55 ) smooth out float) +0:? 'df2o' (layout(location=56 component=1 ) smooth out 2-component vector of float) +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 d5d1ecab..203c4b24 100644 --- a/Test/baseResults/450.comp.out +++ b/Test/baseResults/450.comp.out @@ -9,7 +9,7 @@ local_size = (1, 1, 1) 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 37af2875..a29b22f5 100644 --- a/Test/baseResults/badChars.frag.out +++ b/Test/baseResults/badChars.frag.out @@ -17,7 +17,7 @@ ERROR: node is still EOpNull! 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 new file mode 100644 index 00000000..95937ce3 --- /dev/null +++ b/Test/baseResults/badMacroArgs.frag.out @@ -0,0 +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: '' : compilation terminated +ERROR: 2 compilation errors. No code generated. + + diff --git a/Test/baseResults/cppBad.vert.out b/Test/baseResults/cppBad.vert.out new file mode 100755 index 00000000..1fb18ecd --- /dev/null +++ b/Test/baseResults/cppBad.vert.out @@ -0,0 +1,22 @@ +cppBad.vert +ERROR: 0:2: 'preprocessor evaluation' : bad expression +ERROR: 0:2: '#if' : unexpected tokens following directive +ERROR: 0:5: 'string' : End of line in string +ERROR: 0:5: 'macro expansion' : expected '(' following n +ERROR: 0:5: '' : syntax error +ERROR: 5 compilation errors. No code generated. + + +Shader version: 100 +ERROR: node is still EOpNull! +0:? Linker Objects + + +Linked vertex stage: + +ERROR: Linking vertex stage: Missing entry point: Each stage requires one entry point + +Shader version: 100 +ERROR: node is still EOpNull! +0:? Linker Objects + diff --git a/Test/baseResults/cppNest.vert.out b/Test/baseResults/cppNest.vert.out index 4f95f5a2..df905579 100644 --- a/Test/baseResults/cppNest.vert.out +++ b/Test/baseResults/cppNest.vert.out @@ -4,7 +4,7 @@ ERROR: 0:152: '#else' : #else after #else 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 a19fe4e8..2846abd5 100644 --- a/Test/baseResults/dce.frag.out +++ b/Test/baseResults/dce.frag.out @@ -138,7 +138,7 @@ Shader version: 400 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 f1e06d2c..23f66315 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.amend.frag.out b/Test/baseResults/hlsl.amend.frag.out new file mode 100755 index 00000000..1be59064 --- /dev/null +++ b/Test/baseResults/hlsl.amend.frag.out @@ -0,0 +1,207 @@ +hlsl.amend.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:5 Function Definition: f1( (temp void) +0:5 Function Parameters: +0:? Sequence +0:6 vector-scale (temp 4-component vector of float) +0:6 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:6 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:6 Constant: +0:6 0 (const uint) +0:6 b: direct index for structure (layout(offset=16 ) uniform float) +0:6 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:6 Constant: +0:6 1 (const uint) +0:12 Function Definition: f2( (temp void) +0:12 Function Parameters: +0:? Sequence +0:13 add (temp float) +0:13 add (temp float) +0:13 direct index (temp float) +0:13 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 0 (const uint) +0:13 Constant: +0:13 0 (const int) +0:13 b: direct index for structure (layout(offset=16 ) uniform float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 1 (const uint) +0:13 direct index (temp float) +0:13 c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 2 (const uint) +0:13 Constant: +0:13 0 (const int) +0:17 Function Definition: f3( (temp void) +0:17 Function Parameters: +0:? Sequence +0:18 c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:18 Constant: +0:18 2 (const uint) +0:24 Function Definition: f4( (temp void) +0:24 Function Parameters: +0:? Sequence +0:25 vector-scale (temp 4-component vector of float) +0:25 Convert int to float (temp float) +0:25 d: direct index for structure (layout(offset=44 ) uniform int) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:25 Constant: +0:25 3 (const uint) +0:25 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:25 Constant: +0:25 0 (const uint) +0:? Linker Objects +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:5 Function Definition: f1( (temp void) +0:5 Function Parameters: +0:? Sequence +0:6 vector-scale (temp 4-component vector of float) +0:6 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:6 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:6 Constant: +0:6 0 (const uint) +0:6 b: direct index for structure (layout(offset=16 ) uniform float) +0:6 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:6 Constant: +0:6 1 (const uint) +0:12 Function Definition: f2( (temp void) +0:12 Function Parameters: +0:? Sequence +0:13 add (temp float) +0:13 add (temp float) +0:13 direct index (temp float) +0:13 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 0 (const uint) +0:13 Constant: +0:13 0 (const int) +0:13 b: direct index for structure (layout(offset=16 ) uniform float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 1 (const uint) +0:13 direct index (temp float) +0:13 c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:13 Constant: +0:13 2 (const uint) +0:13 Constant: +0:13 0 (const int) +0:17 Function Definition: f3( (temp void) +0:17 Function Parameters: +0:? Sequence +0:18 c: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:18 Constant: +0:18 2 (const uint) +0:24 Function Definition: f4( (temp void) +0:24 Function Parameters: +0:? Sequence +0:25 vector-scale (temp 4-component vector of float) +0:25 Convert int to float (temp float) +0:25 d: direct index for structure (layout(offset=44 ) uniform int) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:25 Constant: +0:25 3 (const uint) +0:25 a: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) +0:25 Constant: +0:25 0 (const uint) +0:? Linker Objects +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 47 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "f1" + ExecutionMode 4 OriginUpperLeft + Name 4 "f1" + Name 6 "f2(" + Name 8 "f3(" + Name 10 "f4(" + Name 16 "$Global" + MemberName 16($Global) 0 "a" + MemberName 16($Global) 1 "b" + MemberName 16($Global) 2 "c" + MemberName 16($Global) 3 "d" + MemberName 16($Global) 4 "e" + Name 18 "" + MemberDecorate 16($Global) 0 Offset 0 + MemberDecorate 16($Global) 1 Offset 16 + MemberDecorate 16($Global) 2 Offset 32 + MemberDecorate 16($Global) 3 Offset 44 + MemberDecorate 16($Global) 4 Offset 48 + Decorate 16($Global) Block + Decorate 18 DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 12: TypeFloat 32 + 13: TypeVector 12(float) 4 + 14: TypeVector 12(float) 3 + 15: TypeInt 32 1 + 16($Global): TypeStruct 13(fvec4) 12(float) 14(fvec3) 15(int) 15(int) + 17: TypePointer Uniform 16($Global) + 18: 17(ptr) Variable Uniform + 19: 15(int) Constant 0 + 20: TypePointer Uniform 13(fvec4) + 23: 15(int) Constant 1 + 24: TypePointer Uniform 12(float) + 28: TypeInt 32 0 + 29: 28(int) Constant 0 + 35: 15(int) Constant 2 + 39: 15(int) Constant 3 + 40: TypePointer Uniform 15(int) + 4(f1): 2 Function None 3 + 5: Label + 21: 20(ptr) AccessChain 18 19 + 22: 13(fvec4) Load 21 + 25: 24(ptr) AccessChain 18 23 + 26: 12(float) Load 25 + 27: 13(fvec4) VectorTimesScalar 22 26 + Return + FunctionEnd + 6(f2(): 2 Function None 3 + 7: Label + 30: 24(ptr) AccessChain 18 19 29 + 31: 12(float) Load 30 + 32: 24(ptr) AccessChain 18 23 + 33: 12(float) Load 32 + 34: 12(float) FAdd 31 33 + 36: 24(ptr) AccessChain 18 35 29 + 37: 12(float) Load 36 + 38: 12(float) FAdd 34 37 + Return + FunctionEnd + 8(f3(): 2 Function None 3 + 9: Label + Return + FunctionEnd + 10(f4(): 2 Function None 3 + 11: Label + 41: 40(ptr) AccessChain 18 39 + 42: 15(int) Load 41 + 43: 12(float) ConvertSToF 42 + 44: 20(ptr) AccessChain 18 19 + 45: 13(fvec4) Load 44 + 46: 13(fvec4) VectorTimesScalar 45 43 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out new file mode 100644 index 00000000..cbfb0ef9 --- /dev/null +++ b/Test/baseResults/hlsl.array.flatten.frag.out @@ -0,0 +1,526 @@ +hlsl.array.flatten.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:17 Function Definition: TestFn1( (temp 4-component vector of float) +0:17 Function Parameters: +0:? Sequence +0:18 Branch: Return with expression +0:18 texture (temp 4-component vector of float) +0:18 Construct combined texture-sampler (temp sampler1D) +0:? 'g_tex[1]' (uniform texture1D) +0:? 'g_samp[1]' (uniform sampler) +0:18 Constant: +0:18 0.200000 +0:22 Function Definition: TestFn2(t11[3];p1[3]; (temp 4-component vector of float) +0:22 Function Parameters: +0:22 'l_tex' (in 3-element array of texture1D) +0:22 'l_samp' (in 3-element array of sampler) +0:? Sequence +0:23 Branch: Return with expression +0:23 texture (temp 4-component vector of float) +0:23 Construct combined texture-sampler (temp sampler1D) +0:23 direct index (temp texture1D) +0:23 'l_tex' (in 3-element array of texture1D) +0:23 Constant: +0:23 2 (const int) +0:23 direct index (temp sampler) +0:23 'l_samp' (in 3-element array of sampler) +0:23 Constant: +0:23 2 (const int) +0:23 Constant: +0:23 0.200000 +0:26 Sequence +0:26 move second child to first child (temp 5-element array of int) +0:26 'not_flattened_a' (global 5-element array of int) +0:26 Constant: +0:26 1 (const int) +0:26 2 (const int) +0:26 3 (const int) +0:26 4 (const int) +0:26 5 (const int) +0:31 Function Definition: main(struct-PS_OUTPUT-vf41; (temp void) +0:31 Function Parameters: +0:31 'ps_output' (out structure{temp 4-component vector of float color}) +0:? Sequence +0:33 Sequence +0:33 Sequence +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 0 (const int) +0:? 'g_samp[0]' (uniform sampler) +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 1 (const int) +0:? 'g_samp[1]' (uniform sampler) +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 2 (const int) +0:? 'g_samp[2]' (uniform sampler) +0:34 Sequence +0:34 Sequence +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 0 (const int) +0:? 'g_tex[0]' (uniform texture1D) +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 1 (const int) +0:? 'g_tex[1]' (uniform texture1D) +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 2 (const int) +0:? 'g_tex[2]' (uniform texture1D) +0:35 Sequence +0:35 move second child to first child (temp 4-element array of float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 g_floats: direct index for structure (layout(offset=384 ) uniform 4-element array of float) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) +0:35 Constant: +0:35 2 (const uint) +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 add (temp 4-component vector of float) +0:37 Function Call: TestFn1( (temp 4-component vector of float) +0:37 Function Call: TestFn2(t11[3];p1[3]; (temp 4-component vector of float) +0:37 Comma (temp 3-element array of texture1D) +0:37 Sequence +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 0 (const int) +0:? 'g_tex[0]' (uniform texture1D) +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 1 (const int) +0:? 'g_tex[1]' (uniform texture1D) +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 2 (const int) +0:? 'g_tex[2]' (uniform texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Comma (temp 3-element array of sampler) +0:37 Sequence +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 0 (const int) +0:? 'g_samp[0]' (uniform sampler) +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 1 (const int) +0:? 'g_samp[1]' (uniform sampler) +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 2 (const int) +0:? 'g_samp[2]' (uniform sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:? Linker Objects +0:? 'g_tex[0]' (uniform texture1D) +0:? 'g_tex[1]' (uniform texture1D) +0:? 'g_tex[2]' (uniform texture1D) +0:? 'g_tex_explicit[0]' (layout(binding=1 ) uniform texture1D) +0:? 'g_tex_explicit[1]' (layout(binding=2 ) uniform texture1D) +0:? 'g_tex_explicit[2]' (layout(binding=3 ) uniform texture1D) +0:? 'g_samp[0]' (uniform sampler) +0:? 'g_samp[1]' (uniform sampler) +0:? 'g_samp[2]' (uniform sampler) +0:? 'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler) +0:? 'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler) +0:? 'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) +0:? 'not_flattened_a' (global 5-element array of int) +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:17 Function Definition: TestFn1( (temp 4-component vector of float) +0:17 Function Parameters: +0:? Sequence +0:18 Branch: Return with expression +0:18 texture (temp 4-component vector of float) +0:18 Construct combined texture-sampler (temp sampler1D) +0:? 'g_tex[1]' (uniform texture1D) +0:? 'g_samp[1]' (uniform sampler) +0:18 Constant: +0:18 0.200000 +0:22 Function Definition: TestFn2(t11[3];p1[3]; (temp 4-component vector of float) +0:22 Function Parameters: +0:22 'l_tex' (in 3-element array of texture1D) +0:22 'l_samp' (in 3-element array of sampler) +0:? Sequence +0:23 Branch: Return with expression +0:23 texture (temp 4-component vector of float) +0:23 Construct combined texture-sampler (temp sampler1D) +0:23 direct index (temp texture1D) +0:23 'l_tex' (in 3-element array of texture1D) +0:23 Constant: +0:23 2 (const int) +0:23 direct index (temp sampler) +0:23 'l_samp' (in 3-element array of sampler) +0:23 Constant: +0:23 2 (const int) +0:23 Constant: +0:23 0.200000 +0:26 Sequence +0:26 move second child to first child (temp 5-element array of int) +0:26 'not_flattened_a' (global 5-element array of int) +0:26 Constant: +0:26 1 (const int) +0:26 2 (const int) +0:26 3 (const int) +0:26 4 (const int) +0:26 5 (const int) +0:31 Function Definition: main(struct-PS_OUTPUT-vf41; (temp void) +0:31 Function Parameters: +0:31 'ps_output' (out structure{temp 4-component vector of float color}) +0:? Sequence +0:33 Sequence +0:33 Sequence +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 0 (const int) +0:? 'g_samp[0]' (uniform sampler) +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 1 (const int) +0:? 'g_samp[1]' (uniform sampler) +0:33 move second child to first child (temp sampler) +0:33 direct index (temp sampler) +0:33 'local_sampler_array' (temp 3-element array of sampler) +0:33 Constant: +0:33 2 (const int) +0:? 'g_samp[2]' (uniform sampler) +0:34 Sequence +0:34 Sequence +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 0 (const int) +0:? 'g_tex[0]' (uniform texture1D) +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 1 (const int) +0:? 'g_tex[1]' (uniform texture1D) +0:34 move second child to first child (temp texture1D) +0:34 direct index (temp texture1D) +0:34 'local_texture_array' (temp 3-element array of texture1D) +0:34 Constant: +0:34 2 (const int) +0:? 'g_tex[2]' (uniform texture1D) +0:35 Sequence +0:35 move second child to first child (temp 4-element array of float) +0:35 'local_float_array' (temp 4-element array of float) +0:35 g_floats: direct index for structure (layout(offset=384 ) uniform 4-element array of float) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) +0:35 Constant: +0:35 2 (const uint) +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 add (temp 4-component vector of float) +0:37 Function Call: TestFn1( (temp 4-component vector of float) +0:37 Function Call: TestFn2(t11[3];p1[3]; (temp 4-component vector of float) +0:37 Comma (temp 3-element array of texture1D) +0:37 Sequence +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 0 (const int) +0:? 'g_tex[0]' (uniform texture1D) +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 1 (const int) +0:? 'g_tex[1]' (uniform texture1D) +0:37 move second child to first child (temp texture1D) +0:37 direct index (temp texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Constant: +0:37 2 (const int) +0:? 'g_tex[2]' (uniform texture1D) +0:37 'aggShadow' (temp 3-element array of texture1D) +0:37 Comma (temp 3-element array of sampler) +0:37 Sequence +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 0 (const int) +0:? 'g_samp[0]' (uniform sampler) +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 1 (const int) +0:? 'g_samp[1]' (uniform sampler) +0:37 move second child to first child (temp sampler) +0:37 direct index (temp sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:37 Constant: +0:37 2 (const int) +0:? 'g_samp[2]' (uniform sampler) +0:37 'aggShadow' (temp 3-element array of sampler) +0:? Linker Objects +0:? 'g_tex[0]' (uniform texture1D) +0:? 'g_tex[1]' (uniform texture1D) +0:? 'g_tex[2]' (uniform texture1D) +0:? 'g_tex_explicit[0]' (layout(binding=1 ) uniform texture1D) +0:? 'g_tex_explicit[1]' (layout(binding=2 ) uniform texture1D) +0:? 'g_tex_explicit[2]' (layout(binding=3 ) uniform texture1D) +0:? 'g_samp[0]' (uniform sampler) +0:? 'g_samp[1]' (uniform sampler) +0:? 'g_samp[2]' (uniform sampler) +0:? 'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler) +0:? 'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler) +0:? 'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats}) +0:? 'not_flattened_a' (global 5-element array of int) +0:? 'color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 123 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 99 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "TestFn1(" + Name 22 "TestFn2(t11[3];p1[3];" + Name 20 "l_tex" + Name 21 "l_samp" + Name 28 "not_flattened_a" + Name 36 "g_tex[1]" + Name 39 "g_samp[1]" + Name 55 "local_sampler_array" + Name 57 "g_samp[0]" + Name 62 "g_samp[2]" + Name 65 "local_texture_array" + Name 66 "g_tex[0]" + Name 71 "g_tex[2]" + Name 77 "local_float_array" + Name 83 "$Global" + MemberName 83($Global) 0 "g_mats" + MemberName 83($Global) 1 "g_mats_explicit" + MemberName 83($Global) 2 "g_floats" + Name 85 "" + Name 99 "color" + Name 101 "aggShadow" + Name 108 "aggShadow" + Name 117 "g_tex_explicit[0]" + Name 118 "g_tex_explicit[1]" + Name 119 "g_tex_explicit[2]" + Name 120 "g_samp_explicit[0]" + Name 121 "g_samp_explicit[1]" + Name 122 "g_samp_explicit[2]" + Decorate 36(g_tex[1]) DescriptorSet 0 + Decorate 39(g_samp[1]) DescriptorSet 0 + Decorate 57(g_samp[0]) DescriptorSet 0 + Decorate 62(g_samp[2]) DescriptorSet 0 + Decorate 66(g_tex[0]) DescriptorSet 0 + Decorate 71(g_tex[2]) DescriptorSet 0 + Decorate 80 ArrayStride 48 + Decorate 81 ArrayStride 48 + Decorate 82 ArrayStride 16 + MemberDecorate 83($Global) 0 RowMajor + MemberDecorate 83($Global) 0 Offset 0 + MemberDecorate 83($Global) 0 MatrixStride 16 + MemberDecorate 83($Global) 1 RowMajor + MemberDecorate 83($Global) 1 Offset 192 + MemberDecorate 83($Global) 1 MatrixStride 16 + MemberDecorate 83($Global) 2 Offset 384 + Decorate 83($Global) Block + Decorate 85 DescriptorSet 0 + Decorate 99(color) Location 0 + Decorate 117(g_tex_explicit[0]) DescriptorSet 0 + Decorate 117(g_tex_explicit[0]) Binding 1 + Decorate 118(g_tex_explicit[1]) DescriptorSet 0 + Decorate 118(g_tex_explicit[1]) Binding 2 + Decorate 119(g_tex_explicit[2]) DescriptorSet 0 + Decorate 119(g_tex_explicit[2]) Binding 3 + Decorate 120(g_samp_explicit[0]) DescriptorSet 0 + Decorate 120(g_samp_explicit[0]) Binding 5 + Decorate 121(g_samp_explicit[1]) DescriptorSet 0 + Decorate 121(g_samp_explicit[1]) Binding 6 + Decorate 122(g_samp_explicit[2]) DescriptorSet 0 + Decorate 122(g_samp_explicit[2]) Binding 7 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 11: TypeImage 6(float) 1D sampled format:Unknown + 12: TypeInt 32 0 + 13: 12(int) Constant 3 + 14: TypeArray 11 13 + 15: TypePointer UniformConstant 14 + 16: TypeSampler + 17: TypeArray 16 13 + 18: TypePointer UniformConstant 17 + 19: TypeFunction 7(fvec4) 15(ptr) 18(ptr) + 24: TypeInt 32 1 + 25: 12(int) Constant 5 + 26: TypeArray 24(int) 25 + 27: TypePointer Private 26 +28(not_flattened_a): 27(ptr) Variable Private + 29: 24(int) Constant 1 + 30: 24(int) Constant 2 + 31: 24(int) Constant 3 + 32: 24(int) Constant 4 + 33: 24(int) Constant 5 + 34: 26 ConstantComposite 29 30 31 32 33 + 35: TypePointer UniformConstant 11 + 36(g_tex[1]): 35(ptr) Variable UniformConstant + 38: TypePointer UniformConstant 16 + 39(g_samp[1]): 38(ptr) Variable UniformConstant + 41: TypeSampledImage 11 + 43: 6(float) Constant 1045220557 +55(local_sampler_array): 18(ptr) Variable UniformConstant + 56: 24(int) Constant 0 + 57(g_samp[0]): 38(ptr) Variable UniformConstant + 62(g_samp[2]): 38(ptr) Variable UniformConstant +65(local_texture_array): 15(ptr) Variable UniformConstant + 66(g_tex[0]): 35(ptr) Variable UniformConstant + 71(g_tex[2]): 35(ptr) Variable UniformConstant + 74: 12(int) Constant 4 + 75: TypeArray 6(float) 74 + 76: TypePointer Function 75 + 78: TypeVector 6(float) 3 + 79: TypeMatrix 78(fvec3) 3 + 80: TypeArray 79 74 + 81: TypeArray 79 74 + 82: TypeArray 6(float) 74 + 83($Global): TypeStruct 80 81 82 + 84: TypePointer Uniform 83($Global) + 85: 84(ptr) Variable Uniform + 86: TypePointer Uniform 82 + 90: TypePointer Function 6(float) + 98: TypePointer Output 7(fvec4) + 99(color): 98(ptr) Variable Output + 101(aggShadow): 15(ptr) Variable UniformConstant + 108(aggShadow): 18(ptr) Variable UniformConstant +117(g_tex_explicit[0]): 35(ptr) Variable UniformConstant +118(g_tex_explicit[1]): 35(ptr) Variable UniformConstant +119(g_tex_explicit[2]): 35(ptr) Variable UniformConstant +120(g_samp_explicit[0]): 38(ptr) Variable UniformConstant +121(g_samp_explicit[1]): 38(ptr) Variable UniformConstant +122(g_samp_explicit[2]): 38(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label +77(local_float_array): 76(ptr) Variable Function + Store 28(not_flattened_a) 34 + 58: 16 Load 57(g_samp[0]) + 59: 38(ptr) AccessChain 55(local_sampler_array) 56 + Store 59 58 + 60: 16 Load 39(g_samp[1]) + 61: 38(ptr) AccessChain 55(local_sampler_array) 29 + Store 61 60 + 63: 16 Load 62(g_samp[2]) + 64: 38(ptr) AccessChain 55(local_sampler_array) 30 + Store 64 63 + 67: 11 Load 66(g_tex[0]) + 68: 35(ptr) AccessChain 65(local_texture_array) 56 + Store 68 67 + 69: 11 Load 36(g_tex[1]) + 70: 35(ptr) AccessChain 65(local_texture_array) 29 + Store 70 69 + 72: 11 Load 71(g_tex[2]) + 73: 35(ptr) AccessChain 65(local_texture_array) 30 + Store 73 72 + 87: 86(ptr) AccessChain 85 30 + 88: 82 Load 87 + 89: 6(float) CompositeExtract 88 0 + 91: 90(ptr) AccessChain 77(local_float_array) 56 + Store 91 89 + 92: 6(float) CompositeExtract 88 1 + 93: 90(ptr) AccessChain 77(local_float_array) 29 + Store 93 92 + 94: 6(float) CompositeExtract 88 2 + 95: 90(ptr) AccessChain 77(local_float_array) 30 + Store 95 94 + 96: 6(float) CompositeExtract 88 3 + 97: 90(ptr) AccessChain 77(local_float_array) 31 + Store 97 96 + 100: 7(fvec4) FunctionCall 9(TestFn1() + 102: 11 Load 66(g_tex[0]) + 103: 35(ptr) AccessChain 101(aggShadow) 56 + Store 103 102 + 104: 11 Load 36(g_tex[1]) + 105: 35(ptr) AccessChain 101(aggShadow) 29 + Store 105 104 + 106: 11 Load 71(g_tex[2]) + 107: 35(ptr) AccessChain 101(aggShadow) 30 + Store 107 106 + 109: 16 Load 57(g_samp[0]) + 110: 38(ptr) AccessChain 108(aggShadow) 56 + Store 110 109 + 111: 16 Load 39(g_samp[1]) + 112: 38(ptr) AccessChain 108(aggShadow) 29 + Store 112 111 + 113: 16 Load 62(g_samp[2]) + 114: 38(ptr) AccessChain 108(aggShadow) 30 + Store 114 113 + 115: 7(fvec4) FunctionCall 22(TestFn2(t11[3];p1[3];) 101(aggShadow) 108(aggShadow) + 116: 7(fvec4) FAdd 100 115 + Store 99(color) 116 + Return + FunctionEnd + 9(TestFn1(): 7(fvec4) Function None 8 + 10: Label + 37: 11 Load 36(g_tex[1]) + 40: 16 Load 39(g_samp[1]) + 42: 41 SampledImage 37 40 + 44: 7(fvec4) ImageSampleImplicitLod 42 43 + ReturnValue 44 + FunctionEnd +22(TestFn2(t11[3];p1[3];): 7(fvec4) Function None 19 + 20(l_tex): 15(ptr) FunctionParameter + 21(l_samp): 18(ptr) FunctionParameter + 23: Label + 47: 35(ptr) AccessChain 20(l_tex) 30 + 48: 11 Load 47 + 49: 38(ptr) AccessChain 21(l_samp) 30 + 50: 16 Load 49 + 51: 41 SampledImage 48 50 + 52: 7(fvec4) ImageSampleImplicitLod 51 43 + ReturnValue 52 + FunctionEnd diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out index 6f29aa20..00aedb3d 100755 --- a/Test/baseResults/hlsl.array.frag.out +++ b/Test/baseResults/hlsl.array.frag.out @@ -2,50 +2,64 @@ hlsl.array.frag 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]; (temp 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 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' (in int) -0:10 add (temp 4-component vector of float) -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 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 'b' (temp 10-element array of 4-component vector of float) -0:10 Constant: -0:10 5 (const int) +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 (layout(offset=0 ) temp 4-component vector of float) +0:10 a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 0 (const uint) +0:10 Constant: +0:10 1 (const int) +0:10 indirect index (layout(offset=0 ) temp 4-component vector of float) +0:10 a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 0 (const uint) +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 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 'i' (in int) +0:10 'i' (layout(location=0 ) 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 indirect index (layout(offset=64 ) temp structure{temp 7-element array of 4-component vector of float m}) +0:10 s: direct index for structure (layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m}) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 1 (const uint) +0:10 'i' (layout(location=0 ) in int) 0:10 Constant: 0:10 0 (const int) -0:10 'i' (in 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:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +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 +68,158 @@ Linked fragment stage: 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]; (temp 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 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' (in int) -0:10 add (temp 4-component vector of float) -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 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 'b' (temp 10-element array of 4-component vector of float) -0:10 Constant: -0:10 5 (const int) +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 (layout(offset=0 ) temp 4-component vector of float) +0:10 a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 0 (const uint) +0:10 Constant: +0:10 1 (const int) +0:10 indirect index (layout(offset=0 ) temp 4-component vector of float) +0:10 a: direct index for structure (layout(offset=0 ) uniform 4-element array of 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 0 (const uint) +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 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 'i' (in int) +0:10 'i' (layout(location=0 ) 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 indirect index (layout(offset=64 ) temp structure{temp 7-element array of 4-component vector of float m}) +0:10 s: direct index for structure (layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m}) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +0:10 Constant: +0:10 1 (const uint) +0:10 'i' (layout(location=0 ) in int) 0:10 Constant: 0:10 0 (const int) -0:10 'i' (in 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:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s}) +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 65 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 19 27 + EntryPoint Fragment 4 "PixelShaderFunction" 9 28 36 ExecutionMode 4 OriginUpperLeft - Source HLSL 450 Name 4 "PixelShaderFunction" - Name 12 "a" - Name 19 "i" - Name 27 "input" - Name 40 "b" - Name 51 "" - MemberName 51 0 "m" - Name 55 "s" + Name 9 "@entryPointOutput" + Name 15 "" + MemberName 15 0 "m" + Name 18 "$Global" + MemberName 18($Global) 0 "a" + MemberName 18($Global) 1 "s" + Name 20 "" + Name 28 "i" + Name 36 "input" + Name 49 "b" + Decorate 9(@entryPointOutput) Location 0 + Decorate 12 ArrayStride 16 + Decorate 14 ArrayStride 16 + MemberDecorate 15 0 Offset 0 + Decorate 17 ArrayStride 112 + MemberDecorate 18($Global) 0 Offset 0 + MemberDecorate 18($Global) 1 Offset 64 + Decorate 18($Global) Block + Decorate 20 DescriptorSet 0 + Decorate 28(i) Location 0 + Decorate 36(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) - 49: 8(int) Constant 7 - 50: TypeArray 7(fvec4) 49 - 51: TypeStruct 50 - 52: 8(int) Constant 11 - 53: TypeArray 51(struct) 52 - 54: TypePointer Private 53 - 55(s): 54(ptr) Variable Private - 57: 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: 10(int) Constant 7 + 14: TypeArray 7(fvec4) 13 + 15: TypeStruct 14 + 16: 10(int) Constant 11 + 17: TypeArray 15(struct) 16 + 18($Global): TypeStruct 12 17 + 19: TypePointer Uniform 18($Global) + 20: 19(ptr) Variable Uniform + 21: TypeInt 32 1 + 22: 21(int) Constant 0 + 23: 21(int) Constant 1 + 24: TypePointer Uniform 7(fvec4) + 27: TypePointer Input 21(int) + 28(i): 27(ptr) Variable Input + 33: 10(int) Constant 3 + 34: TypeArray 7(fvec4) 33 + 35: TypePointer Input 34 + 36(input): 35(ptr) Variable Input + 37: 21(int) Constant 2 + 38: TypePointer Input 7(fvec4) + 46: 10(int) Constant 10 + 47: TypeArray 7(fvec4) 46 + 48: TypePointer Function 47 + 50: 21(int) Constant 5 + 51: TypePointer Function 7(fvec4) 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 + 49(b): 48(ptr) Variable Function + 25: 24(ptr) AccessChain 20 22 23 + 26: 7(fvec4) Load 25 + 29: 21(int) Load 28(i) + 30: 24(ptr) AccessChain 20 22 29 31: 7(fvec4) Load 30 - 32: 13(int) Load 19(i) - 33: 29(ptr) AccessChain 27(input) 32 - 34: 7(fvec4) Load 33 - 35: 7(fvec4) FAdd 31 34 - 36: 7(fvec4) FAdd 23 35 - 43: 42(ptr) AccessChain 40(b) 41 + 32: 7(fvec4) FAdd 26 31 + 39: 38(ptr) AccessChain 36(input) 37 + 40: 7(fvec4) Load 39 + 41: 7(fvec4) FAdd 32 40 + 42: 21(int) Load 28(i) + 43: 38(ptr) AccessChain 36(input) 42 44: 7(fvec4) Load 43 - 45: 13(int) Load 19(i) - 46: 42(ptr) AccessChain 40(b) 45 - 47: 7(fvec4) Load 46 - 48: 7(fvec4) FAdd 44 47 - 56: 13(int) Load 19(i) - 58: 13(int) Load 19(i) - 59: 15(ptr) AccessChain 55(s) 56 57 58 - 60: 7(fvec4) Load 59 - 61: 7(fvec4) FAdd 48 60 - 62: 7(fvec4) FAdd 36 61 - ReturnValue 62 + 45: 7(fvec4) FAdd 41 44 + 52: 51(ptr) AccessChain 49(b) 50 + 53: 7(fvec4) Load 52 + 54: 7(fvec4) FAdd 45 53 + 55: 21(int) Load 28(i) + 56: 51(ptr) AccessChain 49(b) 55 + 57: 7(fvec4) Load 56 + 58: 7(fvec4) FAdd 54 57 + 59: 21(int) Load 28(i) + 60: 21(int) Load 28(i) + 61: 24(ptr) AccessChain 20 23 59 22 60 + 62: 7(fvec4) Load 61 + 63: 7(fvec4) FAdd 58 62 + Store 9(@entryPointOutput) 63 + Return FunctionEnd diff --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out new file mode 100644 index 00000000..d8e0ed86 --- /dev/null +++ b/Test/baseResults/hlsl.array.implicit-size.frag.out @@ -0,0 +1,263 @@ +hlsl.array.implicit-size.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Sequence +0:3 move second child to first child (temp 5-element array of float) +0:3 'g_array' (global 5-element array of float) +0:3 Constant: +0:3 1.000000 +0:3 2.000000 +0:3 3.000000 +0:3 4.000000 +0:3 5.000000 +0:6 Sequence +0:6 move second child to first child (temp 7-element array of float) +0:6 'g_array_unused' (global 7-element array of float) +0:6 Constant: +0:6 1.000000 +0:6 2.000000 +0:6 3.000000 +0:6 4.000000 +0:6 5.000000 +0:6 6.000000 +0:6 7.000000 +0:12 Sequence +0:12 move second child to first child (temp 2-element array of structure{temp int i, temp float f}) +0:12 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) +0:12 Constant: +0:12 1 (const int) +0:12 2.000000 +0:12 3 (const int) +0:12 4.000000 +0:26 Function Definition: main(struct-PS_OUTPUT-vf41; (temp void) +0:26 Function Parameters: +0:26 'ps_output' (out structure{temp 4-component vector of float color}) +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp 3-element array of float) +0:28 'l_array' (temp 3-element array of float) +0:28 Constant: +0:28 1.000000 +0:28 2.000000 +0:28 3.000000 +0:30 move second child to first child (temp 4-component vector of float) +0:30 color: direct index for structure (temp 4-component vector of float) +0:30 'ps_output' (out structure{temp 4-component vector of float color}) +0:30 Constant: +0:30 0 (const int) +0:30 Construct vec4 (temp 4-component vector of float) +0:30 add (temp float) +0:30 add (temp float) +0:30 add (temp float) +0:30 add (temp float) +0:30 direct index (temp float) +0:30 'g_array' (global 5-element array of float) +0:30 Constant: +0:30 0 (const int) +0:30 direct index (temp float) +0:30 'g_array' (global 5-element array of float) +0:30 Constant: +0:30 4 (const int) +0:30 direct index (temp float) +0:30 'l_array' (temp 3-element array of float) +0:30 Constant: +0:30 1 (const int) +0:30 f: direct index for structure (temp float) +0:30 direct index (temp structure{temp int i, temp float f}) +0:30 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 indirect index (temp float) +0:30 'g_array' (global 5-element array of float) +0:30 'idx' (temp void) +0:? Linker Objects +0:? 'g_array' (global 5-element array of float) +0:? 'g_array_unused' (global 7-element array of float) +0:? 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Sequence +0:3 move second child to first child (temp 5-element array of float) +0:3 'g_array' (global 5-element array of float) +0:3 Constant: +0:3 1.000000 +0:3 2.000000 +0:3 3.000000 +0:3 4.000000 +0:3 5.000000 +0:6 Sequence +0:6 move second child to first child (temp 7-element array of float) +0:6 'g_array_unused' (global 7-element array of float) +0:6 Constant: +0:6 1.000000 +0:6 2.000000 +0:6 3.000000 +0:6 4.000000 +0:6 5.000000 +0:6 6.000000 +0:6 7.000000 +0:12 Sequence +0:12 move second child to first child (temp 2-element array of structure{temp int i, temp float f}) +0:12 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) +0:12 Constant: +0:12 1 (const int) +0:12 2.000000 +0:12 3 (const int) +0:12 4.000000 +0:26 Function Definition: main(struct-PS_OUTPUT-vf41; (temp void) +0:26 Function Parameters: +0:26 'ps_output' (out structure{temp 4-component vector of float color}) +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp 3-element array of float) +0:28 'l_array' (temp 3-element array of float) +0:28 Constant: +0:28 1.000000 +0:28 2.000000 +0:28 3.000000 +0:30 move second child to first child (temp 4-component vector of float) +0:30 color: direct index for structure (temp 4-component vector of float) +0:30 'ps_output' (out structure{temp 4-component vector of float color}) +0:30 Constant: +0:30 0 (const int) +0:30 Construct vec4 (temp 4-component vector of float) +0:30 add (temp float) +0:30 add (temp float) +0:30 add (temp float) +0:30 add (temp float) +0:30 direct index (temp float) +0:30 'g_array' (global 5-element array of float) +0:30 Constant: +0:30 0 (const int) +0:30 direct index (temp float) +0:30 'g_array' (global 5-element array of float) +0:30 Constant: +0:30 4 (const int) +0:30 direct index (temp float) +0:30 'l_array' (temp 3-element array of float) +0:30 Constant: +0:30 1 (const int) +0:30 f: direct index for structure (temp float) +0:30 direct index (temp structure{temp int i, temp float f}) +0:30 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 indirect index (temp float) +0:30 'g_array' (global 5-element array of float) +0:30 'idx' (temp void) +0:? Linker Objects +0:? 'g_array' (global 5-element array of float) +0:? 'g_array_unused' (global 7-element array of float) +0:? 'g_mystruct' (global 2-element array of structure{temp int i, temp float f}) + +// 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 Fragment 4 "PixelShaderFunction" + ExecutionMode 4 OriginUpperLeft + Name 4 "PixelShaderFunction" + Name 8 "PS_OUTPUT" + MemberName 8(PS_OUTPUT) 0 "color" + Name 12 "main(struct-PS_OUTPUT-vf41;" + Name 11 "ps_output" + Name 18 "g_array" + Name 28 "g_array_unused" + Name 33 "mystruct" + MemberName 33(mystruct) 0 "i" + MemberName 33(mystruct) 1 "f" + Name 37 "g_mystruct" + Name 46 "l_array" + Name 64 "idx" + 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) + 10: TypeFunction 2 9(ptr) + 14: TypeInt 32 0 + 15: 14(int) Constant 5 + 16: TypeArray 6(float) 15 + 17: TypePointer Private 16 + 18(g_array): 17(ptr) Variable Private + 19: 6(float) Constant 1065353216 + 20: 6(float) Constant 1073741824 + 21: 6(float) Constant 1077936128 + 22: 6(float) Constant 1082130432 + 23: 6(float) Constant 1084227584 + 24: 16 ConstantComposite 19 20 21 22 23 + 25: 14(int) Constant 7 + 26: TypeArray 6(float) 25 + 27: TypePointer Private 26 +28(g_array_unused): 27(ptr) Variable Private + 29: 6(float) Constant 1086324736 + 30: 6(float) Constant 1088421888 + 31: 26 ConstantComposite 19 20 21 22 23 29 30 + 32: TypeInt 32 1 + 33(mystruct): TypeStruct 32(int) 6(float) + 34: 14(int) Constant 2 + 35: TypeArray 33(mystruct) 34 + 36: TypePointer Private 35 + 37(g_mystruct): 36(ptr) Variable Private + 38: 32(int) Constant 1 + 39:33(mystruct) ConstantComposite 38 20 + 40: 32(int) Constant 3 + 41:33(mystruct) ConstantComposite 40 22 + 42: 35 ConstantComposite 39 41 + 43: 14(int) Constant 3 + 44: TypeArray 6(float) 43 + 45: TypePointer Function 44 + 47: 44 ConstantComposite 19 20 21 + 48: 32(int) Constant 0 + 49: TypePointer Private 6(float) + 52: 32(int) Constant 4 + 56: TypePointer Function 6(float) + 63: TypePointer Function 2 + 70: TypePointer Function 7(fvec4) +4(PixelShaderFunction): 2 Function None 3 + 5: Label + Store 18(g_array) 24 + Store 28(g_array_unused) 31 + Store 37(g_mystruct) 42 + FunctionEnd +12(main(struct-PS_OUTPUT-vf41;): 2 Function None 10 + 11(ps_output): 9(ptr) FunctionParameter + 13: Label + 46(l_array): 45(ptr) Variable Function + 64(idx): 63(ptr) Variable Function + Store 46(l_array) 47 + 50: 49(ptr) AccessChain 18(g_array) 48 + 51: 6(float) Load 50 + 53: 49(ptr) AccessChain 18(g_array) 52 + 54: 6(float) Load 53 + 55: 6(float) FAdd 51 54 + 57: 56(ptr) AccessChain 46(l_array) 38 + 58: 6(float) Load 57 + 59: 6(float) FAdd 55 58 + 60: 49(ptr) AccessChain 37(g_mystruct) 48 38 + 61: 6(float) Load 60 + 62: 6(float) FAdd 59 61 + 65: 2 Load 64(idx) + 66: 49(ptr) AccessChain 18(g_array) 65 + 67: 6(float) Load 66 + 68: 6(float) FAdd 62 67 + 69: 7(fvec4) CompositeConstruct 68 68 68 68 + 71: 70(ptr) AccessChain 11(ps_output) 48 + Store 71 69 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.array.multidim.frag.out b/Test/baseResults/hlsl.array.multidim.frag.out new file mode 100644 index 00000000..a2df1a8d --- /dev/null +++ b/Test/baseResults/hlsl.array.multidim.frag.out @@ -0,0 +1,210 @@ +hlsl.array.multidim.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:10 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:10 Function Parameters: +0:? Sequence +0:14 move second child to first child (temp 4-component vector of float) +0:14 direct index (temp 4-component vector of float) +0:14 direct index (temp 3-element array of 4-component vector of float) +0:14 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:14 Constant: +0:14 1 (const int) +0:14 Constant: +0:14 2 (const int) +0:14 Construct vec4 (temp 4-component vector of float) +0:14 direct index (layout(offset=0 ) temp float) +0:14 direct index (layout(offset=0 ) temp 3-element array of float) +0:14 direct index (layout(offset=0 ) temp 4-element array of 3-element array of float) +0:14 float_array: direct index for structure (layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) +0:14 Constant: +0:14 0 (const uint) +0:14 Constant: +0:14 2 (const int) +0:14 Constant: +0:14 3 (const int) +0:14 Constant: +0:14 1 (const int) +0:15 move second child to first child (temp 3-element array of 4-component vector of float) +0:15 direct index (temp 3-element array of 4-component vector of float) +0:15 'float4_array_2' (temp 5-element array of 3-element array of 4-component vector of float) +0:15 Constant: +0:15 1 (const int) +0:15 direct index (temp 3-element array of 4-component vector of float) +0:15 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:15 Constant: +0:15 0 (const int) +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:18 direct index (temp 4-component vector of float) +0:18 direct index (temp 3-element array of 4-component vector of float) +0:18 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 2 (const int) +0:19 Sequence +0:19 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:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:10 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:10 Function Parameters: +0:? Sequence +0:14 move second child to first child (temp 4-component vector of float) +0:14 direct index (temp 4-component vector of float) +0:14 direct index (temp 3-element array of 4-component vector of float) +0:14 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:14 Constant: +0:14 1 (const int) +0:14 Constant: +0:14 2 (const int) +0:14 Construct vec4 (temp 4-component vector of float) +0:14 direct index (layout(offset=0 ) temp float) +0:14 direct index (layout(offset=0 ) temp 3-element array of float) +0:14 direct index (layout(offset=0 ) temp 4-element array of 3-element array of float) +0:14 float_array: direct index for structure (layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) +0:14 Constant: +0:14 0 (const uint) +0:14 Constant: +0:14 2 (const int) +0:14 Constant: +0:14 3 (const int) +0:14 Constant: +0:14 1 (const int) +0:15 move second child to first child (temp 3-element array of 4-component vector of float) +0:15 direct index (temp 3-element array of 4-component vector of float) +0:15 'float4_array_2' (temp 5-element array of 3-element array of 4-component vector of float) +0:15 Constant: +0:15 1 (const int) +0:15 direct index (temp 3-element array of 4-component vector of float) +0:15 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:15 Constant: +0:15 0 (const int) +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:18 direct index (temp 4-component vector of float) +0:18 direct index (temp 3-element array of 4-component vector of float) +0:18 'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 2 (const int) +0:19 Sequence +0:19 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:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 52 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 48 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 14 "float4_array_1" + Name 23 "$Global" + MemberName 23($Global) 0 "float_array" + Name 25 "" + Name 36 "float4_array_2" + Name 41 "PS_OUTPUT" + MemberName 41(PS_OUTPUT) 0 "Color" + Name 43 "psout" + Name 48 "Color" + Decorate 18 ArrayStride 16 + Decorate 20 ArrayStride 48 + Decorate 22 ArrayStride 192 + MemberDecorate 23($Global) 0 Offset 0 + Decorate 23($Global) Block + Decorate 25 DescriptorSet 0 + Decorate 48(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeInt 32 0 + 9: 8(int) Constant 3 + 10: TypeArray 7(fvec4) 9 + 11: 8(int) Constant 2 + 12: TypeArray 10 11 + 13: TypePointer Function 12 + 15: TypeInt 32 1 + 16: 15(int) Constant 1 + 17: 15(int) Constant 2 + 18: TypeArray 6(float) 9 + 19: 8(int) Constant 4 + 20: TypeArray 18 19 + 21: 8(int) Constant 5 + 22: TypeArray 20 21 + 23($Global): TypeStruct 22 + 24: TypePointer Uniform 23($Global) + 25: 24(ptr) Variable Uniform + 26: 15(int) Constant 0 + 27: 15(int) Constant 3 + 28: TypePointer Uniform 6(float) + 32: TypePointer Function 7(fvec4) + 34: TypeArray 10 21 + 35: TypePointer Function 34 + 37: TypePointer Function 10 + 41(PS_OUTPUT): TypeStruct 7(fvec4) + 42: TypePointer Function 41(PS_OUTPUT) + 47: TypePointer Output 7(fvec4) + 48(Color): 47(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label +14(float4_array_1): 13(ptr) Variable Function +36(float4_array_2): 35(ptr) Variable Function + 43(psout): 42(ptr) Variable Function + 29: 28(ptr) AccessChain 25 26 17 27 16 + 30: 6(float) Load 29 + 31: 7(fvec4) CompositeConstruct 30 30 30 30 + 33: 32(ptr) AccessChain 14(float4_array_1) 16 17 + Store 33 31 + 38: 37(ptr) AccessChain 14(float4_array_1) 26 + 39: 10 Load 38 + 40: 37(ptr) AccessChain 36(float4_array_2) 16 + Store 40 39 + 44: 32(ptr) AccessChain 14(float4_array_1) 16 17 + 45: 7(fvec4) Load 44 + 46: 32(ptr) AccessChain 43(psout) 26 + Store 46 45 + 49: 32(ptr) AccessChain 43(psout) 26 + 50: 7(fvec4) Load 49 + Store 48(Color) 50 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.assoc.frag.out b/Test/baseResults/hlsl.assoc.frag.out index 251c7bec..bcd16036 100755 --- a/Test/baseResults/hlsl.assoc.frag.out +++ b/Test/baseResults/hlsl.assoc.frag.out @@ -2,34 +2,43 @@ hlsl.assoc.frag 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; (temp 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 'a1' (in 4-component vector of float) -0:10 'a2' (in 4-component vector of float) -0:10 add (temp 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 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 @@ Linked fragment stage: 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; (temp 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 'a1' (in 4-component vector of float) -0:10 'a2' (in 4-component vector of float) -0:10 add (temp 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 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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) - 19: 7(fvec4) Load 12(a4) - 20: 7(fvec4) FAdd 18 19 - 21: 7(fvec4) FAdd 17 20 - 22: 7(fvec4) Load 13(a5) + 17: 7(fvec4) Load 9(a1) + 18: 7(fvec4) Load 10(a2) + 19: 7(fvec4) FAdd 17 18 + 20: 7(fvec4) Load 11(a3) + 21: 7(fvec4) FAdd 19 20 + 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 77e34fe6..a3ce657d 100755 --- a/Test/baseResults/hlsl.attribute.frag.out +++ b/Test/baseResults/hlsl.attribute.frag.out @@ -2,9 +2,9 @@ hlsl.attribute.frag 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ Linked fragment stage: 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; (temp 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 @@ gl_FragCoord origin is upper left 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.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out new file mode 100755 index 00000000..c6dc3e5c --- /dev/null +++ b/Test/baseResults/hlsl.basic.comp.out @@ -0,0 +1,58 @@ +hlsl.basic.comp +Shader version: 450 +local_size = (1, 1, 1) +0:? Sequence +0:4 Function Definition: main(i1; (temp void) +0:4 Function Parameters: +0:4 'dti' (in int LocalInvocationID) +0:? Sequence +0:5 'dti' (in int LocalInvocationID) +0:? Linker Objects +0:? 'a' (shared 100-element array of 4-component vector of float) +0:? 'dti' (in int LocalInvocationID) + + +Linked compute stage: + + +Shader version: 450 +local_size = (1, 1, 1) +0:? Sequence +0:4 Function Definition: main(i1; (temp void) +0:4 Function Parameters: +0:4 'dti' (in int LocalInvocationID) +0:? Sequence +0:5 'dti' (in int LocalInvocationID) +0:? Linker Objects +0:? 'a' (shared 100-element array of 4-component vector of float) +0:? 'dti' (in int LocalInvocationID) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 16 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 8 + ExecutionMode 4 LocalSize 1 1 1 + Name 4 "main" + Name 8 "dti" + Name 15 "a" + Decorate 8(dti) BuiltIn LocalInvocationId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Input 6(int) + 8(dti): 7(ptr) Variable Input + 9: TypeFloat 32 + 10: TypeVector 9(float) 4 + 11: TypeInt 32 0 + 12: 11(int) Constant 100 + 13: TypeArray 10(fvec4) 12 + 14: TypePointer Workgroup 13 + 15(a): 14(ptr) Variable Workgroup + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out new file mode 100755 index 00000000..2eb1f9ce --- /dev/null +++ b/Test/baseResults/hlsl.buffer.frag.out @@ -0,0 +1,199 @@ +hlsl.buffer.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:30 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) +0:30 Function Parameters: +0:30 'input' (layout(location=0 ) in 4-component vector of float) +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 'input' (layout(location=0 ) in 4-component vector of float) +0:31 v1: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1}) +0:31 Constant: +0:31 0 (const uint) +0:31 v2: direct index for structure (layout(row_major std430 ) buffer 4-component vector of float) +0:31 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2}) +0:31 Constant: +0:31 0 (const uint) +0:31 v3: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float) +0:31 'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3}) +0:31 Constant: +0:31 0 (const uint) +0:31 v4: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float) +0:31 'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...}) +0:31 Constant: +0:31 0 (const uint) +0:31 Branch: Return +0:? Linker Objects +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1}) +0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2}) +0:? 'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3}) +0:? 'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...}) +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:30 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) +0:30 Function Parameters: +0:30 'input' (layout(location=0 ) in 4-component vector of float) +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 add (temp 4-component vector of float) +0:31 'input' (layout(location=0 ) in 4-component vector of float) +0:31 v1: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1}) +0:31 Constant: +0:31 0 (const uint) +0:31 v2: direct index for structure (layout(row_major std430 ) buffer 4-component vector of float) +0:31 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2}) +0:31 Constant: +0:31 0 (const uint) +0:31 v3: direct index for structure (layout(row_major std140 ) uniform 4-component vector of float) +0:31 'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3}) +0:31 Constant: +0:31 0 (const uint) +0:31 v4: direct index for structure (layout(row_major std430 offset=16 ) buffer 4-component vector of float) +0:31 'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...}) +0:31 Constant: +0:31 0 (const uint) +0:31 Branch: Return +0:? Linker Objects +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1}) +0:? 'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2}) +0:? 'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3}) +0:? 'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...}) +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 42 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "PixelShaderFunction" 9 11 + ExecutionMode 4 OriginUpperLeft + Name 4 "PixelShaderFunction" + Name 9 "@entryPointOutput" + Name 11 "input" + Name 13 "" + MemberName 13 0 "v1" + Name 15 "" + Name 22 "" + MemberName 22 0 "v2" + Name 24 "" + Name 28 "cbufName" + MemberName 28(cbufName) 0 "v3" + MemberName 28(cbufName) 1 "i3" + Name 30 "" + Name 35 "tbufName" + MemberName 35(tbufName) 0 "v4" + MemberName 35(tbufName) 1 "i4" + MemberName 35(tbufName) 2 "f1" + MemberName 35(tbufName) 3 "f3" + MemberName 35(tbufName) 4 "f4" + MemberName 35(tbufName) 5 "f5" + MemberName 35(tbufName) 6 "f6" + MemberName 35(tbufName) 7 "f7" + MemberName 35(tbufName) 8 "m1" + MemberName 35(tbufName) 9 "m2" + MemberName 35(tbufName) 10 "m3" + MemberName 35(tbufName) 11 "m4" + Name 37 "" + 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(cbufName) 0 Offset 0 + MemberDecorate 28(cbufName) 1 Offset 20 + Decorate 28(cbufName) Block + Decorate 30 DescriptorSet 10 + Decorate 30 Binding 2 + MemberDecorate 35(tbufName) 0 Offset 16 + MemberDecorate 35(tbufName) 1 Offset 48 + MemberDecorate 35(tbufName) 2 Offset 60 + MemberDecorate 35(tbufName) 3 Offset 64 + MemberDecorate 35(tbufName) 4 Offset 68 + MemberDecorate 35(tbufName) 5 Offset 72 + MemberDecorate 35(tbufName) 6 Offset 76 + MemberDecorate 35(tbufName) 7 Offset 80 + MemberDecorate 35(tbufName) 8 RowMajor + MemberDecorate 35(tbufName) 8 Offset 96 + MemberDecorate 35(tbufName) 8 MatrixStride 16 + MemberDecorate 35(tbufName) 9 ColMajor + MemberDecorate 35(tbufName) 9 Offset 160 + MemberDecorate 35(tbufName) 9 MatrixStride 16 + MemberDecorate 35(tbufName) 10 RowMajor + MemberDecorate 35(tbufName) 10 Offset 208 + MemberDecorate 35(tbufName) 10 MatrixStride 16 + MemberDecorate 35(tbufName) 11 RowMajor + MemberDecorate 35(tbufName) 11 Offset 272 + MemberDecorate 35(tbufName) 11 MatrixStride 16 + Decorate 35(tbufName) BufferBlock + Decorate 37 DescriptorSet 0 + Decorate 37 Binding 8 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 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(cbufName): TypeStruct 7(fvec4) 16(int) + 29: TypePointer Uniform 28(cbufName) + 30: 29(ptr) Variable Uniform + 34: TypeMatrix 7(fvec4) 3 + 35(tbufName): TypeStruct 7(fvec4) 16(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 34 34 34 34 + 36: TypePointer Uniform 35(tbufName) + 37: 36(ptr) Variable Uniform +4(PixelShaderFunction): 2 Function None 3 + 5: Label + 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 + 38: 18(ptr) AccessChain 37 17 + 39: 7(fvec4) Load 38 + 40: 7(fvec4) FAdd 33 39 + Store 9(@entryPointOutput) 40 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out new file mode 100644 index 00000000..ff18441c --- /dev/null +++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out @@ -0,0 +1,553 @@ +hlsl.calculatelod.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp float) +0:28 'txval10' (temp float) +0:28 direct index (temp float) +0:? textureQueryLod (temp float) +0:28 Construct combined texture-sampler (temp sampler1DArray) +0:28 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:28 Constant: +0:28 0.100000 +0:28 Constant: +0:28 0 (const int) +0:29 Sequence +0:29 move second child to first child (temp float) +0:29 'txval11' (temp float) +0:29 direct index (temp float) +0:? textureQueryLod (temp float) +0:29 Construct combined texture-sampler (temp isampler1DArray) +0:29 'g_tTex1di4a' (uniform itexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:29 Constant: +0:29 0.200000 +0:29 Constant: +0:29 0 (const int) +0:30 Sequence +0:30 move second child to first child (temp float) +0:30 'txval12' (temp float) +0:30 direct index (temp float) +0:? textureQueryLod (temp float) +0:30 Construct combined texture-sampler (temp usampler1DArray) +0:30 'g_tTex1du4a' (uniform utexture1DArray) +0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:30 Constant: +0:30 0.300000 +0:30 Constant: +0:30 0 (const int) +0:32 Sequence +0:32 move second child to first child (temp float) +0:32 'txval20' (temp float) +0:32 direct index (temp float) +0:? textureQueryLod (temp float) +0:32 Construct combined texture-sampler (temp sampler2DArray) +0:32 'g_tTex2df4a' (uniform texture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:32 Constant: +0:32 0 (const int) +0:33 Sequence +0:33 move second child to first child (temp float) +0:33 'txval21' (temp float) +0:33 direct index (temp float) +0:? textureQueryLod (temp float) +0:33 Construct combined texture-sampler (temp isampler2DArray) +0:33 'g_tTex2di4a' (uniform itexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:33 Constant: +0:33 0 (const int) +0:34 Sequence +0:34 move second child to first child (temp float) +0:34 'txval22' (temp float) +0:34 direct index (temp float) +0:? textureQueryLod (temp float) +0:34 Construct combined texture-sampler (temp usampler2DArray) +0:34 'g_tTex2du4a' (uniform utexture2DArray) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:34 Constant: +0:34 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp float) +0:36 'txval40' (temp float) +0:36 direct index (temp float) +0:? textureQueryLod (temp float) +0:36 Construct combined texture-sampler (temp samplerCubeArray) +0:36 'g_tTexcdf4a' (uniform textureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:36 Constant: +0:36 0 (const int) +0:37 Sequence +0:37 move second child to first child (temp float) +0:37 'txval41' (temp float) +0:37 direct index (temp float) +0:? textureQueryLod (temp float) +0:37 Construct combined texture-sampler (temp isamplerCubeArray) +0:37 'g_tTexcdi4a' (uniform itextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:37 Constant: +0:37 0 (const int) +0:38 Sequence +0:38 move second child to first child (temp float) +0:38 'txval42' (temp float) +0:38 direct index (temp float) +0:? textureQueryLod (temp float) +0:38 Construct combined texture-sampler (temp usamplerCubeArray) +0:38 'g_tTexcdu4a' (uniform utextureCubeArray) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:38 Constant: +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 Depth}) +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1.000000 +0:40 1.000000 +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) +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 Sequence +0:43 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp float) +0:28 'txval10' (temp float) +0:28 direct index (temp float) +0:? textureQueryLod (temp float) +0:28 Construct combined texture-sampler (temp sampler1DArray) +0:28 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:28 Constant: +0:28 0.100000 +0:28 Constant: +0:28 0 (const int) +0:29 Sequence +0:29 move second child to first child (temp float) +0:29 'txval11' (temp float) +0:29 direct index (temp float) +0:? textureQueryLod (temp float) +0:29 Construct combined texture-sampler (temp isampler1DArray) +0:29 'g_tTex1di4a' (uniform itexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:29 Constant: +0:29 0.200000 +0:29 Constant: +0:29 0 (const int) +0:30 Sequence +0:30 move second child to first child (temp float) +0:30 'txval12' (temp float) +0:30 direct index (temp float) +0:? textureQueryLod (temp float) +0:30 Construct combined texture-sampler (temp usampler1DArray) +0:30 'g_tTex1du4a' (uniform utexture1DArray) +0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:30 Constant: +0:30 0.300000 +0:30 Constant: +0:30 0 (const int) +0:32 Sequence +0:32 move second child to first child (temp float) +0:32 'txval20' (temp float) +0:32 direct index (temp float) +0:? textureQueryLod (temp float) +0:32 Construct combined texture-sampler (temp sampler2DArray) +0:32 'g_tTex2df4a' (uniform texture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:32 Constant: +0:32 0 (const int) +0:33 Sequence +0:33 move second child to first child (temp float) +0:33 'txval21' (temp float) +0:33 direct index (temp float) +0:? textureQueryLod (temp float) +0:33 Construct combined texture-sampler (temp isampler2DArray) +0:33 'g_tTex2di4a' (uniform itexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:33 Constant: +0:33 0 (const int) +0:34 Sequence +0:34 move second child to first child (temp float) +0:34 'txval22' (temp float) +0:34 direct index (temp float) +0:? textureQueryLod (temp float) +0:34 Construct combined texture-sampler (temp usampler2DArray) +0:34 'g_tTex2du4a' (uniform utexture2DArray) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:34 Constant: +0:34 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp float) +0:36 'txval40' (temp float) +0:36 direct index (temp float) +0:? textureQueryLod (temp float) +0:36 Construct combined texture-sampler (temp samplerCubeArray) +0:36 'g_tTexcdf4a' (uniform textureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:36 Constant: +0:36 0 (const int) +0:37 Sequence +0:37 move second child to first child (temp float) +0:37 'txval41' (temp float) +0:37 direct index (temp float) +0:? textureQueryLod (temp float) +0:37 Construct combined texture-sampler (temp isamplerCubeArray) +0:37 'g_tTexcdi4a' (uniform itextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:37 Constant: +0:37 0 (const int) +0:38 Sequence +0:38 move second child to first child (temp float) +0:38 'txval42' (temp float) +0:38 direct index (temp float) +0:? textureQueryLod (temp float) +0:38 Construct combined texture-sampler (temp usamplerCubeArray) +0:38 'g_tTexcdu4a' (uniform utextureCubeArray) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:38 Constant: +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 Depth}) +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1.000000 +0:40 1.000000 +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) +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 Sequence +0:43 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 141 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + Capability ImageQuery + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 132 136 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "txval10" + Name 11 "g_tTex1df4a" + Name 15 "g_sSamp" + Name 25 "txval11" + Name 28 "g_tTex1di4a" + Name 36 "txval12" + Name 40 "g_tTex1du4a" + Name 48 "txval20" + Name 51 "g_tTex2df4a" + Name 59 "txval21" + Name 62 "g_tTex2di4a" + Name 71 "txval22" + Name 74 "g_tTex2du4a" + Name 84 "txval40" + Name 87 "g_tTexcdf4a" + Name 96 "txval41" + Name 99 "g_tTexcdi4a" + Name 107 "txval42" + Name 110 "g_tTexcdu4a" + Name 122 "PS_OUTPUT" + MemberName 122(PS_OUTPUT) 0 "Color" + MemberName 122(PS_OUTPUT) 1 "Depth" + Name 124 "psout" + Name 132 "Color" + Name 136 "Depth" + Name 140 "g_tTex1df4" + Decorate 11(g_tTex1df4a) DescriptorSet 0 + Decorate 11(g_tTex1df4a) Binding 1 + Decorate 15(g_sSamp) DescriptorSet 0 + Decorate 15(g_sSamp) Binding 0 + Decorate 28(g_tTex1di4a) DescriptorSet 0 + Decorate 40(g_tTex1du4a) DescriptorSet 0 + Decorate 51(g_tTex2df4a) DescriptorSet 0 + Decorate 62(g_tTex2di4a) DescriptorSet 0 + Decorate 74(g_tTex2du4a) DescriptorSet 0 + Decorate 87(g_tTexcdf4a) DescriptorSet 0 + Decorate 99(g_tTexcdi4a) DescriptorSet 0 + Decorate 110(g_tTexcdu4a) DescriptorSet 0 + Decorate 132(Color) Location 0 + Decorate 136(Depth) BuiltIn FragDepth + Decorate 140(g_tTex1df4) DescriptorSet 0 + Decorate 140(g_tTex1df4) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D array sampled format:Unknown + 10: TypePointer UniformConstant 9 + 11(g_tTex1df4a): 10(ptr) Variable UniformConstant + 13: TypeSampler + 14: TypePointer UniformConstant 13 + 15(g_sSamp): 14(ptr) Variable UniformConstant + 17: TypeSampledImage 9 + 19: 6(float) Constant 1036831949 + 20: TypeVector 6(float) 2 + 22: TypeInt 32 1 + 23: 22(int) Constant 0 + 26: TypeImage 22(int) 1D array sampled format:Unknown + 27: TypePointer UniformConstant 26 + 28(g_tTex1di4a): 27(ptr) Variable UniformConstant + 31: TypeSampledImage 26 + 33: 6(float) Constant 1045220557 + 37: TypeInt 32 0 + 38: TypeImage 37(int) 1D array sampled format:Unknown + 39: TypePointer UniformConstant 38 + 40(g_tTex1du4a): 39(ptr) Variable UniformConstant + 43: TypeSampledImage 38 + 45: 6(float) Constant 1050253722 + 49: TypeImage 6(float) 2D array sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex2df4a): 50(ptr) Variable UniformConstant + 54: TypeSampledImage 49 + 56: 20(fvec2) ConstantComposite 19 33 + 60: TypeImage 22(int) 2D array sampled format:Unknown + 61: TypePointer UniformConstant 60 + 62(g_tTex2di4a): 61(ptr) Variable UniformConstant + 65: TypeSampledImage 60 + 67: 6(float) Constant 1053609165 + 68: 20(fvec2) ConstantComposite 45 67 + 72: TypeImage 37(int) 2D array sampled format:Unknown + 73: TypePointer UniformConstant 72 + 74(g_tTex2du4a): 73(ptr) Variable UniformConstant + 77: TypeSampledImage 72 + 79: 6(float) Constant 1056964608 + 80: 6(float) Constant 1058642330 + 81: 20(fvec2) ConstantComposite 79 80 + 85: TypeImage 6(float) Cube array sampled format:Unknown + 86: TypePointer UniformConstant 85 + 87(g_tTexcdf4a): 86(ptr) Variable UniformConstant + 90: TypeSampledImage 85 + 92: TypeVector 6(float) 3 + 93: 92(fvec3) ConstantComposite 19 33 45 + 97: TypeImage 22(int) Cube array sampled format:Unknown + 98: TypePointer UniformConstant 97 + 99(g_tTexcdi4a): 98(ptr) Variable UniformConstant + 102: TypeSampledImage 97 + 104: 92(fvec3) ConstantComposite 67 79 80 + 108: TypeImage 37(int) Cube array sampled format:Unknown + 109: TypePointer UniformConstant 108 +110(g_tTexcdu4a): 109(ptr) Variable UniformConstant + 113: TypeSampledImage 108 + 115: 6(float) Constant 1060320051 + 116: 6(float) Constant 1061997773 + 117: 6(float) Constant 1063675494 + 118: 92(fvec3) ConstantComposite 115 116 117 + 121: TypeVector 6(float) 4 + 122(PS_OUTPUT): TypeStruct 121(fvec4) 6(float) + 123: TypePointer Function 122(PS_OUTPUT) + 125: 6(float) Constant 1065353216 + 126: 121(fvec4) ConstantComposite 125 125 125 125 + 127: TypePointer Function 121(fvec4) + 129: 22(int) Constant 1 + 131: TypePointer Output 121(fvec4) + 132(Color): 131(ptr) Variable Output + 135: TypePointer Output 6(float) + 136(Depth): 135(ptr) Variable Output + 140(g_tTex1df4): 10(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 8(txval10): 7(ptr) Variable Function + 25(txval11): 7(ptr) Variable Function + 36(txval12): 7(ptr) Variable Function + 48(txval20): 7(ptr) Variable Function + 59(txval21): 7(ptr) Variable Function + 71(txval22): 7(ptr) Variable Function + 84(txval40): 7(ptr) Variable Function + 96(txval41): 7(ptr) Variable Function + 107(txval42): 7(ptr) Variable Function + 124(psout): 123(ptr) Variable Function + 12: 9 Load 11(g_tTex1df4a) + 16: 13 Load 15(g_sSamp) + 18: 17 SampledImage 12 16 + 21: 20(fvec2) ImageQueryLod 18 19 + 24: 6(float) CompositeExtract 21 0 + Store 8(txval10) 24 + 29: 26 Load 28(g_tTex1di4a) + 30: 13 Load 15(g_sSamp) + 32: 31 SampledImage 29 30 + 34: 20(fvec2) ImageQueryLod 32 33 + 35: 6(float) CompositeExtract 34 0 + Store 25(txval11) 35 + 41: 38 Load 40(g_tTex1du4a) + 42: 13 Load 15(g_sSamp) + 44: 43 SampledImage 41 42 + 46: 20(fvec2) ImageQueryLod 44 45 + 47: 6(float) CompositeExtract 46 0 + Store 36(txval12) 47 + 52: 49 Load 51(g_tTex2df4a) + 53: 13 Load 15(g_sSamp) + 55: 54 SampledImage 52 53 + 57: 20(fvec2) ImageQueryLod 55 56 + 58: 6(float) CompositeExtract 57 0 + Store 48(txval20) 58 + 63: 60 Load 62(g_tTex2di4a) + 64: 13 Load 15(g_sSamp) + 66: 65 SampledImage 63 64 + 69: 20(fvec2) ImageQueryLod 66 68 + 70: 6(float) CompositeExtract 69 0 + Store 59(txval21) 70 + 75: 72 Load 74(g_tTex2du4a) + 76: 13 Load 15(g_sSamp) + 78: 77 SampledImage 75 76 + 82: 20(fvec2) ImageQueryLod 78 81 + 83: 6(float) CompositeExtract 82 0 + Store 71(txval22) 83 + 88: 85 Load 87(g_tTexcdf4a) + 89: 13 Load 15(g_sSamp) + 91: 90 SampledImage 88 89 + 94: 20(fvec2) ImageQueryLod 91 93 + 95: 6(float) CompositeExtract 94 0 + Store 84(txval40) 95 + 100: 97 Load 99(g_tTexcdi4a) + 101: 13 Load 15(g_sSamp) + 103: 102 SampledImage 100 101 + 105: 20(fvec2) ImageQueryLod 103 104 + 106: 6(float) CompositeExtract 105 0 + Store 96(txval41) 106 + 111: 108 Load 110(g_tTexcdu4a) + 112: 13 Load 15(g_sSamp) + 114: 113 SampledImage 111 112 + 119: 20(fvec2) ImageQueryLod 114 118 + 120: 6(float) CompositeExtract 119 0 + Store 107(txval42) 120 + 128: 127(ptr) AccessChain 124(psout) 23 + Store 128 126 + 130: 7(ptr) AccessChain 124(psout) 129 + Store 130 125 + 133: 127(ptr) AccessChain 124(psout) 23 + 134: 121(fvec4) Load 133 + Store 132(Color) 134 + 137: 7(ptr) AccessChain 124(psout) 129 + 138: 6(float) Load 137 + Store 136(Depth) 138 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out new file mode 100644 index 00000000..ecd1f0d1 --- /dev/null +++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out @@ -0,0 +1,358 @@ +hlsl.calculatelodunclamped.dx10.frag +ERROR: 0:28: '' : unimplemented: CalculateLevelOfDetailUnclamped +ERROR: 0:29: '' : unimplemented: CalculateLevelOfDetailUnclamped +ERROR: 0:30: '' : unimplemented: CalculateLevelOfDetailUnclamped +ERROR: 0:32: '' : unimplemented: CalculateLevelOfDetailUnclamped +ERROR: 0:33: '' : unimplemented: CalculateLevelOfDetailUnclamped +ERROR: 0:34: '' : unimplemented: CalculateLevelOfDetailUnclamped +ERROR: 0:36: '' : unimplemented: CalculateLevelOfDetailUnclamped +ERROR: 0:37: '' : unimplemented: CalculateLevelOfDetailUnclamped +ERROR: 0:38: '' : unimplemented: CalculateLevelOfDetailUnclamped +ERROR: 9 compilation errors. No code generated. + + +Shader version: 450 +gl_FragCoord origin is upper left +ERROR: node is still EOpNull! +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp float) +0:28 'txval10' (temp float) +0:28 direct index (temp float) +0:? textureQueryLod (temp float) +0:28 Construct combined texture-sampler (temp sampler1DArray) +0:28 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:28 Constant: +0:28 0.100000 +0:28 Constant: +0:28 0 (const int) +0:29 Sequence +0:29 move second child to first child (temp float) +0:29 'txval11' (temp float) +0:29 direct index (temp float) +0:? textureQueryLod (temp float) +0:29 Construct combined texture-sampler (temp isampler1DArray) +0:29 'g_tTex1di4a' (uniform itexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:29 Constant: +0:29 0.200000 +0:29 Constant: +0:29 0 (const int) +0:30 Sequence +0:30 move second child to first child (temp float) +0:30 'txval12' (temp float) +0:30 direct index (temp float) +0:? textureQueryLod (temp float) +0:30 Construct combined texture-sampler (temp usampler1DArray) +0:30 'g_tTex1du4a' (uniform utexture1DArray) +0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:30 Constant: +0:30 0.300000 +0:30 Constant: +0:30 0 (const int) +0:32 Sequence +0:32 move second child to first child (temp float) +0:32 'txval20' (temp float) +0:32 direct index (temp float) +0:? textureQueryLod (temp float) +0:32 Construct combined texture-sampler (temp sampler2DArray) +0:32 'g_tTex2df4a' (uniform texture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:32 Constant: +0:32 0 (const int) +0:33 Sequence +0:33 move second child to first child (temp float) +0:33 'txval21' (temp float) +0:33 direct index (temp float) +0:? textureQueryLod (temp float) +0:33 Construct combined texture-sampler (temp isampler2DArray) +0:33 'g_tTex2di4a' (uniform itexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:33 Constant: +0:33 0 (const int) +0:34 Sequence +0:34 move second child to first child (temp float) +0:34 'txval22' (temp float) +0:34 direct index (temp float) +0:? textureQueryLod (temp float) +0:34 Construct combined texture-sampler (temp usampler2DArray) +0:34 'g_tTex2du4a' (uniform utexture2DArray) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:34 Constant: +0:34 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp float) +0:36 'txval40' (temp float) +0:36 direct index (temp float) +0:? textureQueryLod (temp float) +0:36 Construct combined texture-sampler (temp samplerCubeArray) +0:36 'g_tTexcdf4a' (uniform textureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:36 Constant: +0:36 0 (const int) +0:37 Sequence +0:37 move second child to first child (temp float) +0:37 'txval41' (temp float) +0:37 direct index (temp float) +0:? textureQueryLod (temp float) +0:37 Construct combined texture-sampler (temp isamplerCubeArray) +0:37 'g_tTexcdi4a' (uniform itextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:37 Constant: +0:37 0 (const int) +0:38 Sequence +0:38 move second child to first child (temp float) +0:38 'txval42' (temp float) +0:38 direct index (temp float) +0:? textureQueryLod (temp float) +0:38 Construct combined texture-sampler (temp usamplerCubeArray) +0:38 'g_tTexcdu4a' (uniform utextureCubeArray) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:38 Constant: +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 Depth}) +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1.000000 +0:40 1.000000 +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) +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 Sequence +0:43 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +ERROR: node is still EOpNull! +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp float) +0:28 'txval10' (temp float) +0:28 direct index (temp float) +0:? textureQueryLod (temp float) +0:28 Construct combined texture-sampler (temp sampler1DArray) +0:28 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:28 Constant: +0:28 0.100000 +0:28 Constant: +0:28 0 (const int) +0:29 Sequence +0:29 move second child to first child (temp float) +0:29 'txval11' (temp float) +0:29 direct index (temp float) +0:? textureQueryLod (temp float) +0:29 Construct combined texture-sampler (temp isampler1DArray) +0:29 'g_tTex1di4a' (uniform itexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:29 Constant: +0:29 0.200000 +0:29 Constant: +0:29 0 (const int) +0:30 Sequence +0:30 move second child to first child (temp float) +0:30 'txval12' (temp float) +0:30 direct index (temp float) +0:? textureQueryLod (temp float) +0:30 Construct combined texture-sampler (temp usampler1DArray) +0:30 'g_tTex1du4a' (uniform utexture1DArray) +0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:30 Constant: +0:30 0.300000 +0:30 Constant: +0:30 0 (const int) +0:32 Sequence +0:32 move second child to first child (temp float) +0:32 'txval20' (temp float) +0:32 direct index (temp float) +0:? textureQueryLod (temp float) +0:32 Construct combined texture-sampler (temp sampler2DArray) +0:32 'g_tTex2df4a' (uniform texture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:32 Constant: +0:32 0 (const int) +0:33 Sequence +0:33 move second child to first child (temp float) +0:33 'txval21' (temp float) +0:33 direct index (temp float) +0:? textureQueryLod (temp float) +0:33 Construct combined texture-sampler (temp isampler2DArray) +0:33 'g_tTex2di4a' (uniform itexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:33 Constant: +0:33 0 (const int) +0:34 Sequence +0:34 move second child to first child (temp float) +0:34 'txval22' (temp float) +0:34 direct index (temp float) +0:? textureQueryLod (temp float) +0:34 Construct combined texture-sampler (temp usampler2DArray) +0:34 'g_tTex2du4a' (uniform utexture2DArray) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:34 Constant: +0:34 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp float) +0:36 'txval40' (temp float) +0:36 direct index (temp float) +0:? textureQueryLod (temp float) +0:36 Construct combined texture-sampler (temp samplerCubeArray) +0:36 'g_tTexcdf4a' (uniform textureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:36 Constant: +0:36 0 (const int) +0:37 Sequence +0:37 move second child to first child (temp float) +0:37 'txval41' (temp float) +0:37 direct index (temp float) +0:? textureQueryLod (temp float) +0:37 Construct combined texture-sampler (temp isamplerCubeArray) +0:37 'g_tTexcdi4a' (uniform itextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:37 Constant: +0:37 0 (const int) +0:38 Sequence +0:38 move second child to first child (temp float) +0:38 'txval42' (temp float) +0:38 direct index (temp float) +0:? textureQueryLod (temp float) +0:38 Construct combined texture-sampler (temp usamplerCubeArray) +0:38 'g_tTexcdu4a' (uniform utextureCubeArray) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:38 Constant: +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 Depth}) +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1.000000 +0:40 1.000000 +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) +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 Sequence +0:43 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 24b18cda..bf7183f2 100755 --- a/Test/baseResults/hlsl.cast.frag.out +++ b/Test/baseResults/hlsl.cast.frag.out @@ -2,24 +2,29 @@ hlsl.cast.frag 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; (temp 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 @@ Linked fragment stage: 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; (temp 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 new file mode 100755 index 00000000..32edbda7 --- /dev/null +++ b/Test/baseResults/hlsl.conditional.frag.out @@ -0,0 +1,372 @@ +hlsl.conditional.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) +0:2 Function Parameters: +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) +0:3 'a' (temp int) +0:3 Constant: +0:3 5 (const int) +0:4 Sequence +0:4 move second child to first child (temp int) +0:4 'b' (temp int) +0:4 Constant: +0:4 6 (const int) +0:5 Sequence +0:5 move second child to first child (temp int) +0:5 'c' (temp int) +0:5 Constant: +0:5 7 (const int) +0:6 Sequence +0:6 move second child to first child (temp int) +0:6 'd' (temp int) +0:6 Constant: +0:6 7 (const int) +0:7 Sequence +0:7 move second child to first child (temp 4-component vector of float) +0:7 'ret' (temp 4-component vector of float) +0:9 add (temp 4-component vector of float) +0:8 add (temp 4-component vector of float) +0:7 add (temp 4-component vector of float) +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' (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' (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' (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' (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) +0:12 move second child to first child (temp int) +0:12 'a' (temp int) +0:12 Test condition and select (temp int) +0:12 Condition +0:12 'b' (temp int) +0:12 true case +0:12 move second child to first child (temp int) +0:12 'c' (temp int) +0:12 'd' (temp int) +0:12 false case +0:12 Constant: +0:12 10 (const int) +0:12 move second child to first child (temp int) +0:12 'b' (temp int) +0:12 Test condition and select (temp int) +0:12 Condition +0:12 'a' (temp int) +0:12 true case +0:12 move second child to first child (temp int) +0:12 'd' (temp int) +0:12 'c' (temp int) +0:12 false case +0:12 Constant: +0:12 11 (const int) +0:14 move second child to first child (temp 4-component vector of float) +0:14 'f' (temp 4-component vector of float) +0:14 Test condition and select (temp 4-component vector of float) +0:14 Condition +0:14 Compare Less Than (temp bool) +0:14 direct index (temp float) +0:14 'ret' (temp 4-component vector of float) +0:14 Constant: +0:14 0 (const int) +0:14 direct index (temp 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' (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' (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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float) +0:2 Function Parameters: +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) +0:3 'a' (temp int) +0:3 Constant: +0:3 5 (const int) +0:4 Sequence +0:4 move second child to first child (temp int) +0:4 'b' (temp int) +0:4 Constant: +0:4 6 (const int) +0:5 Sequence +0:5 move second child to first child (temp int) +0:5 'c' (temp int) +0:5 Constant: +0:5 7 (const int) +0:6 Sequence +0:6 move second child to first child (temp int) +0:6 'd' (temp int) +0:6 Constant: +0:6 7 (const int) +0:7 Sequence +0:7 move second child to first child (temp 4-component vector of float) +0:7 'ret' (temp 4-component vector of float) +0:9 add (temp 4-component vector of float) +0:8 add (temp 4-component vector of float) +0:7 add (temp 4-component vector of float) +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' (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' (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' (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' (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) +0:12 move second child to first child (temp int) +0:12 'a' (temp int) +0:12 Test condition and select (temp int) +0:12 Condition +0:12 'b' (temp int) +0:12 true case +0:12 move second child to first child (temp int) +0:12 'c' (temp int) +0:12 'd' (temp int) +0:12 false case +0:12 Constant: +0:12 10 (const int) +0:12 move second child to first child (temp int) +0:12 'b' (temp int) +0:12 Test condition and select (temp int) +0:12 Condition +0:12 'a' (temp int) +0:12 true case +0:12 move second child to first child (temp int) +0:12 'd' (temp int) +0:12 'c' (temp int) +0:12 false case +0:12 Constant: +0:12 11 (const int) +0:14 move second child to first child (temp 4-component vector of float) +0:14 'f' (temp 4-component vector of float) +0:14 Test condition and select (temp 4-component vector of float) +0:14 Condition +0:14 Compare Less Than (temp bool) +0:14 direct index (temp float) +0:14 'ret' (temp 4-component vector of float) +0:14 Constant: +0:14 0 (const int) +0:14 direct index (temp 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' (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' (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 91 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "PixelShaderFunction" 22 83 + ExecutionMode 4 OriginUpperLeft + Name 4 "PixelShaderFunction" + Name 8 "a" + Name 10 "b" + Name 12 "c" + Name 14 "d" + Name 18 "ret" + 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 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 5 + 11: 6(int) Constant 6 + 13: 6(int) Constant 7 + 15: TypeFloat 32 + 16: TypeVector 15(float) 4 + 17: TypePointer Function 16(fvec4) + 21: TypePointer Input 16(fvec4) + 22(input): 21(ptr) Variable Input + 47: 6(int) Constant 10 + 55: 6(int) Constant 11 + 59: TypeInt 32 0 + 60: 59(int) Constant 0 + 61: TypePointer Function 15(float) + 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 + 10(b): 7(ptr) Variable Function + 12(c): 7(ptr) Variable Function + 14(d): 7(ptr) Variable Function + 18(ret): 17(ptr) Variable Function + 40(e): 7(ptr) Variable Function + 41: 7(ptr) Variable Function + 49: 7(ptr) Variable Function + 57(f): 17(ptr) Variable Function + 58: 17(ptr) Variable Function + Store 8(a) 9 + Store 10(b) 11 + Store 12(c) 13 + Store 14(d) 13 + 19: 6(int) Load 8(a) + 20: 15(float) ConvertSToF 19 + 23: 16(fvec4) Load 22(input) + 24: 16(fvec4) VectorTimesScalar 23 20 + 25: 6(int) Load 10(b) + 26: 15(float) ConvertSToF 25 + 27: 16(fvec4) Load 22(input) + 28: 16(fvec4) VectorTimesScalar 27 26 + 29: 16(fvec4) FAdd 24 28 + 30: 6(int) Load 12(c) + 31: 15(float) ConvertSToF 30 + 32: 16(fvec4) Load 22(input) + 33: 16(fvec4) VectorTimesScalar 32 31 + 34: 16(fvec4) FAdd 29 33 + 35: 6(int) Load 14(d) + 36: 15(float) ConvertSToF 35 + 37: 16(fvec4) Load 22(input) + 38: 16(fvec4) VectorTimesScalar 37 36 + 39: 16(fvec4) FAdd 34 38 + Store 18(ret) 39 + 42: 6(int) Load 10(b) + SelectionMerge 44 None + BranchConditional 42 43 46 + 43: Label + 45: 6(int) Load 14(d) + Store 12(c) 45 + Store 41 45 + Branch 44 + 46: Label + Store 41 47 + Branch 44 + 44: Label + 48: 6(int) Load 41 + Store 8(a) 48 + Store 40(e) 48 + 50: 6(int) Load 8(a) + SelectionMerge 52 None + BranchConditional 50 51 54 + 51: Label + 53: 6(int) Load 12(c) + Store 14(d) 53 + Store 49 53 + Branch 52 + 54: Label + Store 49 55 + Branch 52 + 52: Label + 56: 6(int) Load 49 + Store 10(b) 56 + 62: 61(ptr) AccessChain 18(ret) 60 + 63: 15(float) Load 62 + 66: 65(ptr) AccessChain 22(input) 64 + 67: 15(float) Load 66 + 69: 68(bool) FOrdLessThan 63 67 + SelectionMerge 71 None + BranchConditional 69 70 76 + 70: Label + 72: 6(int) Load 12(c) + 73: 15(float) ConvertSToF 72 + 74: 16(fvec4) Load 22(input) + 75: 16(fvec4) VectorTimesScalar 74 73 + Store 58 75 + Branch 71 + 76: Label + 77: 6(int) Load 14(d) + 78: 15(float) ConvertSToF 77 + 79: 16(fvec4) Load 22(input) + 80: 16(fvec4) VectorTimesScalar 79 78 + Store 58 80 + Branch 71 + 71: Label + 81: 16(fvec4) Load 58 + Store 57(f) 81 + 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 new file mode 100644 index 00000000..e6ed6e13 --- /dev/null +++ b/Test/baseResults/hlsl.constructexpr.frag.out @@ -0,0 +1,150 @@ +hlsl.constructexpr.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:4 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:4 Function Parameters: +0:? Sequence +0:6 Constant: +0:6 3 (const int) +0:7 Constant: +0:7 4 (const int) +0:8 Constant: +0:8 5 (const int) +0:9 Constant: +0:9 6 (const int) +0:10 Constant: +0:10 7 (const int) +0:11 Constant: +0:11 8 (const int) +0:12 Comma (temp 2-component vector of float) +0:? Constant: +0:? 9.000000 +0:? 10.000000 +0:? Constant: +0:? 11.000000 +0:? 12.000000 +0:15 move second child to first child (temp 4-component vector of float) +0:15 color: direct index for structure (temp 4-component vector of float) +0:15 'ps_output' (temp structure{temp 4-component vector of float color}) +0:15 Constant: +0:15 0 (const int) +0:15 Constant: +0:15 1.000000 +0:15 1.000000 +0:15 1.000000 +0:15 1.000000 +0:16 Sequence +0:16 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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:4 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:4 Function Parameters: +0:? Sequence +0:6 Constant: +0:6 3 (const int) +0:7 Constant: +0:7 4 (const int) +0:8 Constant: +0:8 5 (const int) +0:9 Constant: +0:9 6 (const int) +0:10 Constant: +0:10 7 (const int) +0:11 Constant: +0:11 8 (const int) +0:12 Comma (temp 2-component vector of float) +0:? Constant: +0:? 9.000000 +0:? 10.000000 +0:? Constant: +0:? 11.000000 +0:? 12.000000 +0:15 move second child to first child (temp 4-component vector of float) +0:15 color: direct index for structure (temp 4-component vector of float) +0:15 'ps_output' (temp structure{temp 4-component vector of float color}) +0:15 Constant: +0:15 0 (const int) +0:15 Constant: +0:15 1.000000 +0:15 1.000000 +0:15 1.000000 +0:15 1.000000 +0:16 Sequence +0:16 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 35 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 31 + ExecutionMode 4 OriginUpperLeft + 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 + 7: 6(int) Constant 3 + 8: 6(int) Constant 4 + 9: 6(int) Constant 5 + 10: 6(int) Constant 6 + 11: 6(int) Constant 7 + 12: 6(int) Constant 8 + 13: TypeFloat 32 + 14: TypeVector 13(float) 2 + 15: 13(float) Constant 1091567616 + 16: 13(float) Constant 1092616192 + 17: 14(fvec2) ConstantComposite 15 16 + 18: 13(float) Constant 1093664768 + 19: 13(float) Constant 1094713344 + 20: 14(fvec2) ConstantComposite 18 19 + 21: TypeVector 13(float) 4 + 22(PS_OUTPUT): TypeStruct 21(fvec4) + 23: TypePointer Function 22(PS_OUTPUT) + 25: 6(int) Constant 0 + 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 + 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 00000000..0b532460 --- /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; (temp 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; (temp 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 00000000..ec664e10 --- /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( (temp 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( (temp 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 324029ad..9b4f2c72 100755 --- a/Test/baseResults/hlsl.discard.frag.out +++ b/Test/baseResults/hlsl.discard.frag.out @@ -2,7 +2,7 @@ hlsl.discard.frag 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; (temp void) 0:2 Function Parameters: 0:2 'f' (in float) 0:? Sequence @@ -14,19 +14,19 @@ gl_FragCoord origin is upper left 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; (temp 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 Function Call: foo(f1; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ Linked fragment stage: 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; (temp void) 0:2 Function Parameters: 0:2 'f' (in float) 0:? Sequence @@ -60,19 +61,19 @@ gl_FragCoord origin is upper left 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; (temp 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 Function Call: foo(f1; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 c14a3a57..2d5a8fbf 100755 --- a/Test/baseResults/hlsl.doLoop.frag.out +++ b/Test/baseResults/hlsl.doLoop.frag.out @@ -2,9 +2,9 @@ hlsl.doLoop.frag 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ Linked fragment stage: 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 00000000..04e3935d --- /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; (temp 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; (temp 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:15 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; (temp 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; (temp float) +0:17 Comma (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 2-component vector of float) +0:17 v: direct index for structure (temp 2-component vector of float) +0:17 '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:17 Constant: +0:17 0 (const int) +0:? 'v' (layout(location=0 ) in 2-component vector of float) +0:17 move second child to first child (temp 4-component vector of float) +0:17 fragCoord: direct index for structure (temp 4-component vector of float) +0:17 '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:17 Constant: +0:17 1 (const int) +0:? 'fragCoord' (in 4-component vector of float FragCoord) +0:17 move second child to first child (temp 2-component vector of int) +0:17 i2: direct index for structure (temp 2-component vector of int) +0:17 '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:17 Constant: +0:17 2 (const int) +0:? 'i2' (layout(location=1 ) in 2-component vector of int) +0:17 '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; (temp 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; (temp 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:15 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; (temp 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; (temp float) +0:17 Comma (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 2-component vector of float) +0:17 v: direct index for structure (temp 2-component vector of float) +0:17 '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:17 Constant: +0:17 0 (const int) +0:? 'v' (layout(location=0 ) in 2-component vector of float) +0:17 move second child to first child (temp 4-component vector of float) +0:17 fragCoord: direct index for structure (temp 4-component vector of float) +0:17 '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:17 Constant: +0:17 1 (const int) +0:? 'fragCoord' (in 4-component vector of float FragCoord) +0:17 move second child to first child (temp 2-component vector of int) +0:17 i2: direct index for structure (temp 2-component vector of int) +0:17 '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:17 Constant: +0:17 2 (const int) +0:? 'i2' (layout(location=1 ) in 2-component vector of int) +0:17 '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): 12(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 00000000..86fde14c --- /dev/null +++ b/Test/baseResults/hlsl.entry-out.frag.out @@ -0,0 +1,287 @@ +hlsl.entry-out.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:7 Function Definition: fun(struct-OutParam-vf2-vi21; (temp void) +0:7 Function Parameters: +0:7 'op' (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 2-component vector of float) +0:8 v: direct index for structure (temp 2-component vector of float) +0:8 'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 0.400000 +0:8 0.400000 +0:9 move second child to first child (temp 2-component vector of int) +0:9 i: direct index for structure (temp 2-component vector of int) +0:9 'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:9 Constant: +0:9 1 (const int) +0:9 Constant: +0:9 7 (const int) +0:9 7 (const int) +0:13 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float) +0:13 Function Parameters: +0:13 'input' (layout(location=0 ) in 4-component vector of float) +0:13 'out1' (layout(location=1 ) out 4-component vector of float) +0:13 'out2' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:13 'out3' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:? Sequence +0:14 move second child to first child (temp 4-component vector of float) +0:14 'out1' (layout(location=1 ) out 4-component vector of float) +0:14 'input' (layout(location=0 ) in 4-component vector of float) +0:15 move second child to first child (temp 2-component vector of float) +0:? 'v' (layout(location=2 ) out 2-component vector of float) +0:15 Constant: +0:15 2.000000 +0:15 2.000000 +0:16 move second child to first child (temp 2-component vector of int) +0:? 'i' (layout(location=3 ) out 2-component vector of int) +0:16 Constant: +0:16 3 (const int) +0:16 3 (const int) +0:18 move second child to first child (temp 2-component vector of float) +0:18 v: direct index for structure (temp 2-component vector of float) +0:18 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 12.000000 +0:18 12.000000 +0:19 move second child to first child (temp 2-component vector of int) +0:19 i: direct index for structure (temp 2-component vector of int) +0:19 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:19 Constant: +0:19 1 (const int) +0:19 Constant: +0:19 13 (const int) +0:19 13 (const int) +0:20 Comma (temp void) +0:20 Function Call: fun(struct-OutParam-vf2-vi21; (temp void) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:20 Sequence +0:20 move second child to first child (temp 2-component vector of float) +0:? 'v' (layout(location=4 ) out 2-component vector of float) +0:20 v: direct index for structure (temp 2-component vector of float) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:20 Constant: +0:20 0 (const int) +0:20 move second child to first child (temp 2-component vector of int) +0:? 'i' (layout(location=5 ) out 2-component vector of int) +0:20 i: direct index for structure (temp 2-component vector of int) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:20 Constant: +0:20 1 (const int) +0:22 Sequence +0:22 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:22 'out1' (layout(location=1 ) out 4-component vector of float) +0:22 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: fun(struct-OutParam-vf2-vi21; (temp void) +0:7 Function Parameters: +0:7 'op' (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 2-component vector of float) +0:8 v: direct index for structure (temp 2-component vector of float) +0:8 'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 0.400000 +0:8 0.400000 +0:9 move second child to first child (temp 2-component vector of int) +0:9 i: direct index for structure (temp 2-component vector of int) +0:9 'op' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:9 Constant: +0:9 1 (const int) +0:9 Constant: +0:9 7 (const int) +0:9 7 (const int) +0:13 Function Definition: PixelShaderFunction(vf4;vf4;struct-OutParam-vf2-vi21;struct-OutParam-vf2-vi21; (temp 4-component vector of float) +0:13 Function Parameters: +0:13 'input' (layout(location=0 ) in 4-component vector of float) +0:13 'out1' (layout(location=1 ) out 4-component vector of float) +0:13 'out2' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:13 'out3' (out structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:? Sequence +0:14 move second child to first child (temp 4-component vector of float) +0:14 'out1' (layout(location=1 ) out 4-component vector of float) +0:14 'input' (layout(location=0 ) in 4-component vector of float) +0:15 move second child to first child (temp 2-component vector of float) +0:? 'v' (layout(location=2 ) out 2-component vector of float) +0:15 Constant: +0:15 2.000000 +0:15 2.000000 +0:16 move second child to first child (temp 2-component vector of int) +0:? 'i' (layout(location=3 ) out 2-component vector of int) +0:16 Constant: +0:16 3 (const int) +0:16 3 (const int) +0:18 move second child to first child (temp 2-component vector of float) +0:18 v: direct index for structure (temp 2-component vector of float) +0:18 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:18 Constant: +0:18 0 (const int) +0:18 Constant: +0:18 12.000000 +0:18 12.000000 +0:19 move second child to first child (temp 2-component vector of int) +0:19 i: direct index for structure (temp 2-component vector of int) +0:19 'local' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:19 Constant: +0:19 1 (const int) +0:19 Constant: +0:19 13 (const int) +0:19 13 (const int) +0:20 Comma (temp void) +0:20 Function Call: fun(struct-OutParam-vf2-vi21; (temp void) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:20 Sequence +0:20 move second child to first child (temp 2-component vector of float) +0:? 'v' (layout(location=4 ) out 2-component vector of float) +0:20 v: direct index for structure (temp 2-component vector of float) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:20 Constant: +0:20 0 (const int) +0:20 move second child to first child (temp 2-component vector of int) +0:? 'i' (layout(location=5 ) out 2-component vector of int) +0:20 i: direct index for structure (temp 2-component vector of int) +0:20 'tempArg' (temp structure{temp 2-component vector of float v, temp 2-component vector of int i}) +0:20 Constant: +0:20 1 (const int) +0:22 Sequence +0:22 move second child to first child (temp 4-component vector of float) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:22 'out1' (layout(location=1 ) out 4-component vector of float) +0:22 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 60 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "PixelShaderFunction" 28 30 33 37 51 54 57 + ExecutionMode 4 OriginUpperLeft + Name 4 "PixelShaderFunction" + Name 10 "OutParam" + MemberName 10(OutParam) 0 "v" + MemberName 10(OutParam) 1 "i" + Name 14 "fun(struct-OutParam-vf2-vi21;" + Name 13 "op" + Name 28 "out1" + Name 30 "input" + Name 33 "v" + Name 37 "i" + Name 40 "local" + Name 47 "tempArg" + Name 48 "param" + Name 51 "v" + Name 54 "i" + Name 57 "@entryPointOutput" + Decorate 28(out1) Location 1 + Decorate 30(input) Location 0 + Decorate 33(v) Location 2 + Decorate 37(i) Location 3 + Decorate 51(v) Location 4 + Decorate 54(i) Location 5 + Decorate 57(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 2 + 8: TypeInt 32 1 + 9: TypeVector 8(int) 2 + 10(OutParam): TypeStruct 7(fvec2) 9(ivec2) + 11: TypePointer Function 10(OutParam) + 12: TypeFunction 2 11(ptr) + 16: 8(int) Constant 0 + 17: 6(float) Constant 1053609165 + 18: 7(fvec2) ConstantComposite 17 17 + 19: TypePointer Function 7(fvec2) + 21: 8(int) Constant 1 + 22: 8(int) Constant 7 + 23: 9(ivec2) ConstantComposite 22 22 + 24: TypePointer Function 9(ivec2) + 26: TypeVector 6(float) 4 + 27: TypePointer Output 26(fvec4) + 28(out1): 27(ptr) Variable Output + 29: TypePointer Input 26(fvec4) + 30(input): 29(ptr) Variable Input + 32: TypePointer Output 7(fvec2) + 33(v): 32(ptr) Variable Output + 34: 6(float) Constant 1073741824 + 35: 7(fvec2) ConstantComposite 34 34 + 36: TypePointer Output 9(ivec2) + 37(i): 36(ptr) Variable Output + 38: 8(int) Constant 3 + 39: 9(ivec2) ConstantComposite 38 38 + 41: 6(float) Constant 1094713344 + 42: 7(fvec2) ConstantComposite 41 41 + 44: 8(int) Constant 13 + 45: 9(ivec2) ConstantComposite 44 44 + 51(v): 32(ptr) Variable Output + 54(i): 36(ptr) Variable Output +57(@entryPointOutput): 27(ptr) Variable Output +4(PixelShaderFunction): 2 Function None 3 + 5: Label + 40(local): 11(ptr) Variable Function + 47(tempArg): 11(ptr) Variable Function + 48(param): 11(ptr) Variable Function + 31: 26(fvec4) Load 30(input) + Store 28(out1) 31 + Store 33(v) 35 + Store 37(i) 39 + 43: 19(ptr) AccessChain 40(local) 16 + Store 43 42 + 46: 24(ptr) AccessChain 40(local) 21 + Store 46 45 + 49: 2 FunctionCall 14(fun(struct-OutParam-vf2-vi21;) 48(param) + 50:10(OutParam) Load 48(param) + Store 47(tempArg) 50 + 52: 19(ptr) AccessChain 47(tempArg) 16 + 53: 7(fvec2) Load 52 + Store 51(v) 53 + 55: 24(ptr) AccessChain 47(tempArg) 21 + 56: 9(ivec2) Load 55 + Store 54(i) 56 + 58: 26(fvec4) Load 28(out1) + Store 57(@entryPointOutput) 58 + Return + FunctionEnd +14(fun(struct-OutParam-vf2-vi21;): 2 Function None 12 + 13(op): 11(ptr) FunctionParameter + 15: Label + 20: 19(ptr) AccessChain 13(op) 16 + Store 20 18 + 25: 24(ptr) AccessChain 13(op) 21 + Store 25 23 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.flatten.return.frag.out b/Test/baseResults/hlsl.flatten.return.frag.out new file mode 100644 index 00000000..39fbf0ef --- /dev/null +++ b/Test/baseResults/hlsl.flatten.return.frag.out @@ -0,0 +1,187 @@ +hlsl.flatten.return.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:11 Function Definition: Func1( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:11 Function Parameters: +0:? Sequence +0:12 Branch: Return with expression +0:? Constant: +0:? 1.000000 +0:? 1.000000 +0:? 1.000000 +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:16 Function Definition: main( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:16 Function Parameters: +0:? Sequence +0:17 Sequence +0:17 Sequence +0:17 move second child to first child (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Function Call: Func1( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +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 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 0 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member1' (layout(location=1 ) out float) +0:17 other_struct_member1: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 1 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member2' (layout(location=2 ) out float) +0:17 other_struct_member2: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 2 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member3' (layout(location=3 ) out float) +0:17 other_struct_member3: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 3 (const int) +0:17 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'other_struct_member1' (layout(location=1 ) out float) +0:? 'other_struct_member2' (layout(location=2 ) out float) +0:? 'other_struct_member3' (layout(location=3 ) out float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:11 Function Definition: Func1( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:11 Function Parameters: +0:? Sequence +0:12 Branch: Return with expression +0:? Constant: +0:? 1.000000 +0:? 1.000000 +0:? 1.000000 +0:? 1.000000 +0:? 2.000000 +0:? 3.000000 +0:? 4.000000 +0:16 Function Definition: main( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:16 Function Parameters: +0:? Sequence +0:17 Sequence +0:17 Sequence +0:17 move second child to first child (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Function Call: Func1( (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +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 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 0 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member1' (layout(location=1 ) out float) +0:17 other_struct_member1: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 1 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member2' (layout(location=2 ) out float) +0:17 other_struct_member2: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 2 (const int) +0:17 move second child to first child (temp float) +0:? 'other_struct_member3' (layout(location=3 ) out float) +0:17 other_struct_member3: direct index for structure (temp float) +0:17 'flattenTemp' (temp structure{temp 4-component vector of float color, temp float other_struct_member1, temp float other_struct_member2, temp float other_struct_member3}) +0:17 Constant: +0:17 3 (const int) +0:17 Branch: Return +0:? Linker Objects +0:? 'color' (layout(location=0 ) out 4-component vector of float) +0:? 'other_struct_member1' (layout(location=1 ) out float) +0:? 'other_struct_member2' (layout(location=2 ) out float) +0:? 'other_struct_member3' (layout(location=3 ) out float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 45 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 24 31 36 40 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "PS_OUTPUT" + MemberName 8(PS_OUTPUT) 0 "color" + MemberName 8(PS_OUTPUT) 1 "other_struct_member1" + MemberName 8(PS_OUTPUT) 2 "other_struct_member2" + MemberName 8(PS_OUTPUT) 3 "other_struct_member3" + Name 10 "Func1(" + Name 21 "flattenTemp" + Name 24 "color" + Name 31 "other_struct_member1" + Name 36 "other_struct_member2" + Name 40 "other_struct_member3" + Decorate 24(color) Location 0 + Decorate 31(other_struct_member1) Location 1 + Decorate 36(other_struct_member2) Location 2 + Decorate 40(other_struct_member3) Location 3 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) 6(float) 6(float) + 9: TypeFunction 8(PS_OUTPUT) + 12: 6(float) Constant 1065353216 + 13: 7(fvec4) ConstantComposite 12 12 12 12 + 14: 6(float) Constant 1073741824 + 15: 6(float) Constant 1077936128 + 16: 6(float) Constant 1082130432 + 17:8(PS_OUTPUT) ConstantComposite 13 14 15 16 + 20: TypePointer Function 8(PS_OUTPUT) + 23: TypePointer Output 7(fvec4) + 24(color): 23(ptr) Variable Output + 25: TypeInt 32 1 + 26: 25(int) Constant 0 + 27: TypePointer Function 7(fvec4) + 30: TypePointer Output 6(float) +31(other_struct_member1): 30(ptr) Variable Output + 32: 25(int) Constant 1 + 33: TypePointer Function 6(float) +36(other_struct_member2): 30(ptr) Variable Output + 37: 25(int) Constant 2 +40(other_struct_member3): 30(ptr) Variable Output + 41: 25(int) Constant 3 + 4(main): 2 Function None 3 + 5: Label + 21(flattenTemp): 20(ptr) Variable Function + 22:8(PS_OUTPUT) FunctionCall 10(Func1() + Store 21(flattenTemp) 22 + 28: 27(ptr) AccessChain 21(flattenTemp) 26 + 29: 7(fvec4) Load 28 + Store 24(color) 29 + 34: 33(ptr) AccessChain 21(flattenTemp) 32 + 35: 6(float) Load 34 + Store 31(other_struct_member1) 35 + 38: 33(ptr) AccessChain 21(flattenTemp) 37 + 39: 6(float) Load 38 + Store 36(other_struct_member2) 39 + 42: 33(ptr) AccessChain 21(flattenTemp) 41 + 43: 6(float) Load 42 + Store 40(other_struct_member3) 43 + Return + FunctionEnd + 10(Func1():8(PS_OUTPUT) Function None 9 + 11: Label + ReturnValue 17 + FunctionEnd diff --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out index 07de03ee..83a243fc 100755 --- a/Test/baseResults/hlsl.float1.frag.out +++ b/Test/baseResults/hlsl.float1.frag.out @@ -12,7 +12,7 @@ gl_FragCoord origin is upper left 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; (temp 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 @@ gl_FragCoord origin is upper left 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; (temp 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 @@ gl_FragCoord origin is upper left 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 a086d95e..6caac247 100755 --- a/Test/baseResults/hlsl.float4.frag.out +++ b/Test/baseResults/hlsl.float4.frag.out @@ -1,29 +1,23 @@ hlsl.float4.frag +WARNING: 0:5: 'register' : ignoring shader_profile +WARNING: 0:6: 'register' : ignoring shader_profile + Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:1 Sequence -0:1 move second child to first child (temp 4-component vector of float) -0:1 'AmbientColor' (global 4-component vector of float) -0:? Constant: -0:? 1.000000 -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; (temp 4-component vector of float) 0:9 Function Parameters: 0:9 'input' (in 4-component vector of float) 0:? Sequence 0:10 Branch: Return with expression 0:10 component-wise multiply (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) -0:10 'AmbientColor' (global 4-component vector of float) +0:10 AmbientColor: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face ff1, layout(offset=20 ) uniform float ff2, layout(binding=0 offset=32 ) uniform 4-component vector of float ff3, layout(binding=1 offset=48 ) uniform 4-component vector of float ff4}) +0:10 Constant: +0:10 0 (const uint) 0:? Linker Objects -0:? 'AmbientColor' (global 4-component vector of float) -0:? 'ff1' (global bool Face) -0:? 'ff2' (global 4-component vector of float) -0:? 'ff3' (global 4-component vector of float) -0:? 'ff4' (global 4-component vector of float FragCoord) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face ff1, layout(offset=20 ) uniform float ff2, layout(binding=0 offset=32 ) uniform 4-component vector of float ff3, layout(binding=1 offset=48 ) uniform 4-component vector of float ff4}) Linked fragment stage: @@ -32,76 +26,69 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:1 Sequence -0:1 move second child to first child (temp 4-component vector of float) -0:1 'AmbientColor' (global 4-component vector of float) -0:? Constant: -0:? 1.000000 -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; (temp 4-component vector of float) 0:9 Function Parameters: 0:9 'input' (in 4-component vector of float) 0:? Sequence 0:10 Branch: Return with expression 0:10 component-wise multiply (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) -0:10 'AmbientColor' (global 4-component vector of float) +0:10 AmbientColor: direct index for structure (layout(offset=0 ) uniform 4-component vector of float) +0:10 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face ff1, layout(offset=20 ) uniform float ff2, layout(binding=0 offset=32 ) uniform 4-component vector of float ff3, layout(binding=1 offset=48 ) uniform 4-component vector of float ff4}) +0:10 Constant: +0:10 0 (const uint) 0:? Linker Objects -0:? 'AmbientColor' (global 4-component vector of float) -0:? 'ff1' (global bool Face) -0:? 'ff2' (global 4-component vector of float) -0:? 'ff3' (global 4-component vector of float) -0:? 'ff4' (global 4-component vector of float FragCoord) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face ff1, layout(offset=20 ) uniform float ff2, layout(binding=0 offset=32 ) uniform 4-component vector of float ff3, layout(binding=1 offset=48 ) uniform 4-component vector of float ff4}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 30 +// Id's are bound by 26 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" ExecutionMode 4 OriginUpperLeft - Source HLSL 450 Name 4 "PixelShaderFunction" Name 11 "ShaderFunction(vf4;" Name 10 "input" - Name 14 "AmbientColor" - Name 26 "ff1" - Name 27 "ff2" - Name 28 "ff3" - Name 29 "ff4" - Decorate 26(ff1) BuiltIn FrontFacing - Decorate 29(ff4) BuiltIn FragCoord + Name 15 "$Global" + MemberName 15($Global) 0 "AmbientColor" + MemberName 15($Global) 1 "ff1" + MemberName 15($Global) 2 "ff2" + MemberName 15($Global) 3 "ff3" + MemberName 15($Global) 4 "ff4" + Name 17 "" + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 16 + MemberDecorate 15($Global) 1 BuiltIn FrontFacing + MemberDecorate 15($Global) 2 Offset 20 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 7(fvec4) 8(ptr) - 13: TypePointer Private 7(fvec4) -14(AmbientColor): 13(ptr) Variable Private - 15: 6(float) Constant 1065353216 - 16: 6(float) Constant 1056964608 - 17: 6(float) Constant 0 - 18: 7(fvec4) ConstantComposite 15 16 17 15 - 24: TypeBool - 25: TypePointer Private 24(bool) - 26(ff1): 25(ptr) Variable Private - 27(ff2): 13(ptr) Variable Private - 28(ff3): 13(ptr) Variable Private - 29(ff4): 13(ptr) Variable Private + 14: TypeInt 32 0 + 15($Global): TypeStruct 7(fvec4) 14(int) 6(float) 7(fvec4) 7(fvec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: TypeInt 32 1 + 19: 18(int) Constant 0 + 20: TypePointer Uniform 7(fvec4) 4(PixelShaderFunction): 2 Function None 3 5: Label - Store 14(AmbientColor) 18 FunctionEnd 11(ShaderFunction(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label - 19: 7(fvec4) Load 10(input) - 20: 7(fvec4) Load 14(AmbientColor) - 21: 7(fvec4) FMul 19 20 - ReturnValue 21 + 13: 7(fvec4) Load 10(input) + 21: 20(ptr) AccessChain 17 19 + 22: 7(fvec4) Load 21 + 23: 7(fvec4) FMul 13 22 + ReturnValue 23 FunctionEnd diff --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out index 9764e267..cc475784 100755 --- a/Test/baseResults/hlsl.forLoop.frag.out +++ b/Test/baseResults/hlsl.forLoop.frag.out @@ -2,9 +2,9 @@ hlsl.forLoop.frag 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ Linked fragment stage: 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 new file mode 100644 index 00000000..a09b87ce --- /dev/null +++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out @@ -0,0 +1,426 @@ +hlsl.gather.array.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of float) +0:29 'txval20' (temp 4-component vector of float) +0:29 textureGather (global 4-component vector of float) +0:29 Construct combined texture-sampler (temp sampler2DArray) +0:29 'g_tTex2df4a' (uniform texture2DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:30 Sequence +0:30 move second child to first child (temp 4-component vector of int) +0:30 'txval21' (temp 4-component vector of int) +0:30 textureGather (global 4-component vector of int) +0:30 Construct combined texture-sampler (temp isampler2DArray) +0:30 'g_tTex2di4a' (uniform itexture2DArray) +0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of uint) +0:31 'txval22' (temp 4-component vector of uint) +0:31 textureGather (global 4-component vector of uint) +0:31 Construct combined texture-sampler (temp usampler2DArray) +0:31 'g_tTex2du4a' (uniform utexture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval40' (temp 4-component vector of float) +0:35 textureGather (global 4-component vector of float) +0:35 Construct combined texture-sampler (temp samplerCubeArray) +0:35 'g_tTexcdf4a' (uniform textureCubeArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval41' (temp 4-component vector of int) +0:36 textureGather (global 4-component vector of int) +0:36 Construct combined texture-sampler (temp isamplerCubeArray) +0:36 'g_tTexcdi4a' (uniform itextureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval42' (temp 4-component vector of uint) +0:37 textureGather (global 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usamplerCubeArray) +0:37 'g_tTexcdu4a' (uniform utextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +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 Depth}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1.000000 +0:39 1.000000 +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) +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 Sequence +0:42 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of float) +0:29 'txval20' (temp 4-component vector of float) +0:29 textureGather (global 4-component vector of float) +0:29 Construct combined texture-sampler (temp sampler2DArray) +0:29 'g_tTex2df4a' (uniform texture2DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:30 Sequence +0:30 move second child to first child (temp 4-component vector of int) +0:30 'txval21' (temp 4-component vector of int) +0:30 textureGather (global 4-component vector of int) +0:30 Construct combined texture-sampler (temp isampler2DArray) +0:30 'g_tTex2di4a' (uniform itexture2DArray) +0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of uint) +0:31 'txval22' (temp 4-component vector of uint) +0:31 textureGather (global 4-component vector of uint) +0:31 Construct combined texture-sampler (temp usampler2DArray) +0:31 'g_tTex2du4a' (uniform utexture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval40' (temp 4-component vector of float) +0:35 textureGather (global 4-component vector of float) +0:35 Construct combined texture-sampler (temp samplerCubeArray) +0:35 'g_tTexcdf4a' (uniform textureCubeArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval41' (temp 4-component vector of int) +0:36 textureGather (global 4-component vector of int) +0:36 Construct combined texture-sampler (temp isamplerCubeArray) +0:36 'g_tTexcdi4a' (uniform itextureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval42' (temp 4-component vector of uint) +0:37 textureGather (global 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usamplerCubeArray) +0:37 'g_tTexcdu4a' (uniform utextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +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 Depth}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1.000000 +0:39 1.000000 +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) +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 Sequence +0:42 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 117 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 99 103 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval20" + Name 12 "g_tTex2df4a" + Name 16 "g_sSamp" + Name 30 "txval21" + Name 33 "g_tTex2di4a" + Name 45 "txval22" + Name 48 "g_tTex2du4a" + Name 57 "txval40" + Name 60 "g_tTexcdf4a" + Name 67 "txval41" + Name 70 "g_tTexcdi4a" + Name 77 "txval42" + Name 80 "g_tTexcdu4a" + Name 90 "PS_OUTPUT" + MemberName 90(PS_OUTPUT) 0 "Color" + MemberName 90(PS_OUTPUT) 1 "Depth" + Name 92 "psout" + 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 + Decorate 33(g_tTex2di4a) DescriptorSet 0 + Decorate 48(g_tTex2du4a) DescriptorSet 0 + Decorate 60(g_tTexcdf4a) DescriptorSet 0 + Decorate 70(g_tTexcdi4a) DescriptorSet 0 + Decorate 80(g_tTexcdu4a) 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex2df4a): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 3 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 6(float) Constant 1050253722 + 24: 20(fvec3) ConstantComposite 21 22 23 + 25: TypeInt 32 1 + 26: 25(int) Constant 0 + 28: TypeVector 25(int) 4 + 29: TypePointer Function 28(ivec4) + 31: TypeImage 25(int) 2D array sampled format:Unknown + 32: TypePointer UniformConstant 31 + 33(g_tTex2di4a): 32(ptr) Variable UniformConstant + 36: TypeSampledImage 31 + 38: 6(float) Constant 1053609165 + 39: 6(float) Constant 1056964608 + 40: 20(fvec3) ConstantComposite 23 38 39 + 42: TypeInt 32 0 + 43: TypeVector 42(int) 4 + 44: TypePointer Function 43(ivec4) + 46: TypeImage 42(int) 2D array sampled format:Unknown + 47: TypePointer UniformConstant 46 + 48(g_tTex2du4a): 47(ptr) Variable UniformConstant + 51: TypeSampledImage 46 + 53: 6(float) Constant 1058642330 + 54: 6(float) Constant 1060320051 + 55: 20(fvec3) ConstantComposite 39 53 54 + 58: TypeImage 6(float) Cube array sampled format:Unknown + 59: TypePointer UniformConstant 58 + 60(g_tTexcdf4a): 59(ptr) Variable UniformConstant + 63: TypeSampledImage 58 + 65: 7(fvec4) ConstantComposite 21 22 23 38 + 68: TypeImage 25(int) Cube array sampled format:Unknown + 69: TypePointer UniformConstant 68 + 70(g_tTexcdi4a): 69(ptr) Variable UniformConstant + 73: TypeSampledImage 68 + 75: 7(fvec4) ConstantComposite 38 39 53 54 + 78: TypeImage 42(int) Cube array sampled format:Unknown + 79: TypePointer UniformConstant 78 + 80(g_tTexcdu4a): 79(ptr) Variable UniformConstant + 83: TypeSampledImage 78 + 85: 6(float) Constant 1061997773 + 86: 6(float) Constant 1063675494 + 87: 6(float) Constant 1065353216 + 88: 7(fvec4) ConstantComposite 54 85 86 87 + 90(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 91: TypePointer Function 90(PS_OUTPUT) + 93: 7(fvec4) ConstantComposite 87 87 87 87 + 95: 25(int) Constant 1 + 96: TypePointer Function 6(float) + 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_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 + 30(txval21): 29(ptr) Variable Function + 45(txval22): 44(ptr) Variable Function + 57(txval40): 8(ptr) Variable Function + 67(txval41): 29(ptr) Variable Function + 77(txval42): 44(ptr) Variable Function + 92(psout): 91(ptr) Variable Function + 13: 10 Load 12(g_tTex2df4a) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 27: 7(fvec4) ImageGather 19 24 26 + Store 9(txval20) 27 + 34: 31 Load 33(g_tTex2di4a) + 35: 14 Load 16(g_sSamp) + 37: 36 SampledImage 34 35 + 41: 28(ivec4) ImageGather 37 40 26 + Store 30(txval21) 41 + 49: 46 Load 48(g_tTex2du4a) + 50: 14 Load 16(g_sSamp) + 52: 51 SampledImage 49 50 + 56: 43(ivec4) ImageGather 52 55 26 + Store 45(txval22) 56 + 61: 58 Load 60(g_tTexcdf4a) + 62: 14 Load 16(g_sSamp) + 64: 63 SampledImage 61 62 + 66: 7(fvec4) ImageGather 64 65 26 + Store 57(txval40) 66 + 71: 68 Load 70(g_tTexcdi4a) + 72: 14 Load 16(g_sSamp) + 74: 73 SampledImage 71 72 + 76: 28(ivec4) ImageGather 74 75 26 + Store 67(txval41) 76 + 81: 78 Load 80(g_tTexcdu4a) + 82: 14 Load 16(g_sSamp) + 84: 83 SampledImage 81 82 + 89: 43(ivec4) ImageGather 84 88 26 + Store 77(txval42) 89 + 94: 8(ptr) AccessChain 92(psout) 26 + Store 94 93 + 97: 96(ptr) AccessChain 92(psout) 95 + Store 97 87 + 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 new file mode 100644 index 00000000..467ccf4c --- /dev/null +++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out @@ -0,0 +1,440 @@ +hlsl.gather.basic.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:29 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:29 Function Parameters: +0:? Sequence +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of float) +0:34 'txval20' (temp 4-component vector of float) +0:34 textureGather (global 4-component vector of float) +0:34 Construct combined texture-sampler (temp sampler2D) +0:34 'g_tTex2df4' (uniform texture2D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of int) +0:35 'txval21' (temp 4-component vector of int) +0:35 textureGather (global 4-component vector of int) +0:35 Construct combined texture-sampler (temp isampler2D) +0:35 'g_tTex2di4' (uniform itexture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of uint) +0:36 'txval22' (temp 4-component vector of uint) +0:36 textureGather (global 4-component vector of uint) +0:36 Construct combined texture-sampler (temp usampler2D) +0:36 'g_tTex2du4' (uniform utexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of float) +0:40 'txval40' (temp 4-component vector of float) +0:40 textureGather (global 4-component vector of float) +0:40 Construct combined texture-sampler (temp samplerCube) +0:40 'g_tTexcdf4' (uniform textureCube) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of int) +0:41 'txval41' (temp 4-component vector of int) +0:41 textureGather (global 4-component vector of int) +0:41 Construct combined texture-sampler (temp isamplerCube) +0:41 'g_tTexcdi4' (uniform itextureCube) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of uint) +0:42 'txval42' (temp 4-component vector of uint) +0:42 textureGather (global 4-component vector of uint) +0:42 Construct combined texture-sampler (temp usamplerCube) +0:42 'g_tTexcdu4' (uniform utextureCube) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +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 Depth}) +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1.000000 +0:44 1.000000 +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) +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 Sequence +0:47 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) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:29 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:29 Function Parameters: +0:? Sequence +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of float) +0:34 'txval20' (temp 4-component vector of float) +0:34 textureGather (global 4-component vector of float) +0:34 Construct combined texture-sampler (temp sampler2D) +0:34 'g_tTex2df4' (uniform texture2D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of int) +0:35 'txval21' (temp 4-component vector of int) +0:35 textureGather (global 4-component vector of int) +0:35 Construct combined texture-sampler (temp isampler2D) +0:35 'g_tTex2di4' (uniform itexture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of uint) +0:36 'txval22' (temp 4-component vector of uint) +0:36 textureGather (global 4-component vector of uint) +0:36 Construct combined texture-sampler (temp usampler2D) +0:36 'g_tTex2du4' (uniform utexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of float) +0:40 'txval40' (temp 4-component vector of float) +0:40 textureGather (global 4-component vector of float) +0:40 Construct combined texture-sampler (temp samplerCube) +0:40 'g_tTexcdf4' (uniform textureCube) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of int) +0:41 'txval41' (temp 4-component vector of int) +0:41 textureGather (global 4-component vector of int) +0:41 Construct combined texture-sampler (temp isamplerCube) +0:41 'g_tTexcdi4' (uniform itextureCube) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of uint) +0:42 'txval42' (temp 4-component vector of uint) +0:42 textureGather (global 4-component vector of uint) +0:42 Construct combined texture-sampler (temp usamplerCube) +0:42 'g_tTexcdu4' (uniform utextureCube) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +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 Depth}) +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1.000000 +0:44 1.000000 +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) +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 Sequence +0:47 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) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 128 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 100 104 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval20" + Name 12 "g_tTex2df4" + Name 16 "g_sSamp" + Name 29 "txval21" + Name 32 "g_tTex2di4" + Name 44 "txval22" + Name 47 "g_tTex2du4" + Name 56 "txval40" + Name 59 "g_tTexcdf4" + Name 67 "txval41" + Name 70 "g_tTexcdi4" + Name 77 "txval42" + Name 80 "g_tTexcdu4" + Name 90 "PS_OUTPUT" + MemberName 90(PS_OUTPUT) 0 "Color" + MemberName 90(PS_OUTPUT) 1 "Depth" + Name 92 "psout" + 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 + Decorate 32(g_tTex2di4) DescriptorSet 0 + Decorate 47(g_tTex2du4) DescriptorSet 0 + Decorate 59(g_tTexcdf4) DescriptorSet 0 + Decorate 70(g_tTexcdi4) DescriptorSet 0 + Decorate 80(g_tTexcdu4) 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex2df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: TypeInt 32 1 + 25: 24(int) Constant 0 + 27: TypeVector 24(int) 4 + 28: TypePointer Function 27(ivec4) + 30: TypeImage 24(int) 2D sampled format:Unknown + 31: TypePointer UniformConstant 30 + 32(g_tTex2di4): 31(ptr) Variable UniformConstant + 35: TypeSampledImage 30 + 37: 6(float) Constant 1050253722 + 38: 6(float) Constant 1053609165 + 39: 20(fvec2) ConstantComposite 37 38 + 41: TypeInt 32 0 + 42: TypeVector 41(int) 4 + 43: TypePointer Function 42(ivec4) + 45: TypeImage 41(int) 2D sampled format:Unknown + 46: TypePointer UniformConstant 45 + 47(g_tTex2du4): 46(ptr) Variable UniformConstant + 50: TypeSampledImage 45 + 52: 6(float) Constant 1056964608 + 53: 6(float) Constant 1058642330 + 54: 20(fvec2) ConstantComposite 52 53 + 57: TypeImage 6(float) Cube sampled format:Unknown + 58: TypePointer UniformConstant 57 + 59(g_tTexcdf4): 58(ptr) Variable UniformConstant + 62: TypeSampledImage 57 + 64: TypeVector 6(float) 3 + 65: 64(fvec3) ConstantComposite 21 22 37 + 68: TypeImage 24(int) Cube sampled format:Unknown + 69: TypePointer UniformConstant 68 + 70(g_tTexcdi4): 69(ptr) Variable UniformConstant + 73: TypeSampledImage 68 + 75: 64(fvec3) ConstantComposite 38 52 53 + 78: TypeImage 41(int) Cube sampled format:Unknown + 79: TypePointer UniformConstant 78 + 80(g_tTexcdu4): 79(ptr) Variable UniformConstant + 83: TypeSampledImage 78 + 85: 6(float) Constant 1060320051 + 86: 6(float) Constant 1061997773 + 87: 6(float) Constant 1063675494 + 88: 64(fvec3) ConstantComposite 85 86 87 + 90(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 91: TypePointer Function 90(PS_OUTPUT) + 93: 6(float) Constant 1065353216 + 94: 7(fvec4) ConstantComposite 93 93 93 93 + 96: 24(int) Constant 1 + 97: TypePointer Function 6(float) + 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_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 + 29(txval21): 28(ptr) Variable Function + 44(txval22): 43(ptr) Variable Function + 56(txval40): 8(ptr) Variable Function + 67(txval41): 28(ptr) Variable Function + 77(txval42): 43(ptr) Variable Function + 92(psout): 91(ptr) Variable Function + 13: 10 Load 12(g_tTex2df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 26: 7(fvec4) ImageGather 19 23 25 + Store 9(txval20) 26 + 33: 30 Load 32(g_tTex2di4) + 34: 14 Load 16(g_sSamp) + 36: 35 SampledImage 33 34 + 40: 27(ivec4) ImageGather 36 39 25 + Store 29(txval21) 40 + 48: 45 Load 47(g_tTex2du4) + 49: 14 Load 16(g_sSamp) + 51: 50 SampledImage 48 49 + 55: 42(ivec4) ImageGather 51 54 25 + Store 44(txval22) 55 + 60: 57 Load 59(g_tTexcdf4) + 61: 14 Load 16(g_sSamp) + 63: 62 SampledImage 60 61 + 66: 7(fvec4) ImageGather 63 65 25 + Store 56(txval40) 66 + 71: 68 Load 70(g_tTexcdi4) + 72: 14 Load 16(g_sSamp) + 74: 73 SampledImage 71 72 + 76: 27(ivec4) ImageGather 74 75 25 + Store 67(txval41) 76 + 81: 78 Load 80(g_tTexcdu4) + 82: 14 Load 16(g_sSamp) + 84: 83 SampledImage 81 82 + 89: 42(ivec4) ImageGather 84 88 25 + Store 77(txval42) 89 + 95: 8(ptr) AccessChain 92(psout) 25 + Store 95 94 + 98: 97(ptr) AccessChain 92(psout) 96 + Store 98 93 + 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 new file mode 100644 index 00000000..d08a57e7 --- /dev/null +++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out @@ -0,0 +1,397 @@ +hlsl.gather.basic.dx10.vert +Shader version: 450 +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) +0:28 Function Parameters: +0:? Sequence +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of float) +0:33 'txval20' (temp 4-component vector of float) +0:33 textureGather (global 4-component vector of float) +0:33 Construct combined texture-sampler (temp sampler2D) +0:33 'g_tTex2df4' (uniform texture2D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of int) +0:34 'txval21' (temp 4-component vector of int) +0:34 textureGather (global 4-component vector of int) +0:34 Construct combined texture-sampler (temp isampler2D) +0:34 'g_tTex2di4' (uniform itexture2D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of uint) +0:35 'txval22' (temp 4-component vector of uint) +0:35 textureGather (global 4-component vector of uint) +0:35 Construct combined texture-sampler (temp usampler2D) +0:35 'g_tTex2du4' (uniform utexture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval40' (temp 4-component vector of float) +0:39 textureGather (global 4-component vector of float) +0:39 Construct combined texture-sampler (temp samplerCube) +0:39 'g_tTexcdf4' (uniform textureCube) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval41' (temp 4-component vector of int) +0:40 textureGather (global 4-component vector of int) +0:40 Construct combined texture-sampler (temp isamplerCube) +0:40 'g_tTexcdi4' (uniform itextureCube) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval42' (temp 4-component vector of uint) +0:41 textureGather (global 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usamplerCube) +0:41 'g_tTexcdu4' (uniform utextureCube) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +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) +0:43 'vsout' (temp structure{temp 4-component vector of float Pos}) +0:43 Constant: +0:43 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:45 Sequence +0:45 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) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) +0:28 Function Parameters: +0:? Sequence +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of float) +0:33 'txval20' (temp 4-component vector of float) +0:33 textureGather (global 4-component vector of float) +0:33 Construct combined texture-sampler (temp sampler2D) +0:33 'g_tTex2df4' (uniform texture2D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of int) +0:34 'txval21' (temp 4-component vector of int) +0:34 textureGather (global 4-component vector of int) +0:34 Construct combined texture-sampler (temp isampler2D) +0:34 'g_tTex2di4' (uniform itexture2D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of uint) +0:35 'txval22' (temp 4-component vector of uint) +0:35 textureGather (global 4-component vector of uint) +0:35 Construct combined texture-sampler (temp usampler2D) +0:35 'g_tTex2du4' (uniform utexture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval40' (temp 4-component vector of float) +0:39 textureGather (global 4-component vector of float) +0:39 Construct combined texture-sampler (temp samplerCube) +0:39 'g_tTexcdf4' (uniform textureCube) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval41' (temp 4-component vector of int) +0:40 textureGather (global 4-component vector of int) +0:40 Construct combined texture-sampler (temp isamplerCube) +0:40 'g_tTexcdi4' (uniform itextureCube) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval42' (temp 4-component vector of uint) +0:41 textureGather (global 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usamplerCube) +0:41 'g_tTexcdu4' (uniform utextureCube) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +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) +0:43 'vsout' (temp structure{temp 4-component vector of float Pos}) +0:43 Constant: +0:43 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:45 Sequence +0:45 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) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 121 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 97 + Name 4 "main" + Name 9 "txval20" + Name 12 "g_tTex2df4" + Name 16 "g_sSamp" + Name 29 "txval21" + Name 32 "g_tTex2di4" + Name 44 "txval22" + Name 47 "g_tTex2du4" + Name 56 "txval40" + Name 59 "g_tTexcdf4" + Name 67 "txval41" + Name 70 "g_tTexcdi4" + Name 77 "txval42" + Name 80 "g_tTexcdu4" + Name 90 "VS_OUTPUT" + MemberName 90(VS_OUTPUT) 0 "Pos" + Name 92 "vsout" + 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 + Decorate 32(g_tTex2di4) DescriptorSet 0 + Decorate 47(g_tTex2du4) DescriptorSet 0 + Decorate 59(g_tTexcdf4) DescriptorSet 0 + Decorate 70(g_tTexcdi4) DescriptorSet 0 + Decorate 80(g_tTexcdu4) 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex2df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: TypeInt 32 1 + 25: 24(int) Constant 0 + 27: TypeVector 24(int) 4 + 28: TypePointer Function 27(ivec4) + 30: TypeImage 24(int) 2D sampled format:Unknown + 31: TypePointer UniformConstant 30 + 32(g_tTex2di4): 31(ptr) Variable UniformConstant + 35: TypeSampledImage 30 + 37: 6(float) Constant 1050253722 + 38: 6(float) Constant 1053609165 + 39: 20(fvec2) ConstantComposite 37 38 + 41: TypeInt 32 0 + 42: TypeVector 41(int) 4 + 43: TypePointer Function 42(ivec4) + 45: TypeImage 41(int) 2D sampled format:Unknown + 46: TypePointer UniformConstant 45 + 47(g_tTex2du4): 46(ptr) Variable UniformConstant + 50: TypeSampledImage 45 + 52: 6(float) Constant 1056964608 + 53: 6(float) Constant 1058642330 + 54: 20(fvec2) ConstantComposite 52 53 + 57: TypeImage 6(float) Cube sampled format:Unknown + 58: TypePointer UniformConstant 57 + 59(g_tTexcdf4): 58(ptr) Variable UniformConstant + 62: TypeSampledImage 57 + 64: TypeVector 6(float) 3 + 65: 64(fvec3) ConstantComposite 21 22 37 + 68: TypeImage 24(int) Cube sampled format:Unknown + 69: TypePointer UniformConstant 68 + 70(g_tTexcdi4): 69(ptr) Variable UniformConstant + 73: TypeSampledImage 68 + 75: 64(fvec3) ConstantComposite 38 52 53 + 78: TypeImage 41(int) Cube sampled format:Unknown + 79: TypePointer UniformConstant 78 + 80(g_tTexcdu4): 79(ptr) Variable UniformConstant + 83: TypeSampledImage 78 + 85: 6(float) Constant 1060320051 + 86: 6(float) Constant 1061997773 + 87: 6(float) Constant 1063675494 + 88: 64(fvec3) ConstantComposite 85 86 87 + 90(VS_OUTPUT): TypeStruct 7(fvec4) + 91: TypePointer Function 90(VS_OUTPUT) + 93: 6(float) Constant 0 + 94: 7(fvec4) ConstantComposite 93 93 93 93 + 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_tTex1di4): 107(ptr) Variable UniformConstant + 109: TypeImage 41(int) 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 + 4(main): 2 Function None 3 + 5: Label + 9(txval20): 8(ptr) Variable Function + 29(txval21): 28(ptr) Variable Function + 44(txval22): 43(ptr) Variable Function + 56(txval40): 8(ptr) Variable Function + 67(txval41): 28(ptr) Variable Function + 77(txval42): 43(ptr) Variable Function + 92(vsout): 91(ptr) Variable Function + 13: 10 Load 12(g_tTex2df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 26: 7(fvec4) ImageGather 19 23 25 + Store 9(txval20) 26 + 33: 30 Load 32(g_tTex2di4) + 34: 14 Load 16(g_sSamp) + 36: 35 SampledImage 33 34 + 40: 27(ivec4) ImageGather 36 39 25 + Store 29(txval21) 40 + 48: 45 Load 47(g_tTex2du4) + 49: 14 Load 16(g_sSamp) + 51: 50 SampledImage 48 49 + 55: 42(ivec4) ImageGather 51 54 25 + Store 44(txval22) 55 + 60: 57 Load 59(g_tTexcdf4) + 61: 14 Load 16(g_sSamp) + 63: 62 SampledImage 60 61 + 66: 7(fvec4) ImageGather 63 65 25 + Store 56(txval40) 66 + 71: 68 Load 70(g_tTexcdi4) + 72: 14 Load 16(g_sSamp) + 74: 73 SampledImage 71 72 + 76: 27(ivec4) ImageGather 74 75 25 + Store 67(txval41) 76 + 81: 78 Load 80(g_tTexcdu4) + 82: 14 Load 16(g_sSamp) + 84: 83 SampledImage 81 82 + 89: 42(ivec4) ImageGather 84 88 25 + Store 77(txval42) 89 + 95: 8(ptr) AccessChain 92(vsout) 25 + Store 95 94 + 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 new file mode 100644 index 00000000..ff7eb398 --- /dev/null +++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out @@ -0,0 +1,361 @@ +hlsl.gather.offset.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of float) +0:33 'txval20' (temp 4-component vector of float) +0:33 textureGatherOffset (global 4-component vector of float) +0:33 Construct combined texture-sampler (temp sampler2D) +0:33 'g_tTex2df4' (uniform texture2D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of int) +0:34 'txval21' (temp 4-component vector of int) +0:34 textureGatherOffset (global 4-component vector of int) +0:34 Construct combined texture-sampler (temp isampler2D) +0:34 'g_tTex2di4' (uniform itexture2D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of uint) +0:35 'txval22' (temp 4-component vector of uint) +0:35 textureGatherOffset (global 4-component vector of uint) +0:35 Construct combined texture-sampler (temp usampler2D) +0:35 'g_tTex2du4' (uniform utexture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1 (const int) +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 Depth}) +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1.000000 +0:40 1.000000 +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) +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 Sequence +0:43 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of float) +0:33 'txval20' (temp 4-component vector of float) +0:33 textureGatherOffset (global 4-component vector of float) +0:33 Construct combined texture-sampler (temp sampler2D) +0:33 'g_tTex2df4' (uniform texture2D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of int) +0:34 'txval21' (temp 4-component vector of int) +0:34 textureGatherOffset (global 4-component vector of int) +0:34 Construct combined texture-sampler (temp isampler2D) +0:34 'g_tTex2di4' (uniform itexture2D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of uint) +0:35 'txval22' (temp 4-component vector of uint) +0:35 textureGatherOffset (global 4-component vector of uint) +0:35 Construct combined texture-sampler (temp usampler2D) +0:35 'g_tTex2du4' (uniform utexture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1 (const int) +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 Depth}) +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1.000000 +0:40 1.000000 +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) +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 Sequence +0:43 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 107 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 71 75 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval20" + Name 12 "g_tTex2df4" + Name 16 "g_sSamp" + Name 32 "txval21" + Name 35 "g_tTex2di4" + Name 48 "txval22" + Name 51 "g_tTex2du4" + Name 62 "PS_OUTPUT" + MemberName 62(PS_OUTPUT) 0 "Color" + MemberName 62(PS_OUTPUT) 1 "Depth" + Name 64 "psout" + 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 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex2df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: TypeInt 32 1 + 25: TypeVector 24(int) 2 + 26: 24(int) Constant 1 + 27: 24(int) Constant 0 + 28: 25(ivec2) ConstantComposite 26 27 + 30: TypeVector 24(int) 4 + 31: TypePointer Function 30(ivec4) + 33: TypeImage 24(int) 2D sampled format:Unknown + 34: TypePointer UniformConstant 33 + 35(g_tTex2di4): 34(ptr) Variable UniformConstant + 38: TypeSampledImage 33 + 40: 6(float) Constant 1050253722 + 41: 6(float) Constant 1053609165 + 42: 20(fvec2) ConstantComposite 40 41 + 43: 25(ivec2) ConstantComposite 26 26 + 45: TypeInt 32 0 + 46: TypeVector 45(int) 4 + 47: TypePointer Function 46(ivec4) + 49: TypeImage 45(int) 2D sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex2du4): 50(ptr) Variable UniformConstant + 54: TypeSampledImage 49 + 56: 6(float) Constant 1056964608 + 57: 6(float) Constant 1058642330 + 58: 20(fvec2) ConstantComposite 56 57 + 59: 24(int) Constant 4294967295 + 60: 25(ivec2) ConstantComposite 26 59 + 62(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 63: TypePointer Function 62(PS_OUTPUT) + 65: 6(float) Constant 1065353216 + 66: 7(fvec4) ConstantComposite 65 65 65 65 + 68: TypePointer Function 6(float) + 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_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 + 32(txval21): 31(ptr) Variable Function + 48(txval22): 47(ptr) Variable Function + 64(psout): 63(ptr) Variable Function + 13: 10 Load 12(g_tTex2df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 29: 7(fvec4) ImageGather 19 23 27 ConstOffset 28 + Store 9(txval20) 29 + 36: 33 Load 35(g_tTex2di4) + 37: 14 Load 16(g_sSamp) + 39: 38 SampledImage 36 37 + 44: 30(ivec4) ImageGather 39 42 27 ConstOffset 43 + Store 32(txval21) 44 + 52: 49 Load 51(g_tTex2du4) + 53: 14 Load 16(g_sSamp) + 55: 54 SampledImage 52 53 + 61: 46(ivec4) ImageGather 55 58 27 ConstOffset 60 + Store 48(txval22) 61 + 67: 8(ptr) AccessChain 64(psout) 27 + Store 67 66 + 69: 68(ptr) AccessChain 64(psout) 26 + Store 69 65 + 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 new file mode 100644 index 00000000..dc64a807 --- /dev/null +++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out @@ -0,0 +1,326 @@ +hlsl.gather.offsetarray.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Parameters: +0:? Sequence +0:25 Sequence +0:25 move second child to first child (temp 4-component vector of float) +0:25 'txval20' (temp 4-component vector of float) +0:25 textureGatherOffset (global 4-component vector of float) +0:25 Construct combined texture-sampler (temp sampler2DArray) +0:25 'g_tTex2df4' (uniform texture2DArray) +0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:26 Sequence +0:26 move second child to first child (temp 4-component vector of int) +0:26 'txval21' (temp 4-component vector of int) +0:26 textureGatherOffset (global 4-component vector of int) +0:26 Construct combined texture-sampler (temp isampler2DArray) +0:26 'g_tTex2di4' (uniform itexture2DArray) +0:26 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.400000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of uint) +0:27 'txval22' (temp 4-component vector of uint) +0:27 textureGatherOffset (global 4-component vector of uint) +0:27 Construct combined texture-sampler (temp usampler2DArray) +0:27 'g_tTex2du4' (uniform utexture2DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:? Constant: +0:? 1 (const int) +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 Depth}) +0:32 Constant: +0:32 0 (const int) +0:32 Constant: +0:32 1.000000 +0:32 1.000000 +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) +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 Sequence +0:35 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Parameters: +0:? Sequence +0:25 Sequence +0:25 move second child to first child (temp 4-component vector of float) +0:25 'txval20' (temp 4-component vector of float) +0:25 textureGatherOffset (global 4-component vector of float) +0:25 Construct combined texture-sampler (temp sampler2DArray) +0:25 'g_tTex2df4' (uniform texture2DArray) +0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:26 Sequence +0:26 move second child to first child (temp 4-component vector of int) +0:26 'txval21' (temp 4-component vector of int) +0:26 textureGatherOffset (global 4-component vector of int) +0:26 Construct combined texture-sampler (temp isampler2DArray) +0:26 'g_tTex2di4' (uniform itexture2DArray) +0:26 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.400000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of uint) +0:27 'txval22' (temp 4-component vector of uint) +0:27 textureGatherOffset (global 4-component vector of uint) +0:27 Construct combined texture-sampler (temp usampler2DArray) +0:27 'g_tTex2du4' (uniform utexture2DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:? Constant: +0:? 1 (const int) +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 Depth}) +0:32 Constant: +0:32 0 (const int) +0:32 Constant: +0:32 1.000000 +0:32 1.000000 +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) +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 Sequence +0:35 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +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 90 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 72 76 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval20" + Name 12 "g_tTex2df4" + Name 16 "g_sSamp" + Name 33 "txval21" + Name 36 "g_tTex2di4" + Name 48 "txval22" + Name 51 "g_tTex2du4" + Name 63 "PS_OUTPUT" + MemberName 63(PS_OUTPUT) 0 "Color" + MemberName 63(PS_OUTPUT) 1 "Depth" + Name 65 "psout" + 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 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex2df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 3 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 6(float) Constant 1050253722 + 24: 20(fvec3) ConstantComposite 21 22 23 + 25: TypeInt 32 1 + 26: TypeVector 25(int) 2 + 27: 25(int) Constant 1 + 28: 25(int) Constant 0 + 29: 26(ivec2) ConstantComposite 27 28 + 31: TypeVector 25(int) 4 + 32: TypePointer Function 31(ivec4) + 34: TypeImage 25(int) 2D array sampled format:Unknown + 35: TypePointer UniformConstant 34 + 36(g_tTex2di4): 35(ptr) Variable UniformConstant + 39: TypeSampledImage 34 + 41: 6(float) Constant 1053609165 + 42: 20(fvec3) ConstantComposite 23 41 41 + 43: 26(ivec2) ConstantComposite 27 27 + 45: TypeInt 32 0 + 46: TypeVector 45(int) 4 + 47: TypePointer Function 46(ivec4) + 49: TypeImage 45(int) 2D array sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex2du4): 50(ptr) Variable UniformConstant + 54: TypeSampledImage 49 + 56: 6(float) Constant 1056964608 + 57: 6(float) Constant 1058642330 + 58: 6(float) Constant 1060320051 + 59: 20(fvec3) ConstantComposite 56 57 58 + 60: 25(int) Constant 4294967295 + 61: 26(ivec2) ConstantComposite 27 60 + 63(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 64: TypePointer Function 63(PS_OUTPUT) + 66: 6(float) Constant 1065353216 + 67: 7(fvec4) ConstantComposite 66 66 66 66 + 69: TypePointer Function 6(float) + 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_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 + 33(txval21): 32(ptr) Variable Function + 48(txval22): 47(ptr) Variable Function + 65(psout): 64(ptr) Variable Function + 13: 10 Load 12(g_tTex2df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 30: 7(fvec4) ImageGather 19 24 28 ConstOffset 29 + Store 9(txval20) 30 + 37: 34 Load 36(g_tTex2di4) + 38: 14 Load 16(g_sSamp) + 40: 39 SampledImage 37 38 + 44: 31(ivec4) ImageGather 40 42 28 ConstOffset 43 + Store 33(txval21) 44 + 52: 49 Load 51(g_tTex2du4) + 53: 14 Load 16(g_sSamp) + 55: 54 SampledImage 52 53 + 62: 46(ivec4) ImageGather 55 59 28 ConstOffset 61 + Store 48(txval22) 62 + 68: 8(ptr) AccessChain 65(psout) 28 + Store 68 67 + 70: 69(ptr) AccessChain 65(psout) 27 + Store 70 66 + 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 new file mode 100644 index 00000000..4e78cdaf --- /dev/null +++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out @@ -0,0 +1,1092 @@ +hlsl.gatherRGBA.array.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of float) +0:33 'txval00' (temp 4-component vector of float) +0:33 textureGather (global 4-component vector of float) +0:33 Construct combined texture-sampler (temp sampler2DArray) +0:33 'g_tTex2df4a' (uniform texture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:33 Constant: +0:33 2 (const uint) +0:33 Constant: +0:33 0 (const int) +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of int) +0:34 'txval01' (temp 4-component vector of int) +0:34 textureGather (global 4-component vector of int) +0:34 Construct combined texture-sampler (temp isampler2DArray) +0:34 'g_tTex2di4a' (uniform itexture2DArray) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:34 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:34 Constant: +0:34 2 (const uint) +0:34 Constant: +0:34 0 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of uint) +0:35 'txval02' (temp 4-component vector of uint) +0:35 textureGather (global 4-component vector of uint) +0:35 Construct combined texture-sampler (temp usampler2DArray) +0:35 'g_tTex2du4a' (uniform utexture2DArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:35 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:35 Constant: +0:35 2 (const uint) +0:35 Constant: +0:35 0 (const int) +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of float) +0:37 'txval10' (temp 4-component vector of float) +0:37 textureGather (global 4-component vector of float) +0:37 Construct combined texture-sampler (temp sampler2DArray) +0:37 'g_tTex2df4a' (uniform texture2DArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:37 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:37 Constant: +0:37 2 (const uint) +0:37 Constant: +0:37 1 (const int) +0:38 Sequence +0:38 move second child to first child (temp 4-component vector of int) +0:38 'txval11' (temp 4-component vector of int) +0:38 textureGather (global 4-component vector of int) +0:38 Construct combined texture-sampler (temp isampler2DArray) +0:38 'g_tTex2di4a' (uniform itexture2DArray) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:38 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:38 Constant: +0:38 2 (const uint) +0:38 Constant: +0:38 1 (const int) +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of uint) +0:39 'txval12' (temp 4-component vector of uint) +0:39 textureGather (global 4-component vector of uint) +0:39 Construct combined texture-sampler (temp usampler2DArray) +0:39 'g_tTex2du4a' (uniform utexture2DArray) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:39 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:39 Constant: +0:39 2 (const uint) +0:39 Constant: +0:39 1 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of float) +0:41 'txval20' (temp 4-component vector of float) +0:41 textureGather (global 4-component vector of float) +0:41 Construct combined texture-sampler (temp sampler2DArray) +0:41 'g_tTex2df4a' (uniform texture2DArray) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:41 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:41 Constant: +0:41 2 (const uint) +0:41 Constant: +0:41 2 (const int) +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of int) +0:42 'txval21' (temp 4-component vector of int) +0:42 textureGather (global 4-component vector of int) +0:42 Construct combined texture-sampler (temp isampler2DArray) +0:42 'g_tTex2di4a' (uniform itexture2DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:42 Constant: +0:42 2 (const uint) +0:42 Constant: +0:42 2 (const int) +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of uint) +0:43 'txval22' (temp 4-component vector of uint) +0:43 textureGather (global 4-component vector of uint) +0:43 Construct combined texture-sampler (temp usampler2DArray) +0:43 'g_tTex2du4a' (uniform utexture2DArray) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:43 Constant: +0:43 2 (const uint) +0:43 Constant: +0:43 2 (const int) +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of float) +0:45 'txval30' (temp 4-component vector of float) +0:45 textureGather (global 4-component vector of float) +0:45 Construct combined texture-sampler (temp sampler2DArray) +0:45 'g_tTex2df4a' (uniform texture2DArray) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:45 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:45 Constant: +0:45 2 (const uint) +0:45 Constant: +0:45 3 (const int) +0:46 Sequence +0:46 move second child to first child (temp 4-component vector of int) +0:46 'txval31' (temp 4-component vector of int) +0:46 textureGather (global 4-component vector of int) +0:46 Construct combined texture-sampler (temp isampler2DArray) +0:46 'g_tTex2di4a' (uniform itexture2DArray) +0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:46 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:46 Constant: +0:46 2 (const uint) +0:46 Constant: +0:46 3 (const int) +0:47 Sequence +0:47 move second child to first child (temp 4-component vector of uint) +0:47 'txval32' (temp 4-component vector of uint) +0:47 textureGather (global 4-component vector of uint) +0:47 Construct combined texture-sampler (temp usampler2DArray) +0:47 'g_tTex2du4a' (uniform utexture2DArray) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:47 Constant: +0:47 2 (const uint) +0:47 Constant: +0:47 3 (const int) +0:51 Sequence +0:51 move second child to first child (temp 4-component vector of float) +0:51 'txval40' (temp 4-component vector of float) +0:51 textureGather (global 4-component vector of float) +0:51 Construct combined texture-sampler (temp samplerCubeArray) +0:51 'g_tTexcdf4a' (uniform textureCubeArray) +0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:51 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:51 Constant: +0:51 3 (const uint) +0:51 Constant: +0:51 0 (const int) +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of int) +0:52 'txval41' (temp 4-component vector of int) +0:52 textureGather (global 4-component vector of int) +0:52 Construct combined texture-sampler (temp isamplerCubeArray) +0:52 'g_tTexcdi4a' (uniform itextureCubeArray) +0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:52 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:52 Constant: +0:52 3 (const uint) +0:52 Constant: +0:52 0 (const int) +0:53 Sequence +0:53 move second child to first child (temp 4-component vector of uint) +0:53 'txval42' (temp 4-component vector of uint) +0:53 textureGather (global 4-component vector of uint) +0:53 Construct combined texture-sampler (temp usamplerCubeArray) +0:53 'g_tTexcdu4a' (uniform utextureCubeArray) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:53 Constant: +0:53 3 (const uint) +0:53 Constant: +0:53 0 (const int) +0:55 Sequence +0:55 move second child to first child (temp 4-component vector of float) +0:55 'txval50' (temp 4-component vector of float) +0:55 textureGather (global 4-component vector of float) +0:55 Construct combined texture-sampler (temp samplerCubeArray) +0:55 'g_tTexcdf4a' (uniform textureCubeArray) +0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:55 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:55 Constant: +0:55 3 (const uint) +0:55 Constant: +0:55 1 (const int) +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of int) +0:56 'txval51' (temp 4-component vector of int) +0:56 textureGather (global 4-component vector of int) +0:56 Construct combined texture-sampler (temp isamplerCubeArray) +0:56 'g_tTexcdi4a' (uniform itextureCubeArray) +0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:56 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:56 Constant: +0:56 3 (const uint) +0:56 Constant: +0:56 1 (const int) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of uint) +0:57 'txval52' (temp 4-component vector of uint) +0:57 textureGather (global 4-component vector of uint) +0:57 Construct combined texture-sampler (temp usamplerCubeArray) +0:57 'g_tTexcdu4a' (uniform utextureCubeArray) +0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:57 Constant: +0:57 3 (const uint) +0:57 Constant: +0:57 1 (const int) +0:59 Sequence +0:59 move second child to first child (temp 4-component vector of float) +0:59 'txval60' (temp 4-component vector of float) +0:59 textureGather (global 4-component vector of float) +0:59 Construct combined texture-sampler (temp samplerCubeArray) +0:59 'g_tTexcdf4a' (uniform textureCubeArray) +0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:59 Constant: +0:59 3 (const uint) +0:59 Constant: +0:59 2 (const int) +0:60 Sequence +0:60 move second child to first child (temp 4-component vector of int) +0:60 'txval61' (temp 4-component vector of int) +0:60 textureGather (global 4-component vector of int) +0:60 Construct combined texture-sampler (temp isamplerCubeArray) +0:60 'g_tTexcdi4a' (uniform itextureCubeArray) +0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:60 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:60 Constant: +0:60 3 (const uint) +0:60 Constant: +0:60 2 (const int) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of uint) +0:61 'txval62' (temp 4-component vector of uint) +0:61 textureGather (global 4-component vector of uint) +0:61 Construct combined texture-sampler (temp usamplerCubeArray) +0:61 'g_tTexcdu4a' (uniform utextureCubeArray) +0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:61 Constant: +0:61 3 (const uint) +0:61 Constant: +0:61 2 (const int) +0:63 Sequence +0:63 move second child to first child (temp 4-component vector of float) +0:63 'txval70' (temp 4-component vector of float) +0:63 textureGather (global 4-component vector of float) +0:63 Construct combined texture-sampler (temp samplerCubeArray) +0:63 'g_tTexcdf4a' (uniform textureCubeArray) +0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Constant: +0:63 3 (const int) +0:64 Sequence +0:64 move second child to first child (temp 4-component vector of int) +0:64 'txval71' (temp 4-component vector of int) +0:64 textureGather (global 4-component vector of int) +0:64 Construct combined texture-sampler (temp isamplerCubeArray) +0:64 'g_tTexcdi4a' (uniform itextureCubeArray) +0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:64 Constant: +0:64 3 (const uint) +0:64 Constant: +0:64 3 (const int) +0:65 Sequence +0:65 move second child to first child (temp 4-component vector of uint) +0:65 'txval72' (temp 4-component vector of uint) +0:65 textureGather (global 4-component vector of uint) +0:65 Construct combined texture-sampler (temp usamplerCubeArray) +0:65 'g_tTexcdu4a' (uniform utextureCubeArray) +0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:65 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:65 Constant: +0:65 3 (const uint) +0:65 Constant: +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 Depth}) +0:67 Constant: +0:67 0 (const int) +0:67 Constant: +0:67 1.000000 +0:67 1.000000 +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) +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 Sequence +0:70 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) +0:? 'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of float) +0:33 'txval00' (temp 4-component vector of float) +0:33 textureGather (global 4-component vector of float) +0:33 Construct combined texture-sampler (temp sampler2DArray) +0:33 'g_tTex2df4a' (uniform texture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:33 Constant: +0:33 2 (const uint) +0:33 Constant: +0:33 0 (const int) +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of int) +0:34 'txval01' (temp 4-component vector of int) +0:34 textureGather (global 4-component vector of int) +0:34 Construct combined texture-sampler (temp isampler2DArray) +0:34 'g_tTex2di4a' (uniform itexture2DArray) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:34 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:34 Constant: +0:34 2 (const uint) +0:34 Constant: +0:34 0 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of uint) +0:35 'txval02' (temp 4-component vector of uint) +0:35 textureGather (global 4-component vector of uint) +0:35 Construct combined texture-sampler (temp usampler2DArray) +0:35 'g_tTex2du4a' (uniform utexture2DArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:35 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:35 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:35 Constant: +0:35 2 (const uint) +0:35 Constant: +0:35 0 (const int) +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of float) +0:37 'txval10' (temp 4-component vector of float) +0:37 textureGather (global 4-component vector of float) +0:37 Construct combined texture-sampler (temp sampler2DArray) +0:37 'g_tTex2df4a' (uniform texture2DArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:37 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:37 Constant: +0:37 2 (const uint) +0:37 Constant: +0:37 1 (const int) +0:38 Sequence +0:38 move second child to first child (temp 4-component vector of int) +0:38 'txval11' (temp 4-component vector of int) +0:38 textureGather (global 4-component vector of int) +0:38 Construct combined texture-sampler (temp isampler2DArray) +0:38 'g_tTex2di4a' (uniform itexture2DArray) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:38 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:38 Constant: +0:38 2 (const uint) +0:38 Constant: +0:38 1 (const int) +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of uint) +0:39 'txval12' (temp 4-component vector of uint) +0:39 textureGather (global 4-component vector of uint) +0:39 Construct combined texture-sampler (temp usampler2DArray) +0:39 'g_tTex2du4a' (uniform utexture2DArray) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:39 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:39 Constant: +0:39 2 (const uint) +0:39 Constant: +0:39 1 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of float) +0:41 'txval20' (temp 4-component vector of float) +0:41 textureGather (global 4-component vector of float) +0:41 Construct combined texture-sampler (temp sampler2DArray) +0:41 'g_tTex2df4a' (uniform texture2DArray) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:41 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:41 Constant: +0:41 2 (const uint) +0:41 Constant: +0:41 2 (const int) +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of int) +0:42 'txval21' (temp 4-component vector of int) +0:42 textureGather (global 4-component vector of int) +0:42 Construct combined texture-sampler (temp isampler2DArray) +0:42 'g_tTex2di4a' (uniform itexture2DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:42 Constant: +0:42 2 (const uint) +0:42 Constant: +0:42 2 (const int) +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of uint) +0:43 'txval22' (temp 4-component vector of uint) +0:43 textureGather (global 4-component vector of uint) +0:43 Construct combined texture-sampler (temp usampler2DArray) +0:43 'g_tTex2du4a' (uniform utexture2DArray) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:43 Constant: +0:43 2 (const uint) +0:43 Constant: +0:43 2 (const int) +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of float) +0:45 'txval30' (temp 4-component vector of float) +0:45 textureGather (global 4-component vector of float) +0:45 Construct combined texture-sampler (temp sampler2DArray) +0:45 'g_tTex2df4a' (uniform texture2DArray) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:45 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:45 Constant: +0:45 2 (const uint) +0:45 Constant: +0:45 3 (const int) +0:46 Sequence +0:46 move second child to first child (temp 4-component vector of int) +0:46 'txval31' (temp 4-component vector of int) +0:46 textureGather (global 4-component vector of int) +0:46 Construct combined texture-sampler (temp isampler2DArray) +0:46 'g_tTex2di4a' (uniform itexture2DArray) +0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:46 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:46 Constant: +0:46 2 (const uint) +0:46 Constant: +0:46 3 (const int) +0:47 Sequence +0:47 move second child to first child (temp 4-component vector of uint) +0:47 'txval32' (temp 4-component vector of uint) +0:47 textureGather (global 4-component vector of uint) +0:47 Construct combined texture-sampler (temp usampler2DArray) +0:47 'g_tTex2du4a' (uniform utexture2DArray) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:47 Constant: +0:47 2 (const uint) +0:47 Constant: +0:47 3 (const int) +0:51 Sequence +0:51 move second child to first child (temp 4-component vector of float) +0:51 'txval40' (temp 4-component vector of float) +0:51 textureGather (global 4-component vector of float) +0:51 Construct combined texture-sampler (temp samplerCubeArray) +0:51 'g_tTexcdf4a' (uniform textureCubeArray) +0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:51 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:51 Constant: +0:51 3 (const uint) +0:51 Constant: +0:51 0 (const int) +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of int) +0:52 'txval41' (temp 4-component vector of int) +0:52 textureGather (global 4-component vector of int) +0:52 Construct combined texture-sampler (temp isamplerCubeArray) +0:52 'g_tTexcdi4a' (uniform itextureCubeArray) +0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:52 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:52 Constant: +0:52 3 (const uint) +0:52 Constant: +0:52 0 (const int) +0:53 Sequence +0:53 move second child to first child (temp 4-component vector of uint) +0:53 'txval42' (temp 4-component vector of uint) +0:53 textureGather (global 4-component vector of uint) +0:53 Construct combined texture-sampler (temp usamplerCubeArray) +0:53 'g_tTexcdu4a' (uniform utextureCubeArray) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:53 Constant: +0:53 3 (const uint) +0:53 Constant: +0:53 0 (const int) +0:55 Sequence +0:55 move second child to first child (temp 4-component vector of float) +0:55 'txval50' (temp 4-component vector of float) +0:55 textureGather (global 4-component vector of float) +0:55 Construct combined texture-sampler (temp samplerCubeArray) +0:55 'g_tTexcdf4a' (uniform textureCubeArray) +0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:55 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:55 Constant: +0:55 3 (const uint) +0:55 Constant: +0:55 1 (const int) +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of int) +0:56 'txval51' (temp 4-component vector of int) +0:56 textureGather (global 4-component vector of int) +0:56 Construct combined texture-sampler (temp isamplerCubeArray) +0:56 'g_tTexcdi4a' (uniform itextureCubeArray) +0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:56 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:56 Constant: +0:56 3 (const uint) +0:56 Constant: +0:56 1 (const int) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of uint) +0:57 'txval52' (temp 4-component vector of uint) +0:57 textureGather (global 4-component vector of uint) +0:57 Construct combined texture-sampler (temp usamplerCubeArray) +0:57 'g_tTexcdu4a' (uniform utextureCubeArray) +0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:57 Constant: +0:57 3 (const uint) +0:57 Constant: +0:57 1 (const int) +0:59 Sequence +0:59 move second child to first child (temp 4-component vector of float) +0:59 'txval60' (temp 4-component vector of float) +0:59 textureGather (global 4-component vector of float) +0:59 Construct combined texture-sampler (temp samplerCubeArray) +0:59 'g_tTexcdf4a' (uniform textureCubeArray) +0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:59 Constant: +0:59 3 (const uint) +0:59 Constant: +0:59 2 (const int) +0:60 Sequence +0:60 move second child to first child (temp 4-component vector of int) +0:60 'txval61' (temp 4-component vector of int) +0:60 textureGather (global 4-component vector of int) +0:60 Construct combined texture-sampler (temp isamplerCubeArray) +0:60 'g_tTexcdi4a' (uniform itextureCubeArray) +0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:60 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:60 Constant: +0:60 3 (const uint) +0:60 Constant: +0:60 2 (const int) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of uint) +0:61 'txval62' (temp 4-component vector of uint) +0:61 textureGather (global 4-component vector of uint) +0:61 Construct combined texture-sampler (temp usamplerCubeArray) +0:61 'g_tTexcdu4a' (uniform utextureCubeArray) +0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:61 Constant: +0:61 3 (const uint) +0:61 Constant: +0:61 2 (const int) +0:63 Sequence +0:63 move second child to first child (temp 4-component vector of float) +0:63 'txval70' (temp 4-component vector of float) +0:63 textureGather (global 4-component vector of float) +0:63 Construct combined texture-sampler (temp samplerCubeArray) +0:63 'g_tTexcdf4a' (uniform textureCubeArray) +0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Constant: +0:63 3 (const int) +0:64 Sequence +0:64 move second child to first child (temp 4-component vector of int) +0:64 'txval71' (temp 4-component vector of int) +0:64 textureGather (global 4-component vector of int) +0:64 Construct combined texture-sampler (temp isamplerCubeArray) +0:64 'g_tTexcdi4a' (uniform itextureCubeArray) +0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:64 Constant: +0:64 3 (const uint) +0:64 Constant: +0:64 3 (const int) +0:65 Sequence +0:65 move second child to first child (temp 4-component vector of uint) +0:65 'txval72' (temp 4-component vector of uint) +0:65 textureGather (global 4-component vector of uint) +0:65 Construct combined texture-sampler (temp usamplerCubeArray) +0:65 'g_tTexcdu4a' (uniform utextureCubeArray) +0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:65 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of float) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:65 Constant: +0:65 3 (const uint) +0:65 Constant: +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 Depth}) +0:67 Constant: +0:67 0 (const int) +0:67 Constant: +0:67 1.000000 +0:67 1.000000 +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) +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 Sequence +0:70 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) +0:? 'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 248 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 230 234 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval00" + Name 12 "g_tTex2df4a" + Name 16 "g_sSamp" + Name 22 "$Global" + MemberName 22($Global) 0 "c1" + MemberName 22($Global) 1 "c2" + MemberName 22($Global) 2 "c3" + MemberName 22($Global) 3 "c4" + Name 24 "" + Name 34 "txval01" + Name 37 "g_tTex2di4a" + Name 48 "txval02" + Name 51 "g_tTex2du4a" + Name 59 "txval10" + Name 67 "txval11" + Name 74 "txval12" + Name 81 "txval20" + Name 88 "txval21" + Name 95 "txval22" + Name 102 "txval30" + Name 110 "txval31" + Name 117 "txval32" + Name 124 "txval40" + Name 127 "g_tTexcdf4a" + Name 136 "txval41" + Name 139 "g_tTexcdi4a" + Name 147 "txval42" + Name 150 "g_tTexcdu4a" + Name 158 "txval50" + Name 165 "txval51" + Name 172 "txval52" + Name 179 "txval60" + Name 186 "txval61" + Name 193 "txval62" + Name 200 "txval70" + Name 207 "txval71" + Name 214 "txval72" + Name 221 "PS_OUTPUT" + MemberName 221(PS_OUTPUT) 0 "Color" + MemberName 221(PS_OUTPUT) 1 "Depth" + Name 223 "psout" + Name 230 "Color" + Name 234 "Depth" + Name 238 "g_sSamp2d" + Name 241 "g_tTex1df4a" + Name 244 "g_tTex1di4a" + Name 247 "g_tTex1du4a" + Decorate 12(g_tTex2df4a) DescriptorSet 0 + Decorate 16(g_sSamp) DescriptorSet 0 + Decorate 16(g_sSamp) Binding 0 + MemberDecorate 22($Global) 0 Offset 0 + MemberDecorate 22($Global) 1 Offset 8 + MemberDecorate 22($Global) 2 Offset 16 + MemberDecorate 22($Global) 3 Offset 32 + Decorate 22($Global) Block + Decorate 24 DescriptorSet 0 + Decorate 37(g_tTex2di4a) DescriptorSet 0 + Decorate 51(g_tTex2du4a) DescriptorSet 0 + Decorate 127(g_tTexcdf4a) DescriptorSet 0 + Decorate 139(g_tTexcdi4a) DescriptorSet 0 + Decorate 150(g_tTexcdu4a) DescriptorSet 0 + Decorate 230(Color) Location 0 + Decorate 234(Depth) BuiltIn FragDepth + Decorate 238(g_sSamp2d) DescriptorSet 0 + Decorate 241(g_tTex1df4a) DescriptorSet 0 + Decorate 241(g_tTex1df4a) Binding 0 + Decorate 244(g_tTex1di4a) DescriptorSet 0 + Decorate 247(g_tTex1du4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex2df4a): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: TypeVector 6(float) 3 + 22($Global): TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4) + 23: TypePointer Uniform 22($Global) + 24: 23(ptr) Variable Uniform + 25: TypeInt 32 1 + 26: 25(int) Constant 2 + 27: TypePointer Uniform 21(fvec3) + 30: 25(int) Constant 0 + 32: TypeVector 25(int) 4 + 33: TypePointer Function 32(ivec4) + 35: TypeImage 25(int) 2D array sampled format:Unknown + 36: TypePointer UniformConstant 35 + 37(g_tTex2di4a): 36(ptr) Variable UniformConstant + 40: TypeSampledImage 35 + 45: TypeInt 32 0 + 46: TypeVector 45(int) 4 + 47: TypePointer Function 46(ivec4) + 49: TypeImage 45(int) 2D array sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex2du4a): 50(ptr) Variable UniformConstant + 54: TypeSampledImage 49 + 65: 25(int) Constant 1 + 108: 25(int) Constant 3 + 125: TypeImage 6(float) Cube array sampled format:Unknown + 126: TypePointer UniformConstant 125 +127(g_tTexcdf4a): 126(ptr) Variable UniformConstant + 130: TypeSampledImage 125 + 132: TypePointer Uniform 7(fvec4) + 137: TypeImage 25(int) Cube array sampled format:Unknown + 138: TypePointer UniformConstant 137 +139(g_tTexcdi4a): 138(ptr) Variable UniformConstant + 142: TypeSampledImage 137 + 148: TypeImage 45(int) Cube array sampled format:Unknown + 149: TypePointer UniformConstant 148 +150(g_tTexcdu4a): 149(ptr) Variable UniformConstant + 153: TypeSampledImage 148 + 221(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 222: TypePointer Function 221(PS_OUTPUT) + 224: 6(float) Constant 1065353216 + 225: 7(fvec4) ConstantComposite 224 224 224 224 + 227: TypePointer Function 6(float) + 229: TypePointer Output 7(fvec4) + 230(Color): 229(ptr) Variable Output + 233: TypePointer Output 6(float) + 234(Depth): 233(ptr) Variable Output + 238(g_sSamp2d): 15(ptr) Variable UniformConstant + 239: TypeImage 6(float) 1D array sampled format:Unknown + 240: TypePointer UniformConstant 239 +241(g_tTex1df4a): 240(ptr) Variable UniformConstant + 242: TypeImage 25(int) 1D array sampled format:Unknown + 243: TypePointer UniformConstant 242 +244(g_tTex1di4a): 243(ptr) Variable UniformConstant + 245: TypeImage 45(int) 1D array sampled format:Unknown + 246: TypePointer UniformConstant 245 +247(g_tTex1du4a): 246(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(txval00): 8(ptr) Variable Function + 34(txval01): 33(ptr) Variable Function + 48(txval02): 47(ptr) Variable Function + 59(txval10): 8(ptr) Variable Function + 67(txval11): 33(ptr) Variable Function + 74(txval12): 47(ptr) Variable Function + 81(txval20): 8(ptr) Variable Function + 88(txval21): 33(ptr) Variable Function + 95(txval22): 47(ptr) Variable Function + 102(txval30): 8(ptr) Variable Function + 110(txval31): 33(ptr) Variable Function + 117(txval32): 47(ptr) Variable Function + 124(txval40): 8(ptr) Variable Function + 136(txval41): 33(ptr) Variable Function + 147(txval42): 47(ptr) Variable Function + 158(txval50): 8(ptr) Variable Function + 165(txval51): 33(ptr) Variable Function + 172(txval52): 47(ptr) Variable Function + 179(txval60): 8(ptr) Variable Function + 186(txval61): 33(ptr) Variable Function + 193(txval62): 47(ptr) Variable Function + 200(txval70): 8(ptr) Variable Function + 207(txval71): 33(ptr) Variable Function + 214(txval72): 47(ptr) Variable Function + 223(psout): 222(ptr) Variable Function + 13: 10 Load 12(g_tTex2df4a) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 28: 27(ptr) AccessChain 24 26 + 29: 21(fvec3) Load 28 + 31: 7(fvec4) ImageGather 19 29 30 + Store 9(txval00) 31 + 38: 35 Load 37(g_tTex2di4a) + 39: 14 Load 16(g_sSamp) + 41: 40 SampledImage 38 39 + 42: 27(ptr) AccessChain 24 26 + 43: 21(fvec3) Load 42 + 44: 32(ivec4) ImageGather 41 43 30 + Store 34(txval01) 44 + 52: 49 Load 51(g_tTex2du4a) + 53: 14 Load 16(g_sSamp) + 55: 54 SampledImage 52 53 + 56: 27(ptr) AccessChain 24 26 + 57: 21(fvec3) Load 56 + 58: 46(ivec4) ImageGather 55 57 30 + Store 48(txval02) 58 + 60: 10 Load 12(g_tTex2df4a) + 61: 14 Load 16(g_sSamp) + 62: 18 SampledImage 60 61 + 63: 27(ptr) AccessChain 24 26 + 64: 21(fvec3) Load 63 + 66: 7(fvec4) ImageGather 62 64 65 + Store 59(txval10) 66 + 68: 35 Load 37(g_tTex2di4a) + 69: 14 Load 16(g_sSamp) + 70: 40 SampledImage 68 69 + 71: 27(ptr) AccessChain 24 26 + 72: 21(fvec3) Load 71 + 73: 32(ivec4) ImageGather 70 72 65 + Store 67(txval11) 73 + 75: 49 Load 51(g_tTex2du4a) + 76: 14 Load 16(g_sSamp) + 77: 54 SampledImage 75 76 + 78: 27(ptr) AccessChain 24 26 + 79: 21(fvec3) Load 78 + 80: 46(ivec4) ImageGather 77 79 65 + Store 74(txval12) 80 + 82: 10 Load 12(g_tTex2df4a) + 83: 14 Load 16(g_sSamp) + 84: 18 SampledImage 82 83 + 85: 27(ptr) AccessChain 24 26 + 86: 21(fvec3) Load 85 + 87: 7(fvec4) ImageGather 84 86 26 + Store 81(txval20) 87 + 89: 35 Load 37(g_tTex2di4a) + 90: 14 Load 16(g_sSamp) + 91: 40 SampledImage 89 90 + 92: 27(ptr) AccessChain 24 26 + 93: 21(fvec3) Load 92 + 94: 32(ivec4) ImageGather 91 93 26 + Store 88(txval21) 94 + 96: 49 Load 51(g_tTex2du4a) + 97: 14 Load 16(g_sSamp) + 98: 54 SampledImage 96 97 + 99: 27(ptr) AccessChain 24 26 + 100: 21(fvec3) Load 99 + 101: 46(ivec4) ImageGather 98 100 26 + Store 95(txval22) 101 + 103: 10 Load 12(g_tTex2df4a) + 104: 14 Load 16(g_sSamp) + 105: 18 SampledImage 103 104 + 106: 27(ptr) AccessChain 24 26 + 107: 21(fvec3) Load 106 + 109: 7(fvec4) ImageGather 105 107 108 + Store 102(txval30) 109 + 111: 35 Load 37(g_tTex2di4a) + 112: 14 Load 16(g_sSamp) + 113: 40 SampledImage 111 112 + 114: 27(ptr) AccessChain 24 26 + 115: 21(fvec3) Load 114 + 116: 32(ivec4) ImageGather 113 115 108 + Store 110(txval31) 116 + 118: 49 Load 51(g_tTex2du4a) + 119: 14 Load 16(g_sSamp) + 120: 54 SampledImage 118 119 + 121: 27(ptr) AccessChain 24 26 + 122: 21(fvec3) Load 121 + 123: 46(ivec4) ImageGather 120 122 108 + Store 117(txval32) 123 + 128: 125 Load 127(g_tTexcdf4a) + 129: 14 Load 16(g_sSamp) + 131: 130 SampledImage 128 129 + 133: 132(ptr) AccessChain 24 108 + 134: 7(fvec4) Load 133 + 135: 7(fvec4) ImageGather 131 134 30 + Store 124(txval40) 135 + 140: 137 Load 139(g_tTexcdi4a) + 141: 14 Load 16(g_sSamp) + 143: 142 SampledImage 140 141 + 144: 132(ptr) AccessChain 24 108 + 145: 7(fvec4) Load 144 + 146: 32(ivec4) ImageGather 143 145 30 + Store 136(txval41) 146 + 151: 148 Load 150(g_tTexcdu4a) + 152: 14 Load 16(g_sSamp) + 154: 153 SampledImage 151 152 + 155: 132(ptr) AccessChain 24 108 + 156: 7(fvec4) Load 155 + 157: 46(ivec4) ImageGather 154 156 30 + Store 147(txval42) 157 + 159: 125 Load 127(g_tTexcdf4a) + 160: 14 Load 16(g_sSamp) + 161: 130 SampledImage 159 160 + 162: 132(ptr) AccessChain 24 108 + 163: 7(fvec4) Load 162 + 164: 7(fvec4) ImageGather 161 163 65 + Store 158(txval50) 164 + 166: 137 Load 139(g_tTexcdi4a) + 167: 14 Load 16(g_sSamp) + 168: 142 SampledImage 166 167 + 169: 132(ptr) AccessChain 24 108 + 170: 7(fvec4) Load 169 + 171: 32(ivec4) ImageGather 168 170 65 + Store 165(txval51) 171 + 173: 148 Load 150(g_tTexcdu4a) + 174: 14 Load 16(g_sSamp) + 175: 153 SampledImage 173 174 + 176: 132(ptr) AccessChain 24 108 + 177: 7(fvec4) Load 176 + 178: 46(ivec4) ImageGather 175 177 65 + Store 172(txval52) 178 + 180: 125 Load 127(g_tTexcdf4a) + 181: 14 Load 16(g_sSamp) + 182: 130 SampledImage 180 181 + 183: 132(ptr) AccessChain 24 108 + 184: 7(fvec4) Load 183 + 185: 7(fvec4) ImageGather 182 184 26 + Store 179(txval60) 185 + 187: 137 Load 139(g_tTexcdi4a) + 188: 14 Load 16(g_sSamp) + 189: 142 SampledImage 187 188 + 190: 132(ptr) AccessChain 24 108 + 191: 7(fvec4) Load 190 + 192: 32(ivec4) ImageGather 189 191 26 + Store 186(txval61) 192 + 194: 148 Load 150(g_tTexcdu4a) + 195: 14 Load 16(g_sSamp) + 196: 153 SampledImage 194 195 + 197: 132(ptr) AccessChain 24 108 + 198: 7(fvec4) Load 197 + 199: 46(ivec4) ImageGather 196 198 26 + Store 193(txval62) 199 + 201: 125 Load 127(g_tTexcdf4a) + 202: 14 Load 16(g_sSamp) + 203: 130 SampledImage 201 202 + 204: 132(ptr) AccessChain 24 108 + 205: 7(fvec4) Load 204 + 206: 7(fvec4) ImageGather 203 205 108 + Store 200(txval70) 206 + 208: 137 Load 139(g_tTexcdi4a) + 209: 14 Load 16(g_sSamp) + 210: 142 SampledImage 208 209 + 211: 132(ptr) AccessChain 24 108 + 212: 7(fvec4) Load 211 + 213: 32(ivec4) ImageGather 210 212 108 + Store 207(txval71) 213 + 215: 148 Load 150(g_tTexcdu4a) + 216: 14 Load 16(g_sSamp) + 217: 153 SampledImage 215 216 + 218: 132(ptr) AccessChain 24 108 + 219: 7(fvec4) Load 218 + 220: 46(ivec4) ImageGather 217 219 108 + Store 214(txval72) 220 + 226: 8(ptr) AccessChain 223(psout) 30 + Store 226 225 + 228: 227(ptr) AccessChain 223(psout) 65 + Store 228 224 + 231: 8(ptr) AccessChain 223(psout) 30 + 232: 7(fvec4) Load 231 + Store 230(Color) 232 + 235: 227(ptr) AccessChain 223(psout) 65 + 236: 6(float) Load 235 + Store 234(Depth) 236 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out new file mode 100644 index 00000000..ef1e7e05 --- /dev/null +++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out @@ -0,0 +1,1118 @@ +hlsl.gatherRGBA.basic.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:34 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:34 Function Parameters: +0:? Sequence +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval00' (temp 4-component vector of float) +0:39 textureGather (global 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler2D) +0:39 'g_tTex2df4' (uniform texture2D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:39 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:39 Constant: +0:39 1 (const uint) +0:39 Constant: +0:39 0 (const int) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval01' (temp 4-component vector of int) +0:40 textureGather (global 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler2D) +0:40 'g_tTex2di4' (uniform itexture2D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:40 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:40 Constant: +0:40 1 (const uint) +0:40 Constant: +0:40 0 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval02' (temp 4-component vector of uint) +0:41 textureGather (global 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler2D) +0:41 'g_tTex2du4' (uniform utexture2D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:41 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:41 Constant: +0:41 1 (const uint) +0:41 Constant: +0:41 0 (const int) +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of float) +0:43 'txval10' (temp 4-component vector of float) +0:43 textureGather (global 4-component vector of float) +0:43 Construct combined texture-sampler (temp sampler2D) +0:43 'g_tTex2df4' (uniform texture2D) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:43 Constant: +0:43 1 (const uint) +0:43 Constant: +0:43 1 (const int) +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of int) +0:44 'txval11' (temp 4-component vector of int) +0:44 textureGather (global 4-component vector of int) +0:44 Construct combined texture-sampler (temp isampler2D) +0:44 'g_tTex2di4' (uniform itexture2D) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:44 Constant: +0:44 1 (const uint) +0:44 Constant: +0:44 1 (const int) +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of uint) +0:45 'txval12' (temp 4-component vector of uint) +0:45 textureGather (global 4-component vector of uint) +0:45 Construct combined texture-sampler (temp usampler2D) +0:45 'g_tTex2du4' (uniform utexture2D) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:45 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:45 Constant: +0:45 1 (const uint) +0:45 Constant: +0:45 1 (const int) +0:47 Sequence +0:47 move second child to first child (temp 4-component vector of float) +0:47 'txval20' (temp 4-component vector of float) +0:47 textureGather (global 4-component vector of float) +0:47 Construct combined texture-sampler (temp sampler2D) +0:47 'g_tTex2df4' (uniform texture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:47 Constant: +0:47 1 (const uint) +0:47 Constant: +0:47 2 (const int) +0:48 Sequence +0:48 move second child to first child (temp 4-component vector of int) +0:48 'txval21' (temp 4-component vector of int) +0:48 textureGather (global 4-component vector of int) +0:48 Construct combined texture-sampler (temp isampler2D) +0:48 'g_tTex2di4' (uniform itexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:48 Constant: +0:48 1 (const uint) +0:48 Constant: +0:48 2 (const int) +0:49 Sequence +0:49 move second child to first child (temp 4-component vector of uint) +0:49 'txval22' (temp 4-component vector of uint) +0:49 textureGather (global 4-component vector of uint) +0:49 Construct combined texture-sampler (temp usampler2D) +0:49 'g_tTex2du4' (uniform utexture2D) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:49 Constant: +0:49 1 (const uint) +0:49 Constant: +0:49 2 (const int) +0:51 Sequence +0:51 move second child to first child (temp 4-component vector of float) +0:51 'txval30' (temp 4-component vector of float) +0:51 textureGather (global 4-component vector of float) +0:51 Construct combined texture-sampler (temp sampler2D) +0:51 'g_tTex2df4' (uniform texture2D) +0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:51 Constant: +0:51 1 (const uint) +0:51 Constant: +0:51 3 (const int) +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of int) +0:52 'txval31' (temp 4-component vector of int) +0:52 textureGather (global 4-component vector of int) +0:52 Construct combined texture-sampler (temp isampler2D) +0:52 'g_tTex2di4' (uniform itexture2D) +0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Constant: +0:52 3 (const int) +0:53 Sequence +0:53 move second child to first child (temp 4-component vector of uint) +0:53 'txval32' (temp 4-component vector of uint) +0:53 textureGather (global 4-component vector of uint) +0:53 Construct combined texture-sampler (temp usampler2D) +0:53 'g_tTex2du4' (uniform utexture2D) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Constant: +0:53 3 (const int) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of float) +0:57 'txval40' (temp 4-component vector of float) +0:57 textureGather (global 4-component vector of float) +0:57 Construct combined texture-sampler (temp samplerCube) +0:57 'g_tTexcdf4' (uniform textureCube) +0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Constant: +0:57 0 (const int) +0:58 Sequence +0:58 move second child to first child (temp 4-component vector of int) +0:58 'txval41' (temp 4-component vector of int) +0:58 textureGather (global 4-component vector of int) +0:58 Construct combined texture-sampler (temp isamplerCube) +0:58 'g_tTexcdi4' (uniform itextureCube) +0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Constant: +0:58 0 (const int) +0:59 Sequence +0:59 move second child to first child (temp 4-component vector of uint) +0:59 'txval42' (temp 4-component vector of uint) +0:59 textureGather (global 4-component vector of uint) +0:59 Construct combined texture-sampler (temp usamplerCube) +0:59 'g_tTexcdu4' (uniform utextureCube) +0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:59 Constant: +0:59 2 (const uint) +0:59 Constant: +0:59 0 (const int) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of float) +0:61 'txval50' (temp 4-component vector of float) +0:61 textureGather (global 4-component vector of float) +0:61 Construct combined texture-sampler (temp samplerCube) +0:61 'g_tTexcdf4' (uniform textureCube) +0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:61 Constant: +0:61 2 (const uint) +0:61 Constant: +0:61 1 (const int) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of int) +0:62 'txval51' (temp 4-component vector of int) +0:62 textureGather (global 4-component vector of int) +0:62 Construct combined texture-sampler (temp isamplerCube) +0:62 'g_tTexcdi4' (uniform itextureCube) +0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:62 Constant: +0:62 2 (const uint) +0:62 Constant: +0:62 1 (const int) +0:63 Sequence +0:63 move second child to first child (temp 4-component vector of uint) +0:63 'txval52' (temp 4-component vector of uint) +0:63 textureGather (global 4-component vector of uint) +0:63 Construct combined texture-sampler (temp usamplerCube) +0:63 'g_tTexcdu4' (uniform utextureCube) +0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:63 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:63 Constant: +0:63 2 (const uint) +0:63 Constant: +0:63 1 (const int) +0:65 Sequence +0:65 move second child to first child (temp 4-component vector of float) +0:65 'txval60' (temp 4-component vector of float) +0:65 textureGather (global 4-component vector of float) +0:65 Construct combined texture-sampler (temp samplerCube) +0:65 'g_tTexcdf4' (uniform textureCube) +0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:65 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:65 Constant: +0:65 2 (const uint) +0:65 Constant: +0:65 2 (const int) +0:66 Sequence +0:66 move second child to first child (temp 4-component vector of int) +0:66 'txval61' (temp 4-component vector of int) +0:66 textureGather (global 4-component vector of int) +0:66 Construct combined texture-sampler (temp isamplerCube) +0:66 'g_tTexcdi4' (uniform itextureCube) +0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:66 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:66 Constant: +0:66 2 (const uint) +0:66 Constant: +0:66 2 (const int) +0:67 Sequence +0:67 move second child to first child (temp 4-component vector of uint) +0:67 'txval62' (temp 4-component vector of uint) +0:67 textureGather (global 4-component vector of uint) +0:67 Construct combined texture-sampler (temp usamplerCube) +0:67 'g_tTexcdu4' (uniform utextureCube) +0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:67 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:67 Constant: +0:67 2 (const uint) +0:67 Constant: +0:67 2 (const int) +0:69 Sequence +0:69 move second child to first child (temp 4-component vector of float) +0:69 'txval70' (temp 4-component vector of float) +0:69 textureGather (global 4-component vector of float) +0:69 Construct combined texture-sampler (temp samplerCube) +0:69 'g_tTexcdf4' (uniform textureCube) +0:69 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:69 Constant: +0:69 2 (const uint) +0:69 Constant: +0:69 3 (const int) +0:70 Sequence +0:70 move second child to first child (temp 4-component vector of int) +0:70 'txval71' (temp 4-component vector of int) +0:70 textureGather (global 4-component vector of int) +0:70 Construct combined texture-sampler (temp isamplerCube) +0:70 'g_tTexcdi4' (uniform itextureCube) +0:70 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:70 Constant: +0:70 2 (const uint) +0:70 Constant: +0:70 3 (const int) +0:71 Sequence +0:71 move second child to first child (temp 4-component vector of uint) +0:71 'txval72' (temp 4-component vector of uint) +0:71 textureGather (global 4-component vector of uint) +0:71 Construct combined texture-sampler (temp usamplerCube) +0:71 'g_tTexcdu4' (uniform utextureCube) +0:71 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:71 Constant: +0:71 2 (const uint) +0:71 Constant: +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 Depth}) +0:73 Constant: +0:73 0 (const int) +0:73 Constant: +0:73 1.000000 +0:73 1.000000 +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) +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 Sequence +0:76 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) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:34 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:34 Function Parameters: +0:? Sequence +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval00' (temp 4-component vector of float) +0:39 textureGather (global 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler2D) +0:39 'g_tTex2df4' (uniform texture2D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:39 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:39 Constant: +0:39 1 (const uint) +0:39 Constant: +0:39 0 (const int) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval01' (temp 4-component vector of int) +0:40 textureGather (global 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler2D) +0:40 'g_tTex2di4' (uniform itexture2D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:40 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:40 Constant: +0:40 1 (const uint) +0:40 Constant: +0:40 0 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval02' (temp 4-component vector of uint) +0:41 textureGather (global 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler2D) +0:41 'g_tTex2du4' (uniform utexture2D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:41 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:41 Constant: +0:41 1 (const uint) +0:41 Constant: +0:41 0 (const int) +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of float) +0:43 'txval10' (temp 4-component vector of float) +0:43 textureGather (global 4-component vector of float) +0:43 Construct combined texture-sampler (temp sampler2D) +0:43 'g_tTex2df4' (uniform texture2D) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:43 Constant: +0:43 1 (const uint) +0:43 Constant: +0:43 1 (const int) +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of int) +0:44 'txval11' (temp 4-component vector of int) +0:44 textureGather (global 4-component vector of int) +0:44 Construct combined texture-sampler (temp isampler2D) +0:44 'g_tTex2di4' (uniform itexture2D) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:44 Constant: +0:44 1 (const uint) +0:44 Constant: +0:44 1 (const int) +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of uint) +0:45 'txval12' (temp 4-component vector of uint) +0:45 textureGather (global 4-component vector of uint) +0:45 Construct combined texture-sampler (temp usampler2D) +0:45 'g_tTex2du4' (uniform utexture2D) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:45 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:45 Constant: +0:45 1 (const uint) +0:45 Constant: +0:45 1 (const int) +0:47 Sequence +0:47 move second child to first child (temp 4-component vector of float) +0:47 'txval20' (temp 4-component vector of float) +0:47 textureGather (global 4-component vector of float) +0:47 Construct combined texture-sampler (temp sampler2D) +0:47 'g_tTex2df4' (uniform texture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:47 Constant: +0:47 1 (const uint) +0:47 Constant: +0:47 2 (const int) +0:48 Sequence +0:48 move second child to first child (temp 4-component vector of int) +0:48 'txval21' (temp 4-component vector of int) +0:48 textureGather (global 4-component vector of int) +0:48 Construct combined texture-sampler (temp isampler2D) +0:48 'g_tTex2di4' (uniform itexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:48 Constant: +0:48 1 (const uint) +0:48 Constant: +0:48 2 (const int) +0:49 Sequence +0:49 move second child to first child (temp 4-component vector of uint) +0:49 'txval22' (temp 4-component vector of uint) +0:49 textureGather (global 4-component vector of uint) +0:49 Construct combined texture-sampler (temp usampler2D) +0:49 'g_tTex2du4' (uniform utexture2D) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:49 Constant: +0:49 1 (const uint) +0:49 Constant: +0:49 2 (const int) +0:51 Sequence +0:51 move second child to first child (temp 4-component vector of float) +0:51 'txval30' (temp 4-component vector of float) +0:51 textureGather (global 4-component vector of float) +0:51 Construct combined texture-sampler (temp sampler2D) +0:51 'g_tTex2df4' (uniform texture2D) +0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:51 Constant: +0:51 1 (const uint) +0:51 Constant: +0:51 3 (const int) +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of int) +0:52 'txval31' (temp 4-component vector of int) +0:52 textureGather (global 4-component vector of int) +0:52 Construct combined texture-sampler (temp isampler2D) +0:52 'g_tTex2di4' (uniform itexture2D) +0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Constant: +0:52 3 (const int) +0:53 Sequence +0:53 move second child to first child (temp 4-component vector of uint) +0:53 'txval32' (temp 4-component vector of uint) +0:53 textureGather (global 4-component vector of uint) +0:53 Construct combined texture-sampler (temp usampler2D) +0:53 'g_tTex2du4' (uniform utexture2D) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Constant: +0:53 3 (const int) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of float) +0:57 'txval40' (temp 4-component vector of float) +0:57 textureGather (global 4-component vector of float) +0:57 Construct combined texture-sampler (temp samplerCube) +0:57 'g_tTexcdf4' (uniform textureCube) +0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Constant: +0:57 0 (const int) +0:58 Sequence +0:58 move second child to first child (temp 4-component vector of int) +0:58 'txval41' (temp 4-component vector of int) +0:58 textureGather (global 4-component vector of int) +0:58 Construct combined texture-sampler (temp isamplerCube) +0:58 'g_tTexcdi4' (uniform itextureCube) +0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Constant: +0:58 0 (const int) +0:59 Sequence +0:59 move second child to first child (temp 4-component vector of uint) +0:59 'txval42' (temp 4-component vector of uint) +0:59 textureGather (global 4-component vector of uint) +0:59 Construct combined texture-sampler (temp usamplerCube) +0:59 'g_tTexcdu4' (uniform utextureCube) +0:59 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:59 Constant: +0:59 2 (const uint) +0:59 Constant: +0:59 0 (const int) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of float) +0:61 'txval50' (temp 4-component vector of float) +0:61 textureGather (global 4-component vector of float) +0:61 Construct combined texture-sampler (temp samplerCube) +0:61 'g_tTexcdf4' (uniform textureCube) +0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:61 Constant: +0:61 2 (const uint) +0:61 Constant: +0:61 1 (const int) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of int) +0:62 'txval51' (temp 4-component vector of int) +0:62 textureGather (global 4-component vector of int) +0:62 Construct combined texture-sampler (temp isamplerCube) +0:62 'g_tTexcdi4' (uniform itextureCube) +0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:62 Constant: +0:62 2 (const uint) +0:62 Constant: +0:62 1 (const int) +0:63 Sequence +0:63 move second child to first child (temp 4-component vector of uint) +0:63 'txval52' (temp 4-component vector of uint) +0:63 textureGather (global 4-component vector of uint) +0:63 Construct combined texture-sampler (temp usamplerCube) +0:63 'g_tTexcdu4' (uniform utextureCube) +0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:63 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:63 Constant: +0:63 2 (const uint) +0:63 Constant: +0:63 1 (const int) +0:65 Sequence +0:65 move second child to first child (temp 4-component vector of float) +0:65 'txval60' (temp 4-component vector of float) +0:65 textureGather (global 4-component vector of float) +0:65 Construct combined texture-sampler (temp samplerCube) +0:65 'g_tTexcdf4' (uniform textureCube) +0:65 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:65 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:65 Constant: +0:65 2 (const uint) +0:65 Constant: +0:65 2 (const int) +0:66 Sequence +0:66 move second child to first child (temp 4-component vector of int) +0:66 'txval61' (temp 4-component vector of int) +0:66 textureGather (global 4-component vector of int) +0:66 Construct combined texture-sampler (temp isamplerCube) +0:66 'g_tTexcdi4' (uniform itextureCube) +0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:66 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:66 Constant: +0:66 2 (const uint) +0:66 Constant: +0:66 2 (const int) +0:67 Sequence +0:67 move second child to first child (temp 4-component vector of uint) +0:67 'txval62' (temp 4-component vector of uint) +0:67 textureGather (global 4-component vector of uint) +0:67 Construct combined texture-sampler (temp usamplerCube) +0:67 'g_tTexcdu4' (uniform utextureCube) +0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:67 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:67 Constant: +0:67 2 (const uint) +0:67 Constant: +0:67 2 (const int) +0:69 Sequence +0:69 move second child to first child (temp 4-component vector of float) +0:69 'txval70' (temp 4-component vector of float) +0:69 textureGather (global 4-component vector of float) +0:69 Construct combined texture-sampler (temp samplerCube) +0:69 'g_tTexcdf4' (uniform textureCube) +0:69 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:69 Constant: +0:69 2 (const uint) +0:69 Constant: +0:69 3 (const int) +0:70 Sequence +0:70 move second child to first child (temp 4-component vector of int) +0:70 'txval71' (temp 4-component vector of int) +0:70 textureGather (global 4-component vector of int) +0:70 Construct combined texture-sampler (temp isamplerCube) +0:70 'g_tTexcdi4' (uniform itextureCube) +0:70 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:70 Constant: +0:70 2 (const uint) +0:70 Constant: +0:70 3 (const int) +0:71 Sequence +0:71 move second child to first child (temp 4-component vector of uint) +0:71 'txval72' (temp 4-component vector of uint) +0:71 textureGather (global 4-component vector of uint) +0:71 Construct combined texture-sampler (temp usamplerCube) +0:71 'g_tTexcdu4' (uniform utextureCube) +0:71 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) +0:71 Constant: +0:71 2 (const uint) +0:71 Constant: +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 Depth}) +0:73 Constant: +0:73 0 (const int) +0:73 Constant: +0:73 1.000000 +0:73 1.000000 +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) +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 Sequence +0:76 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) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 258 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 230 234 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval00" + Name 12 "g_tTex2df4" + Name 16 "g_sSamp" + Name 22 "$Global" + MemberName 22($Global) 0 "c1" + MemberName 22($Global) 1 "c2" + MemberName 22($Global) 2 "c3" + MemberName 22($Global) 3 "c4" + Name 24 "" + Name 34 "txval01" + Name 37 "g_tTex2di4" + Name 48 "txval02" + Name 51 "g_tTex2du4" + Name 59 "txval10" + Name 66 "txval11" + Name 73 "txval12" + Name 80 "txval20" + Name 88 "txval21" + Name 95 "txval22" + Name 102 "txval30" + Name 110 "txval31" + Name 117 "txval32" + Name 124 "txval40" + Name 127 "g_tTexcdf4" + Name 136 "txval41" + Name 139 "g_tTexcdi4" + Name 147 "txval42" + Name 150 "g_tTexcdu4" + Name 158 "txval50" + Name 165 "txval51" + Name 172 "txval52" + Name 179 "txval60" + Name 186 "txval61" + Name 193 "txval62" + Name 200 "txval70" + Name 207 "txval71" + Name 214 "txval72" + Name 221 "PS_OUTPUT" + MemberName 221(PS_OUTPUT) 0 "Color" + MemberName 221(PS_OUTPUT) 1 "Depth" + Name 223 "psout" + Name 230 "Color" + Name 234 "Depth" + Name 238 "g_sSamp2d" + Name 241 "g_tTex1df4a" + Name 242 "g_tTex1df4" + Name 245 "g_tTex1di4" + Name 248 "g_tTex1du4" + Name 251 "g_tTex3df4" + Name 254 "g_tTex3di4" + Name 257 "g_tTex3du4" + Decorate 12(g_tTex2df4) DescriptorSet 0 + Decorate 16(g_sSamp) DescriptorSet 0 + Decorate 16(g_sSamp) Binding 0 + MemberDecorate 22($Global) 0 Offset 0 + MemberDecorate 22($Global) 1 Offset 8 + MemberDecorate 22($Global) 2 Offset 16 + MemberDecorate 22($Global) 3 Offset 32 + Decorate 22($Global) Block + Decorate 24 DescriptorSet 0 + Decorate 37(g_tTex2di4) DescriptorSet 0 + Decorate 51(g_tTex2du4) DescriptorSet 0 + Decorate 127(g_tTexcdf4) DescriptorSet 0 + Decorate 139(g_tTexcdi4) DescriptorSet 0 + Decorate 150(g_tTexcdu4) DescriptorSet 0 + Decorate 230(Color) Location 0 + Decorate 234(Depth) BuiltIn FragDepth + Decorate 238(g_sSamp2d) DescriptorSet 0 + Decorate 241(g_tTex1df4a) DescriptorSet 0 + Decorate 241(g_tTex1df4a) Binding 1 + Decorate 242(g_tTex1df4) DescriptorSet 0 + Decorate 242(g_tTex1df4) Binding 0 + Decorate 245(g_tTex1di4) DescriptorSet 0 + Decorate 248(g_tTex1du4) DescriptorSet 0 + Decorate 251(g_tTex3df4) DescriptorSet 0 + Decorate 254(g_tTex3di4) DescriptorSet 0 + Decorate 257(g_tTex3du4) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex2df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: TypeVector 6(float) 3 + 22($Global): TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4) + 23: TypePointer Uniform 22($Global) + 24: 23(ptr) Variable Uniform + 25: TypeInt 32 1 + 26: 25(int) Constant 1 + 27: TypePointer Uniform 20(fvec2) + 30: 25(int) Constant 0 + 32: TypeVector 25(int) 4 + 33: TypePointer Function 32(ivec4) + 35: TypeImage 25(int) 2D sampled format:Unknown + 36: TypePointer UniformConstant 35 + 37(g_tTex2di4): 36(ptr) Variable UniformConstant + 40: TypeSampledImage 35 + 45: TypeInt 32 0 + 46: TypeVector 45(int) 4 + 47: TypePointer Function 46(ivec4) + 49: TypeImage 45(int) 2D sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex2du4): 50(ptr) Variable UniformConstant + 54: TypeSampledImage 49 + 86: 25(int) Constant 2 + 108: 25(int) Constant 3 + 125: TypeImage 6(float) Cube sampled format:Unknown + 126: TypePointer UniformConstant 125 + 127(g_tTexcdf4): 126(ptr) Variable UniformConstant + 130: TypeSampledImage 125 + 132: TypePointer Uniform 21(fvec3) + 137: TypeImage 25(int) Cube sampled format:Unknown + 138: TypePointer UniformConstant 137 + 139(g_tTexcdi4): 138(ptr) Variable UniformConstant + 142: TypeSampledImage 137 + 148: TypeImage 45(int) Cube sampled format:Unknown + 149: TypePointer UniformConstant 148 + 150(g_tTexcdu4): 149(ptr) Variable UniformConstant + 153: TypeSampledImage 148 + 221(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 222: TypePointer Function 221(PS_OUTPUT) + 224: 6(float) Constant 1065353216 + 225: 7(fvec4) ConstantComposite 224 224 224 224 + 227: TypePointer Function 6(float) + 229: TypePointer Output 7(fvec4) + 230(Color): 229(ptr) Variable Output + 233: TypePointer Output 6(float) + 234(Depth): 233(ptr) Variable Output + 238(g_sSamp2d): 15(ptr) Variable UniformConstant + 239: TypeImage 6(float) 1D sampled format:Unknown + 240: TypePointer UniformConstant 239 +241(g_tTex1df4a): 240(ptr) Variable UniformConstant + 242(g_tTex1df4): 240(ptr) Variable UniformConstant + 243: TypeImage 25(int) 1D sampled format:Unknown + 244: TypePointer UniformConstant 243 + 245(g_tTex1di4): 244(ptr) Variable UniformConstant + 246: TypeImage 45(int) 1D sampled format:Unknown + 247: TypePointer UniformConstant 246 + 248(g_tTex1du4): 247(ptr) Variable UniformConstant + 249: TypeImage 6(float) 3D sampled format:Unknown + 250: TypePointer UniformConstant 249 + 251(g_tTex3df4): 250(ptr) Variable UniformConstant + 252: TypeImage 25(int) 3D sampled format:Unknown + 253: TypePointer UniformConstant 252 + 254(g_tTex3di4): 253(ptr) Variable UniformConstant + 255: TypeImage 45(int) 3D sampled format:Unknown + 256: TypePointer UniformConstant 255 + 257(g_tTex3du4): 256(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(txval00): 8(ptr) Variable Function + 34(txval01): 33(ptr) Variable Function + 48(txval02): 47(ptr) Variable Function + 59(txval10): 8(ptr) Variable Function + 66(txval11): 33(ptr) Variable Function + 73(txval12): 47(ptr) Variable Function + 80(txval20): 8(ptr) Variable Function + 88(txval21): 33(ptr) Variable Function + 95(txval22): 47(ptr) Variable Function + 102(txval30): 8(ptr) Variable Function + 110(txval31): 33(ptr) Variable Function + 117(txval32): 47(ptr) Variable Function + 124(txval40): 8(ptr) Variable Function + 136(txval41): 33(ptr) Variable Function + 147(txval42): 47(ptr) Variable Function + 158(txval50): 8(ptr) Variable Function + 165(txval51): 33(ptr) Variable Function + 172(txval52): 47(ptr) Variable Function + 179(txval60): 8(ptr) Variable Function + 186(txval61): 33(ptr) Variable Function + 193(txval62): 47(ptr) Variable Function + 200(txval70): 8(ptr) Variable Function + 207(txval71): 33(ptr) Variable Function + 214(txval72): 47(ptr) Variable Function + 223(psout): 222(ptr) Variable Function + 13: 10 Load 12(g_tTex2df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 28: 27(ptr) AccessChain 24 26 + 29: 20(fvec2) Load 28 + 31: 7(fvec4) ImageGather 19 29 30 + Store 9(txval00) 31 + 38: 35 Load 37(g_tTex2di4) + 39: 14 Load 16(g_sSamp) + 41: 40 SampledImage 38 39 + 42: 27(ptr) AccessChain 24 26 + 43: 20(fvec2) Load 42 + 44: 32(ivec4) ImageGather 41 43 30 + Store 34(txval01) 44 + 52: 49 Load 51(g_tTex2du4) + 53: 14 Load 16(g_sSamp) + 55: 54 SampledImage 52 53 + 56: 27(ptr) AccessChain 24 26 + 57: 20(fvec2) Load 56 + 58: 46(ivec4) ImageGather 55 57 30 + Store 48(txval02) 58 + 60: 10 Load 12(g_tTex2df4) + 61: 14 Load 16(g_sSamp) + 62: 18 SampledImage 60 61 + 63: 27(ptr) AccessChain 24 26 + 64: 20(fvec2) Load 63 + 65: 7(fvec4) ImageGather 62 64 26 + Store 59(txval10) 65 + 67: 35 Load 37(g_tTex2di4) + 68: 14 Load 16(g_sSamp) + 69: 40 SampledImage 67 68 + 70: 27(ptr) AccessChain 24 26 + 71: 20(fvec2) Load 70 + 72: 32(ivec4) ImageGather 69 71 26 + Store 66(txval11) 72 + 74: 49 Load 51(g_tTex2du4) + 75: 14 Load 16(g_sSamp) + 76: 54 SampledImage 74 75 + 77: 27(ptr) AccessChain 24 26 + 78: 20(fvec2) Load 77 + 79: 46(ivec4) ImageGather 76 78 26 + Store 73(txval12) 79 + 81: 10 Load 12(g_tTex2df4) + 82: 14 Load 16(g_sSamp) + 83: 18 SampledImage 81 82 + 84: 27(ptr) AccessChain 24 26 + 85: 20(fvec2) Load 84 + 87: 7(fvec4) ImageGather 83 85 86 + Store 80(txval20) 87 + 89: 35 Load 37(g_tTex2di4) + 90: 14 Load 16(g_sSamp) + 91: 40 SampledImage 89 90 + 92: 27(ptr) AccessChain 24 26 + 93: 20(fvec2) Load 92 + 94: 32(ivec4) ImageGather 91 93 86 + Store 88(txval21) 94 + 96: 49 Load 51(g_tTex2du4) + 97: 14 Load 16(g_sSamp) + 98: 54 SampledImage 96 97 + 99: 27(ptr) AccessChain 24 26 + 100: 20(fvec2) Load 99 + 101: 46(ivec4) ImageGather 98 100 86 + Store 95(txval22) 101 + 103: 10 Load 12(g_tTex2df4) + 104: 14 Load 16(g_sSamp) + 105: 18 SampledImage 103 104 + 106: 27(ptr) AccessChain 24 26 + 107: 20(fvec2) Load 106 + 109: 7(fvec4) ImageGather 105 107 108 + Store 102(txval30) 109 + 111: 35 Load 37(g_tTex2di4) + 112: 14 Load 16(g_sSamp) + 113: 40 SampledImage 111 112 + 114: 27(ptr) AccessChain 24 26 + 115: 20(fvec2) Load 114 + 116: 32(ivec4) ImageGather 113 115 108 + Store 110(txval31) 116 + 118: 49 Load 51(g_tTex2du4) + 119: 14 Load 16(g_sSamp) + 120: 54 SampledImage 118 119 + 121: 27(ptr) AccessChain 24 26 + 122: 20(fvec2) Load 121 + 123: 46(ivec4) ImageGather 120 122 108 + Store 117(txval32) 123 + 128: 125 Load 127(g_tTexcdf4) + 129: 14 Load 16(g_sSamp) + 131: 130 SampledImage 128 129 + 133: 132(ptr) AccessChain 24 86 + 134: 21(fvec3) Load 133 + 135: 7(fvec4) ImageGather 131 134 30 + Store 124(txval40) 135 + 140: 137 Load 139(g_tTexcdi4) + 141: 14 Load 16(g_sSamp) + 143: 142 SampledImage 140 141 + 144: 132(ptr) AccessChain 24 86 + 145: 21(fvec3) Load 144 + 146: 32(ivec4) ImageGather 143 145 30 + Store 136(txval41) 146 + 151: 148 Load 150(g_tTexcdu4) + 152: 14 Load 16(g_sSamp) + 154: 153 SampledImage 151 152 + 155: 132(ptr) AccessChain 24 86 + 156: 21(fvec3) Load 155 + 157: 46(ivec4) ImageGather 154 156 30 + Store 147(txval42) 157 + 159: 125 Load 127(g_tTexcdf4) + 160: 14 Load 16(g_sSamp) + 161: 130 SampledImage 159 160 + 162: 132(ptr) AccessChain 24 86 + 163: 21(fvec3) Load 162 + 164: 7(fvec4) ImageGather 161 163 26 + Store 158(txval50) 164 + 166: 137 Load 139(g_tTexcdi4) + 167: 14 Load 16(g_sSamp) + 168: 142 SampledImage 166 167 + 169: 132(ptr) AccessChain 24 86 + 170: 21(fvec3) Load 169 + 171: 32(ivec4) ImageGather 168 170 26 + Store 165(txval51) 171 + 173: 148 Load 150(g_tTexcdu4) + 174: 14 Load 16(g_sSamp) + 175: 153 SampledImage 173 174 + 176: 132(ptr) AccessChain 24 86 + 177: 21(fvec3) Load 176 + 178: 46(ivec4) ImageGather 175 177 26 + Store 172(txval52) 178 + 180: 125 Load 127(g_tTexcdf4) + 181: 14 Load 16(g_sSamp) + 182: 130 SampledImage 180 181 + 183: 132(ptr) AccessChain 24 86 + 184: 21(fvec3) Load 183 + 185: 7(fvec4) ImageGather 182 184 86 + Store 179(txval60) 185 + 187: 137 Load 139(g_tTexcdi4) + 188: 14 Load 16(g_sSamp) + 189: 142 SampledImage 187 188 + 190: 132(ptr) AccessChain 24 86 + 191: 21(fvec3) Load 190 + 192: 32(ivec4) ImageGather 189 191 86 + Store 186(txval61) 192 + 194: 148 Load 150(g_tTexcdu4) + 195: 14 Load 16(g_sSamp) + 196: 153 SampledImage 194 195 + 197: 132(ptr) AccessChain 24 86 + 198: 21(fvec3) Load 197 + 199: 46(ivec4) ImageGather 196 198 86 + Store 193(txval62) 199 + 201: 125 Load 127(g_tTexcdf4) + 202: 14 Load 16(g_sSamp) + 203: 130 SampledImage 201 202 + 204: 132(ptr) AccessChain 24 86 + 205: 21(fvec3) Load 204 + 206: 7(fvec4) ImageGather 203 205 108 + Store 200(txval70) 206 + 208: 137 Load 139(g_tTexcdi4) + 209: 14 Load 16(g_sSamp) + 210: 142 SampledImage 208 209 + 211: 132(ptr) AccessChain 24 86 + 212: 21(fvec3) Load 211 + 213: 32(ivec4) ImageGather 210 212 108 + Store 207(txval71) 213 + 215: 148 Load 150(g_tTexcdu4) + 216: 14 Load 16(g_sSamp) + 217: 153 SampledImage 215 216 + 218: 132(ptr) AccessChain 24 86 + 219: 21(fvec3) Load 218 + 220: 46(ivec4) ImageGather 217 219 108 + Store 214(txval72) 220 + 226: 8(ptr) AccessChain 223(psout) 30 + Store 226 225 + 228: 227(ptr) AccessChain 223(psout) 26 + Store 228 224 + 231: 8(ptr) AccessChain 223(psout) 30 + 232: 7(fvec4) Load 231 + Store 230(Color) 232 + 235: 227(ptr) AccessChain 223(psout) 26 + 236: 6(float) Load 235 + Store 234(Depth) 236 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out new file mode 100644 index 00000000..f178c3b3 --- /dev/null +++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out @@ -0,0 +1,1765 @@ +hlsl.gatherRGBA.offset.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:39 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:39 Function Parameters: +0:? Sequence +0:46 Sequence +0:46 move second child to first child (temp 4-component vector of float) +0:46 'txval001' (temp 4-component vector of float) +0:46 textureGatherOffset (global 4-component vector of float) +0:46 Construct combined texture-sampler (temp sampler2D) +0:46 'g_tTex2df4' (uniform texture2D) +0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:46 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 1 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 Constant: +0:46 0 (const int) +0:47 Sequence +0:47 move second child to first child (temp 4-component vector of int) +0:47 'txval011' (temp 4-component vector of int) +0:47 textureGatherOffset (global 4-component vector of int) +0:47 Construct combined texture-sampler (temp isampler2D) +0:47 'g_tTex2di4' (uniform itexture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 1 (const uint) +0:47 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 5 (const uint) +0:47 Constant: +0:47 0 (const int) +0:48 Sequence +0:48 move second child to first child (temp 4-component vector of uint) +0:48 'txval021' (temp 4-component vector of uint) +0:48 textureGatherOffset (global 4-component vector of uint) +0:48 Construct combined texture-sampler (temp usampler2D) +0:48 'g_tTex2du4' (uniform utexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 1 (const uint) +0:48 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 5 (const uint) +0:48 Constant: +0:48 0 (const int) +0:50 Sequence +0:50 move second child to first child (temp 4-component vector of float) +0:50 'txval004' (temp 4-component vector of float) +0:50 textureGatherOffsets (global 4-component vector of float) +0:50 Construct combined texture-sampler (temp sampler2D) +0:50 'g_tTex2df4' (uniform texture2D) +0:50 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 1 (const uint) +0:50 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 Constant: +0:50 0 (const int) +0:51 Sequence +0:51 move second child to first child (temp 4-component vector of int) +0:51 'txval014' (temp 4-component vector of int) +0:51 textureGatherOffsets (global 4-component vector of int) +0:51 Construct combined texture-sampler (temp isampler2D) +0:51 'g_tTex2di4' (uniform itexture2D) +0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) +0:51 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 Constant: +0:51 0 (const int) +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of uint) +0:52 'txval024' (temp 4-component vector of uint) +0:52 textureGatherOffsets (global 4-component vector of uint) +0:52 Construct combined texture-sampler (temp usampler2D) +0:52 'g_tTex2du4' (uniform utexture2D) +0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 Constant: +0:52 0 (const int) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of float) +0:62 'txval101' (temp 4-component vector of float) +0:62 textureGatherOffset (global 4-component vector of float) +0:62 Construct combined texture-sampler (temp sampler2D) +0:62 'g_tTex2df4' (uniform texture2D) +0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:62 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 1 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 Constant: +0:62 1 (const int) +0:63 Sequence +0:63 move second child to first child (temp 4-component vector of int) +0:63 'txval111' (temp 4-component vector of int) +0:63 textureGatherOffset (global 4-component vector of int) +0:63 Construct combined texture-sampler (temp isampler2D) +0:63 'g_tTex2di4' (uniform itexture2D) +0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:63 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 1 (const uint) +0:63 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 5 (const uint) +0:63 Constant: +0:63 1 (const int) +0:64 Sequence +0:64 move second child to first child (temp 4-component vector of uint) +0:64 'txval121' (temp 4-component vector of uint) +0:64 textureGatherOffset (global 4-component vector of uint) +0:64 Construct combined texture-sampler (temp usampler2D) +0:64 'g_tTex2du4' (uniform utexture2D) +0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 1 (const uint) +0:64 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 5 (const uint) +0:64 Constant: +0:64 1 (const int) +0:66 Sequence +0:66 move second child to first child (temp 4-component vector of float) +0:66 'txval104' (temp 4-component vector of float) +0:66 textureGatherOffsets (global 4-component vector of float) +0:66 Construct combined texture-sampler (temp sampler2D) +0:66 'g_tTex2df4' (uniform texture2D) +0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 1 (const uint) +0:66 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 Constant: +0:66 1 (const int) +0:67 Sequence +0:67 move second child to first child (temp 4-component vector of int) +0:67 'txval114' (temp 4-component vector of int) +0:67 textureGatherOffsets (global 4-component vector of int) +0:67 Construct combined texture-sampler (temp isampler2D) +0:67 'g_tTex2di4' (uniform itexture2D) +0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:67 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 1 (const uint) +0:67 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 Constant: +0:67 1 (const int) +0:68 Sequence +0:68 move second child to first child (temp 4-component vector of uint) +0:68 'txval124' (temp 4-component vector of uint) +0:68 textureGatherOffsets (global 4-component vector of uint) +0:68 Construct combined texture-sampler (temp usampler2D) +0:68 'g_tTex2du4' (uniform utexture2D) +0:68 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:68 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 1 (const uint) +0:68 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 Constant: +0:68 1 (const int) +0:78 Sequence +0:78 move second child to first child (temp 4-component vector of float) +0:78 'txval201' (temp 4-component vector of float) +0:78 textureGatherOffset (global 4-component vector of float) +0:78 Construct combined texture-sampler (temp sampler2D) +0:78 'g_tTex2df4' (uniform texture2D) +0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:78 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 1 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 Constant: +0:78 2 (const int) +0:79 Sequence +0:79 move second child to first child (temp 4-component vector of int) +0:79 'txval211' (temp 4-component vector of int) +0:79 textureGatherOffset (global 4-component vector of int) +0:79 Construct combined texture-sampler (temp isampler2D) +0:79 'g_tTex2di4' (uniform itexture2D) +0:79 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:79 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:79 Constant: +0:79 1 (const uint) +0:79 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:79 Constant: +0:79 5 (const uint) +0:79 Constant: +0:79 2 (const int) +0:80 Sequence +0:80 move second child to first child (temp 4-component vector of uint) +0:80 'txval221' (temp 4-component vector of uint) +0:80 textureGatherOffset (global 4-component vector of uint) +0:80 Construct combined texture-sampler (temp usampler2D) +0:80 'g_tTex2du4' (uniform utexture2D) +0:80 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:80 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:80 Constant: +0:80 1 (const uint) +0:80 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:80 Constant: +0:80 5 (const uint) +0:80 Constant: +0:80 2 (const int) +0:82 Sequence +0:82 move second child to first child (temp 4-component vector of float) +0:82 'txval204' (temp 4-component vector of float) +0:82 textureGatherOffsets (global 4-component vector of float) +0:82 Construct combined texture-sampler (temp sampler2D) +0:82 'g_tTex2df4' (uniform texture2D) +0:82 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:82 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 1 (const uint) +0:82 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 Constant: +0:82 2 (const int) +0:83 Sequence +0:83 move second child to first child (temp 4-component vector of int) +0:83 'txval214' (temp 4-component vector of int) +0:83 textureGatherOffsets (global 4-component vector of int) +0:83 Construct combined texture-sampler (temp isampler2D) +0:83 'g_tTex2di4' (uniform itexture2D) +0:83 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:83 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 1 (const uint) +0:83 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 Constant: +0:83 2 (const int) +0:84 Sequence +0:84 move second child to first child (temp 4-component vector of uint) +0:84 'txval224' (temp 4-component vector of uint) +0:84 textureGatherOffsets (global 4-component vector of uint) +0:84 Construct combined texture-sampler (temp usampler2D) +0:84 'g_tTex2du4' (uniform utexture2D) +0:84 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:84 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 1 (const uint) +0:84 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 Constant: +0:84 2 (const int) +0:94 Sequence +0:94 move second child to first child (temp 4-component vector of float) +0:94 'txval301' (temp 4-component vector of float) +0:94 textureGatherOffset (global 4-component vector of float) +0:94 Construct combined texture-sampler (temp sampler2D) +0:94 'g_tTex2df4' (uniform texture2D) +0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:94 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 1 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 Constant: +0:94 3 (const int) +0:95 Sequence +0:95 move second child to first child (temp 4-component vector of int) +0:95 'txval311' (temp 4-component vector of int) +0:95 textureGatherOffset (global 4-component vector of int) +0:95 Construct combined texture-sampler (temp isampler2D) +0:95 'g_tTex2di4' (uniform itexture2D) +0:95 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:95 Constant: +0:95 1 (const uint) +0:95 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:95 Constant: +0:95 5 (const uint) +0:95 Constant: +0:95 3 (const int) +0:96 Sequence +0:96 move second child to first child (temp 4-component vector of uint) +0:96 'txval321' (temp 4-component vector of uint) +0:96 textureGatherOffset (global 4-component vector of uint) +0:96 Construct combined texture-sampler (temp usampler2D) +0:96 'g_tTex2du4' (uniform utexture2D) +0:96 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:96 Constant: +0:96 1 (const uint) +0:96 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:96 Constant: +0:96 5 (const uint) +0:96 Constant: +0:96 3 (const int) +0:98 Sequence +0:98 move second child to first child (temp 4-component vector of float) +0:98 'txval304' (temp 4-component vector of float) +0:98 textureGatherOffsets (global 4-component vector of float) +0:98 Construct combined texture-sampler (temp sampler2D) +0:98 'g_tTex2df4' (uniform texture2D) +0:98 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 1 (const uint) +0:98 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 Constant: +0:98 3 (const int) +0:99 Sequence +0:99 move second child to first child (temp 4-component vector of int) +0:99 'txval314' (temp 4-component vector of int) +0:99 textureGatherOffsets (global 4-component vector of int) +0:99 Construct combined texture-sampler (temp isampler2D) +0:99 'g_tTex2di4' (uniform itexture2D) +0:99 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:99 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 1 (const uint) +0:99 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 Constant: +0:99 3 (const int) +0:100 Sequence +0:100 move second child to first child (temp 4-component vector of uint) +0:100 'txval324' (temp 4-component vector of uint) +0:100 textureGatherOffsets (global 4-component vector of uint) +0:100 Construct combined texture-sampler (temp usampler2D) +0:100 'g_tTex2du4' (uniform utexture2D) +0:100 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:100 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 1 (const uint) +0:100 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 Constant: +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 Depth}) +0:112 Constant: +0:112 0 (const int) +0:112 Constant: +0:112 1.000000 +0:112 1.000000 +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) +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 Sequence +0:115 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) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:39 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:39 Function Parameters: +0:? Sequence +0:46 Sequence +0:46 move second child to first child (temp 4-component vector of float) +0:46 'txval001' (temp 4-component vector of float) +0:46 textureGatherOffset (global 4-component vector of float) +0:46 Construct combined texture-sampler (temp sampler2D) +0:46 'g_tTex2df4' (uniform texture2D) +0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:46 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 1 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 Constant: +0:46 0 (const int) +0:47 Sequence +0:47 move second child to first child (temp 4-component vector of int) +0:47 'txval011' (temp 4-component vector of int) +0:47 textureGatherOffset (global 4-component vector of int) +0:47 Construct combined texture-sampler (temp isampler2D) +0:47 'g_tTex2di4' (uniform itexture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 1 (const uint) +0:47 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 5 (const uint) +0:47 Constant: +0:47 0 (const int) +0:48 Sequence +0:48 move second child to first child (temp 4-component vector of uint) +0:48 'txval021' (temp 4-component vector of uint) +0:48 textureGatherOffset (global 4-component vector of uint) +0:48 Construct combined texture-sampler (temp usampler2D) +0:48 'g_tTex2du4' (uniform utexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 1 (const uint) +0:48 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 5 (const uint) +0:48 Constant: +0:48 0 (const int) +0:50 Sequence +0:50 move second child to first child (temp 4-component vector of float) +0:50 'txval004' (temp 4-component vector of float) +0:50 textureGatherOffsets (global 4-component vector of float) +0:50 Construct combined texture-sampler (temp sampler2D) +0:50 'g_tTex2df4' (uniform texture2D) +0:50 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 1 (const uint) +0:50 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 5 (const uint) +0:50 Constant: +0:50 0 (const int) +0:51 Sequence +0:51 move second child to first child (temp 4-component vector of int) +0:51 'txval014' (temp 4-component vector of int) +0:51 textureGatherOffsets (global 4-component vector of int) +0:51 Construct combined texture-sampler (temp isampler2D) +0:51 'g_tTex2di4' (uniform itexture2D) +0:51 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) +0:51 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 5 (const uint) +0:51 Constant: +0:51 0 (const int) +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of uint) +0:52 'txval024' (temp 4-component vector of uint) +0:52 textureGatherOffsets (global 4-component vector of uint) +0:52 Construct combined texture-sampler (temp usampler2D) +0:52 'g_tTex2du4' (uniform utexture2D) +0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 5 (const uint) +0:52 Constant: +0:52 0 (const int) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of float) +0:62 'txval101' (temp 4-component vector of float) +0:62 textureGatherOffset (global 4-component vector of float) +0:62 Construct combined texture-sampler (temp sampler2D) +0:62 'g_tTex2df4' (uniform texture2D) +0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:62 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 1 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 Constant: +0:62 1 (const int) +0:63 Sequence +0:63 move second child to first child (temp 4-component vector of int) +0:63 'txval111' (temp 4-component vector of int) +0:63 textureGatherOffset (global 4-component vector of int) +0:63 Construct combined texture-sampler (temp isampler2D) +0:63 'g_tTex2di4' (uniform itexture2D) +0:63 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:63 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 1 (const uint) +0:63 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 5 (const uint) +0:63 Constant: +0:63 1 (const int) +0:64 Sequence +0:64 move second child to first child (temp 4-component vector of uint) +0:64 'txval121' (temp 4-component vector of uint) +0:64 textureGatherOffset (global 4-component vector of uint) +0:64 Construct combined texture-sampler (temp usampler2D) +0:64 'g_tTex2du4' (uniform utexture2D) +0:64 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 1 (const uint) +0:64 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 5 (const uint) +0:64 Constant: +0:64 1 (const int) +0:66 Sequence +0:66 move second child to first child (temp 4-component vector of float) +0:66 'txval104' (temp 4-component vector of float) +0:66 textureGatherOffsets (global 4-component vector of float) +0:66 Construct combined texture-sampler (temp sampler2D) +0:66 'g_tTex2df4' (uniform texture2D) +0:66 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 1 (const uint) +0:66 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 5 (const uint) +0:66 Constant: +0:66 1 (const int) +0:67 Sequence +0:67 move second child to first child (temp 4-component vector of int) +0:67 'txval114' (temp 4-component vector of int) +0:67 textureGatherOffsets (global 4-component vector of int) +0:67 Construct combined texture-sampler (temp isampler2D) +0:67 'g_tTex2di4' (uniform itexture2D) +0:67 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:67 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 1 (const uint) +0:67 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 5 (const uint) +0:67 Constant: +0:67 1 (const int) +0:68 Sequence +0:68 move second child to first child (temp 4-component vector of uint) +0:68 'txval124' (temp 4-component vector of uint) +0:68 textureGatherOffsets (global 4-component vector of uint) +0:68 Construct combined texture-sampler (temp usampler2D) +0:68 'g_tTex2du4' (uniform utexture2D) +0:68 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:68 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 1 (const uint) +0:68 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 5 (const uint) +0:68 Constant: +0:68 1 (const int) +0:78 Sequence +0:78 move second child to first child (temp 4-component vector of float) +0:78 'txval201' (temp 4-component vector of float) +0:78 textureGatherOffset (global 4-component vector of float) +0:78 Construct combined texture-sampler (temp sampler2D) +0:78 'g_tTex2df4' (uniform texture2D) +0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:78 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 1 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 Constant: +0:78 2 (const int) +0:79 Sequence +0:79 move second child to first child (temp 4-component vector of int) +0:79 'txval211' (temp 4-component vector of int) +0:79 textureGatherOffset (global 4-component vector of int) +0:79 Construct combined texture-sampler (temp isampler2D) +0:79 'g_tTex2di4' (uniform itexture2D) +0:79 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:79 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:79 Constant: +0:79 1 (const uint) +0:79 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:79 Constant: +0:79 5 (const uint) +0:79 Constant: +0:79 2 (const int) +0:80 Sequence +0:80 move second child to first child (temp 4-component vector of uint) +0:80 'txval221' (temp 4-component vector of uint) +0:80 textureGatherOffset (global 4-component vector of uint) +0:80 Construct combined texture-sampler (temp usampler2D) +0:80 'g_tTex2du4' (uniform utexture2D) +0:80 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:80 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:80 Constant: +0:80 1 (const uint) +0:80 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:80 Constant: +0:80 5 (const uint) +0:80 Constant: +0:80 2 (const int) +0:82 Sequence +0:82 move second child to first child (temp 4-component vector of float) +0:82 'txval204' (temp 4-component vector of float) +0:82 textureGatherOffsets (global 4-component vector of float) +0:82 Construct combined texture-sampler (temp sampler2D) +0:82 'g_tTex2df4' (uniform texture2D) +0:82 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:82 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 1 (const uint) +0:82 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:82 Constant: +0:82 5 (const uint) +0:82 Constant: +0:82 2 (const int) +0:83 Sequence +0:83 move second child to first child (temp 4-component vector of int) +0:83 'txval214' (temp 4-component vector of int) +0:83 textureGatherOffsets (global 4-component vector of int) +0:83 Construct combined texture-sampler (temp isampler2D) +0:83 'g_tTex2di4' (uniform itexture2D) +0:83 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:83 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 1 (const uint) +0:83 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:83 Constant: +0:83 5 (const uint) +0:83 Constant: +0:83 2 (const int) +0:84 Sequence +0:84 move second child to first child (temp 4-component vector of uint) +0:84 'txval224' (temp 4-component vector of uint) +0:84 textureGatherOffsets (global 4-component vector of uint) +0:84 Construct combined texture-sampler (temp usampler2D) +0:84 'g_tTex2du4' (uniform utexture2D) +0:84 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:84 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 1 (const uint) +0:84 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:84 Constant: +0:84 5 (const uint) +0:84 Constant: +0:84 2 (const int) +0:94 Sequence +0:94 move second child to first child (temp 4-component vector of float) +0:94 'txval301' (temp 4-component vector of float) +0:94 textureGatherOffset (global 4-component vector of float) +0:94 Construct combined texture-sampler (temp sampler2D) +0:94 'g_tTex2df4' (uniform texture2D) +0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:94 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 1 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 Constant: +0:94 3 (const int) +0:95 Sequence +0:95 move second child to first child (temp 4-component vector of int) +0:95 'txval311' (temp 4-component vector of int) +0:95 textureGatherOffset (global 4-component vector of int) +0:95 Construct combined texture-sampler (temp isampler2D) +0:95 'g_tTex2di4' (uniform itexture2D) +0:95 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:95 Constant: +0:95 1 (const uint) +0:95 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:95 Constant: +0:95 5 (const uint) +0:95 Constant: +0:95 3 (const int) +0:96 Sequence +0:96 move second child to first child (temp 4-component vector of uint) +0:96 'txval321' (temp 4-component vector of uint) +0:96 textureGatherOffset (global 4-component vector of uint) +0:96 Construct combined texture-sampler (temp usampler2D) +0:96 'g_tTex2du4' (uniform utexture2D) +0:96 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:96 Constant: +0:96 1 (const uint) +0:96 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:96 Constant: +0:96 5 (const uint) +0:96 Constant: +0:96 3 (const int) +0:98 Sequence +0:98 move second child to first child (temp 4-component vector of float) +0:98 'txval304' (temp 4-component vector of float) +0:98 textureGatherOffsets (global 4-component vector of float) +0:98 Construct combined texture-sampler (temp sampler2D) +0:98 'g_tTex2df4' (uniform texture2D) +0:98 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 1 (const uint) +0:98 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:98 Constant: +0:98 5 (const uint) +0:98 Constant: +0:98 3 (const int) +0:99 Sequence +0:99 move second child to first child (temp 4-component vector of int) +0:99 'txval314' (temp 4-component vector of int) +0:99 textureGatherOffsets (global 4-component vector of int) +0:99 Construct combined texture-sampler (temp isampler2D) +0:99 'g_tTex2di4' (uniform itexture2D) +0:99 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:99 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 1 (const uint) +0:99 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:99 Constant: +0:99 5 (const uint) +0:99 Constant: +0:99 3 (const int) +0:100 Sequence +0:100 move second child to first child (temp 4-component vector of uint) +0:100 'txval324' (temp 4-component vector of uint) +0:100 textureGatherOffsets (global 4-component vector of uint) +0:100 Construct combined texture-sampler (temp usampler2D) +0:100 'g_tTex2du4' (uniform utexture2D) +0:100 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:100 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of float) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 1 (const uint) +0:100 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:100 Constant: +0:100 5 (const uint) +0:100 Constant: +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 Depth}) +0:112 Constant: +0:112 0 (const int) +0:112 Constant: +0:112 1.000000 +0:112 1.000000 +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) +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 Sequence +0:115 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) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 392 + + Capability Shader + Capability ImageGatherExtended + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 355 359 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval001" + Name 12 "g_tTex2df4" + Name 16 "g_sSamp" + Name 26 "$Global" + MemberName 26($Global) 0 "c1" + MemberName 26($Global) 1 "c2" + MemberName 26($Global) 2 "c3" + MemberName 26($Global) 3 "c4" + MemberName 26($Global) 4 "o1" + MemberName 26($Global) 5 "o2" + MemberName 26($Global) 6 "o3" + MemberName 26($Global) 7 "o4" + Name 28 "" + Name 40 "txval011" + Name 43 "g_tTex2di4" + Name 56 "txval021" + Name 59 "g_tTex2du4" + Name 69 "txval004" + Name 87 "txval014" + Name 103 "txval024" + Name 119 "txval101" + Name 128 "txval111" + Name 137 "txval121" + Name 146 "txval104" + Name 162 "txval114" + Name 178 "txval124" + Name 194 "txval201" + Name 204 "txval211" + Name 213 "txval221" + Name 222 "txval204" + Name 238 "txval214" + Name 254 "txval224" + Name 270 "txval301" + Name 280 "txval311" + Name 289 "txval321" + Name 298 "txval304" + Name 314 "txval314" + Name 330 "txval324" + Name 346 "PS_OUTPUT" + MemberName 346(PS_OUTPUT) 0 "Color" + MemberName 346(PS_OUTPUT) 1 "Depth" + Name 348 "psout" + Name 355 "Color" + Name 359 "Depth" + Name 363 "g_sSamp2d" + Name 366 "g_tTex1df4a" + Name 367 "g_tTex1df4" + Name 370 "g_tTex1di4" + Name 373 "g_tTex1du4" + Name 376 "g_tTex3df4" + Name 379 "g_tTex3di4" + Name 382 "g_tTex3du4" + Name 385 "g_tTexcdf4" + Name 388 "g_tTexcdi4" + Name 391 "g_tTexcdu4" + Decorate 12(g_tTex2df4) DescriptorSet 0 + Decorate 16(g_sSamp) DescriptorSet 0 + Decorate 16(g_sSamp) Binding 0 + MemberDecorate 26($Global) 0 Offset 0 + MemberDecorate 26($Global) 1 Offset 8 + MemberDecorate 26($Global) 2 Offset 16 + MemberDecorate 26($Global) 3 Offset 32 + MemberDecorate 26($Global) 4 Offset 48 + MemberDecorate 26($Global) 5 Offset 56 + MemberDecorate 26($Global) 6 Offset 64 + MemberDecorate 26($Global) 7 Offset 80 + Decorate 26($Global) Block + Decorate 28 DescriptorSet 0 + Decorate 43(g_tTex2di4) DescriptorSet 0 + Decorate 59(g_tTex2du4) DescriptorSet 0 + Decorate 355(Color) Location 0 + Decorate 359(Depth) BuiltIn FragDepth + Decorate 363(g_sSamp2d) DescriptorSet 0 + Decorate 366(g_tTex1df4a) DescriptorSet 0 + Decorate 366(g_tTex1df4a) Binding 1 + Decorate 367(g_tTex1df4) DescriptorSet 0 + Decorate 367(g_tTex1df4) Binding 0 + Decorate 370(g_tTex1di4) DescriptorSet 0 + Decorate 373(g_tTex1du4) DescriptorSet 0 + Decorate 376(g_tTex3df4) DescriptorSet 0 + Decorate 379(g_tTex3di4) DescriptorSet 0 + Decorate 382(g_tTex3du4) DescriptorSet 0 + Decorate 385(g_tTexcdf4) DescriptorSet 0 + Decorate 388(g_tTexcdi4) DescriptorSet 0 + Decorate 391(g_tTexcdu4) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex2df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: TypeVector 6(float) 3 + 22: TypeInt 32 1 + 23: TypeVector 22(int) 2 + 24: TypeVector 22(int) 3 + 25: TypeVector 22(int) 4 + 26($Global): TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4) 22(int) 23(ivec2) 24(ivec3) 25(ivec4) + 27: TypePointer Uniform 26($Global) + 28: 27(ptr) Variable Uniform + 29: 22(int) Constant 1 + 30: TypePointer Uniform 20(fvec2) + 33: 22(int) Constant 5 + 34: TypePointer Uniform 23(ivec2) + 37: 22(int) Constant 0 + 39: TypePointer Function 25(ivec4) + 41: TypeImage 22(int) 2D sampled format:Unknown + 42: TypePointer UniformConstant 41 + 43(g_tTex2di4): 42(ptr) Variable UniformConstant + 46: TypeSampledImage 41 + 53: TypeInt 32 0 + 54: TypeVector 53(int) 4 + 55: TypePointer Function 54(ivec4) + 57: TypeImage 53(int) 2D sampled format:Unknown + 58: TypePointer UniformConstant 57 + 59(g_tTex2du4): 58(ptr) Variable UniformConstant + 62: TypeSampledImage 57 + 83: 53(int) Constant 4 + 84: TypeArray 23(ivec2) 83 + 202: 22(int) Constant 2 + 278: 22(int) Constant 3 + 346(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 347: TypePointer Function 346(PS_OUTPUT) + 349: 6(float) Constant 1065353216 + 350: 7(fvec4) ConstantComposite 349 349 349 349 + 352: TypePointer Function 6(float) + 354: TypePointer Output 7(fvec4) + 355(Color): 354(ptr) Variable Output + 358: TypePointer Output 6(float) + 359(Depth): 358(ptr) Variable Output + 363(g_sSamp2d): 15(ptr) Variable UniformConstant + 364: TypeImage 6(float) 1D sampled format:Unknown + 365: TypePointer UniformConstant 364 +366(g_tTex1df4a): 365(ptr) Variable UniformConstant + 367(g_tTex1df4): 365(ptr) Variable UniformConstant + 368: TypeImage 22(int) 1D sampled format:Unknown + 369: TypePointer UniformConstant 368 + 370(g_tTex1di4): 369(ptr) Variable UniformConstant + 371: TypeImage 53(int) 1D sampled format:Unknown + 372: TypePointer UniformConstant 371 + 373(g_tTex1du4): 372(ptr) Variable UniformConstant + 374: TypeImage 6(float) 3D sampled format:Unknown + 375: TypePointer UniformConstant 374 + 376(g_tTex3df4): 375(ptr) Variable UniformConstant + 377: TypeImage 22(int) 3D sampled format:Unknown + 378: TypePointer UniformConstant 377 + 379(g_tTex3di4): 378(ptr) Variable UniformConstant + 380: TypeImage 53(int) 3D sampled format:Unknown + 381: TypePointer UniformConstant 380 + 382(g_tTex3du4): 381(ptr) Variable UniformConstant + 383: TypeImage 6(float) Cube sampled format:Unknown + 384: TypePointer UniformConstant 383 + 385(g_tTexcdf4): 384(ptr) Variable UniformConstant + 386: TypeImage 22(int) Cube sampled format:Unknown + 387: TypePointer UniformConstant 386 + 388(g_tTexcdi4): 387(ptr) Variable UniformConstant + 389: TypeImage 53(int) Cube sampled format:Unknown + 390: TypePointer UniformConstant 389 + 391(g_tTexcdu4): 390(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(txval001): 8(ptr) Variable Function + 40(txval011): 39(ptr) Variable Function + 56(txval021): 55(ptr) Variable Function + 69(txval004): 8(ptr) Variable Function + 87(txval014): 39(ptr) Variable Function + 103(txval024): 55(ptr) Variable Function + 119(txval101): 8(ptr) Variable Function + 128(txval111): 39(ptr) Variable Function + 137(txval121): 55(ptr) Variable Function + 146(txval104): 8(ptr) Variable Function + 162(txval114): 39(ptr) Variable Function + 178(txval124): 55(ptr) Variable Function + 194(txval201): 8(ptr) Variable Function + 204(txval211): 39(ptr) Variable Function + 213(txval221): 55(ptr) Variable Function + 222(txval204): 8(ptr) Variable Function + 238(txval214): 39(ptr) Variable Function + 254(txval224): 55(ptr) Variable Function + 270(txval301): 8(ptr) Variable Function + 280(txval311): 39(ptr) Variable Function + 289(txval321): 55(ptr) Variable Function + 298(txval304): 8(ptr) Variable Function + 314(txval314): 39(ptr) Variable Function + 330(txval324): 55(ptr) Variable Function + 348(psout): 347(ptr) Variable Function + 13: 10 Load 12(g_tTex2df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 31: 30(ptr) AccessChain 28 29 + 32: 20(fvec2) Load 31 + 35: 34(ptr) AccessChain 28 33 + 36: 23(ivec2) Load 35 + 38: 7(fvec4) ImageGather 19 32 37 Offset 36 + Store 9(txval001) 38 + 44: 41 Load 43(g_tTex2di4) + 45: 14 Load 16(g_sSamp) + 47: 46 SampledImage 44 45 + 48: 30(ptr) AccessChain 28 29 + 49: 20(fvec2) Load 48 + 50: 34(ptr) AccessChain 28 33 + 51: 23(ivec2) Load 50 + 52: 25(ivec4) ImageGather 47 49 37 Offset 51 + Store 40(txval011) 52 + 60: 57 Load 59(g_tTex2du4) + 61: 14 Load 16(g_sSamp) + 63: 62 SampledImage 60 61 + 64: 30(ptr) AccessChain 28 29 + 65: 20(fvec2) Load 64 + 66: 34(ptr) AccessChain 28 33 + 67: 23(ivec2) Load 66 + 68: 54(ivec4) ImageGather 63 65 37 Offset 67 + Store 56(txval021) 68 + 70: 10 Load 12(g_tTex2df4) + 71: 14 Load 16(g_sSamp) + 72: 18 SampledImage 70 71 + 73: 30(ptr) AccessChain 28 29 + 74: 20(fvec2) Load 73 + 75: 34(ptr) AccessChain 28 33 + 76: 23(ivec2) Load 75 + 77: 34(ptr) AccessChain 28 33 + 78: 23(ivec2) Load 77 + 79: 34(ptr) AccessChain 28 33 + 80: 23(ivec2) Load 79 + 81: 34(ptr) AccessChain 28 33 + 82: 23(ivec2) Load 81 + 85: 84 CompositeConstruct 76 78 80 82 + 86: 7(fvec4) ImageGather 72 74 37 ConstOffsets 85 + Store 69(txval004) 86 + 88: 41 Load 43(g_tTex2di4) + 89: 14 Load 16(g_sSamp) + 90: 46 SampledImage 88 89 + 91: 30(ptr) AccessChain 28 29 + 92: 20(fvec2) Load 91 + 93: 34(ptr) AccessChain 28 33 + 94: 23(ivec2) Load 93 + 95: 34(ptr) AccessChain 28 33 + 96: 23(ivec2) Load 95 + 97: 34(ptr) AccessChain 28 33 + 98: 23(ivec2) Load 97 + 99: 34(ptr) AccessChain 28 33 + 100: 23(ivec2) Load 99 + 101: 84 CompositeConstruct 94 96 98 100 + 102: 25(ivec4) ImageGather 90 92 37 ConstOffsets 101 + Store 87(txval014) 102 + 104: 57 Load 59(g_tTex2du4) + 105: 14 Load 16(g_sSamp) + 106: 62 SampledImage 104 105 + 107: 30(ptr) AccessChain 28 29 + 108: 20(fvec2) Load 107 + 109: 34(ptr) AccessChain 28 33 + 110: 23(ivec2) Load 109 + 111: 34(ptr) AccessChain 28 33 + 112: 23(ivec2) Load 111 + 113: 34(ptr) AccessChain 28 33 + 114: 23(ivec2) Load 113 + 115: 34(ptr) AccessChain 28 33 + 116: 23(ivec2) Load 115 + 117: 84 CompositeConstruct 110 112 114 116 + 118: 54(ivec4) ImageGather 106 108 37 ConstOffsets 117 + Store 103(txval024) 118 + 120: 10 Load 12(g_tTex2df4) + 121: 14 Load 16(g_sSamp) + 122: 18 SampledImage 120 121 + 123: 30(ptr) AccessChain 28 29 + 124: 20(fvec2) Load 123 + 125: 34(ptr) AccessChain 28 33 + 126: 23(ivec2) Load 125 + 127: 7(fvec4) ImageGather 122 124 29 Offset 126 + Store 119(txval101) 127 + 129: 41 Load 43(g_tTex2di4) + 130: 14 Load 16(g_sSamp) + 131: 46 SampledImage 129 130 + 132: 30(ptr) AccessChain 28 29 + 133: 20(fvec2) Load 132 + 134: 34(ptr) AccessChain 28 33 + 135: 23(ivec2) Load 134 + 136: 25(ivec4) ImageGather 131 133 29 Offset 135 + Store 128(txval111) 136 + 138: 57 Load 59(g_tTex2du4) + 139: 14 Load 16(g_sSamp) + 140: 62 SampledImage 138 139 + 141: 30(ptr) AccessChain 28 29 + 142: 20(fvec2) Load 141 + 143: 34(ptr) AccessChain 28 33 + 144: 23(ivec2) Load 143 + 145: 54(ivec4) ImageGather 140 142 29 Offset 144 + Store 137(txval121) 145 + 147: 10 Load 12(g_tTex2df4) + 148: 14 Load 16(g_sSamp) + 149: 18 SampledImage 147 148 + 150: 30(ptr) AccessChain 28 29 + 151: 20(fvec2) Load 150 + 152: 34(ptr) AccessChain 28 33 + 153: 23(ivec2) Load 152 + 154: 34(ptr) AccessChain 28 33 + 155: 23(ivec2) Load 154 + 156: 34(ptr) AccessChain 28 33 + 157: 23(ivec2) Load 156 + 158: 34(ptr) AccessChain 28 33 + 159: 23(ivec2) Load 158 + 160: 84 CompositeConstruct 153 155 157 159 + 161: 7(fvec4) ImageGather 149 151 29 ConstOffsets 160 + Store 146(txval104) 161 + 163: 41 Load 43(g_tTex2di4) + 164: 14 Load 16(g_sSamp) + 165: 46 SampledImage 163 164 + 166: 30(ptr) AccessChain 28 29 + 167: 20(fvec2) Load 166 + 168: 34(ptr) AccessChain 28 33 + 169: 23(ivec2) Load 168 + 170: 34(ptr) AccessChain 28 33 + 171: 23(ivec2) Load 170 + 172: 34(ptr) AccessChain 28 33 + 173: 23(ivec2) Load 172 + 174: 34(ptr) AccessChain 28 33 + 175: 23(ivec2) Load 174 + 176: 84 CompositeConstruct 169 171 173 175 + 177: 25(ivec4) ImageGather 165 167 29 ConstOffsets 176 + Store 162(txval114) 177 + 179: 57 Load 59(g_tTex2du4) + 180: 14 Load 16(g_sSamp) + 181: 62 SampledImage 179 180 + 182: 30(ptr) AccessChain 28 29 + 183: 20(fvec2) Load 182 + 184: 34(ptr) AccessChain 28 33 + 185: 23(ivec2) Load 184 + 186: 34(ptr) AccessChain 28 33 + 187: 23(ivec2) Load 186 + 188: 34(ptr) AccessChain 28 33 + 189: 23(ivec2) Load 188 + 190: 34(ptr) AccessChain 28 33 + 191: 23(ivec2) Load 190 + 192: 84 CompositeConstruct 185 187 189 191 + 193: 54(ivec4) ImageGather 181 183 29 ConstOffsets 192 + Store 178(txval124) 193 + 195: 10 Load 12(g_tTex2df4) + 196: 14 Load 16(g_sSamp) + 197: 18 SampledImage 195 196 + 198: 30(ptr) AccessChain 28 29 + 199: 20(fvec2) Load 198 + 200: 34(ptr) AccessChain 28 33 + 201: 23(ivec2) Load 200 + 203: 7(fvec4) ImageGather 197 199 202 Offset 201 + Store 194(txval201) 203 + 205: 41 Load 43(g_tTex2di4) + 206: 14 Load 16(g_sSamp) + 207: 46 SampledImage 205 206 + 208: 30(ptr) AccessChain 28 29 + 209: 20(fvec2) Load 208 + 210: 34(ptr) AccessChain 28 33 + 211: 23(ivec2) Load 210 + 212: 25(ivec4) ImageGather 207 209 202 Offset 211 + Store 204(txval211) 212 + 214: 57 Load 59(g_tTex2du4) + 215: 14 Load 16(g_sSamp) + 216: 62 SampledImage 214 215 + 217: 30(ptr) AccessChain 28 29 + 218: 20(fvec2) Load 217 + 219: 34(ptr) AccessChain 28 33 + 220: 23(ivec2) Load 219 + 221: 54(ivec4) ImageGather 216 218 202 Offset 220 + Store 213(txval221) 221 + 223: 10 Load 12(g_tTex2df4) + 224: 14 Load 16(g_sSamp) + 225: 18 SampledImage 223 224 + 226: 30(ptr) AccessChain 28 29 + 227: 20(fvec2) Load 226 + 228: 34(ptr) AccessChain 28 33 + 229: 23(ivec2) Load 228 + 230: 34(ptr) AccessChain 28 33 + 231: 23(ivec2) Load 230 + 232: 34(ptr) AccessChain 28 33 + 233: 23(ivec2) Load 232 + 234: 34(ptr) AccessChain 28 33 + 235: 23(ivec2) Load 234 + 236: 84 CompositeConstruct 229 231 233 235 + 237: 7(fvec4) ImageGather 225 227 202 ConstOffsets 236 + Store 222(txval204) 237 + 239: 41 Load 43(g_tTex2di4) + 240: 14 Load 16(g_sSamp) + 241: 46 SampledImage 239 240 + 242: 30(ptr) AccessChain 28 29 + 243: 20(fvec2) Load 242 + 244: 34(ptr) AccessChain 28 33 + 245: 23(ivec2) Load 244 + 246: 34(ptr) AccessChain 28 33 + 247: 23(ivec2) Load 246 + 248: 34(ptr) AccessChain 28 33 + 249: 23(ivec2) Load 248 + 250: 34(ptr) AccessChain 28 33 + 251: 23(ivec2) Load 250 + 252: 84 CompositeConstruct 245 247 249 251 + 253: 25(ivec4) ImageGather 241 243 202 ConstOffsets 252 + Store 238(txval214) 253 + 255: 57 Load 59(g_tTex2du4) + 256: 14 Load 16(g_sSamp) + 257: 62 SampledImage 255 256 + 258: 30(ptr) AccessChain 28 29 + 259: 20(fvec2) Load 258 + 260: 34(ptr) AccessChain 28 33 + 261: 23(ivec2) Load 260 + 262: 34(ptr) AccessChain 28 33 + 263: 23(ivec2) Load 262 + 264: 34(ptr) AccessChain 28 33 + 265: 23(ivec2) Load 264 + 266: 34(ptr) AccessChain 28 33 + 267: 23(ivec2) Load 266 + 268: 84 CompositeConstruct 261 263 265 267 + 269: 54(ivec4) ImageGather 257 259 202 ConstOffsets 268 + Store 254(txval224) 269 + 271: 10 Load 12(g_tTex2df4) + 272: 14 Load 16(g_sSamp) + 273: 18 SampledImage 271 272 + 274: 30(ptr) AccessChain 28 29 + 275: 20(fvec2) Load 274 + 276: 34(ptr) AccessChain 28 33 + 277: 23(ivec2) Load 276 + 279: 7(fvec4) ImageGather 273 275 278 Offset 277 + Store 270(txval301) 279 + 281: 41 Load 43(g_tTex2di4) + 282: 14 Load 16(g_sSamp) + 283: 46 SampledImage 281 282 + 284: 30(ptr) AccessChain 28 29 + 285: 20(fvec2) Load 284 + 286: 34(ptr) AccessChain 28 33 + 287: 23(ivec2) Load 286 + 288: 25(ivec4) ImageGather 283 285 278 Offset 287 + Store 280(txval311) 288 + 290: 57 Load 59(g_tTex2du4) + 291: 14 Load 16(g_sSamp) + 292: 62 SampledImage 290 291 + 293: 30(ptr) AccessChain 28 29 + 294: 20(fvec2) Load 293 + 295: 34(ptr) AccessChain 28 33 + 296: 23(ivec2) Load 295 + 297: 54(ivec4) ImageGather 292 294 278 Offset 296 + Store 289(txval321) 297 + 299: 10 Load 12(g_tTex2df4) + 300: 14 Load 16(g_sSamp) + 301: 18 SampledImage 299 300 + 302: 30(ptr) AccessChain 28 29 + 303: 20(fvec2) Load 302 + 304: 34(ptr) AccessChain 28 33 + 305: 23(ivec2) Load 304 + 306: 34(ptr) AccessChain 28 33 + 307: 23(ivec2) Load 306 + 308: 34(ptr) AccessChain 28 33 + 309: 23(ivec2) Load 308 + 310: 34(ptr) AccessChain 28 33 + 311: 23(ivec2) Load 310 + 312: 84 CompositeConstruct 305 307 309 311 + 313: 7(fvec4) ImageGather 301 303 278 ConstOffsets 312 + Store 298(txval304) 313 + 315: 41 Load 43(g_tTex2di4) + 316: 14 Load 16(g_sSamp) + 317: 46 SampledImage 315 316 + 318: 30(ptr) AccessChain 28 29 + 319: 20(fvec2) Load 318 + 320: 34(ptr) AccessChain 28 33 + 321: 23(ivec2) Load 320 + 322: 34(ptr) AccessChain 28 33 + 323: 23(ivec2) Load 322 + 324: 34(ptr) AccessChain 28 33 + 325: 23(ivec2) Load 324 + 326: 34(ptr) AccessChain 28 33 + 327: 23(ivec2) Load 326 + 328: 84 CompositeConstruct 321 323 325 327 + 329: 25(ivec4) ImageGather 317 319 278 ConstOffsets 328 + Store 314(txval314) 329 + 331: 57 Load 59(g_tTex2du4) + 332: 14 Load 16(g_sSamp) + 333: 62 SampledImage 331 332 + 334: 30(ptr) AccessChain 28 29 + 335: 20(fvec2) Load 334 + 336: 34(ptr) AccessChain 28 33 + 337: 23(ivec2) Load 336 + 338: 34(ptr) AccessChain 28 33 + 339: 23(ivec2) Load 338 + 340: 34(ptr) AccessChain 28 33 + 341: 23(ivec2) Load 340 + 342: 34(ptr) AccessChain 28 33 + 343: 23(ivec2) Load 342 + 344: 84 CompositeConstruct 337 339 341 343 + 345: 54(ivec4) ImageGather 333 335 278 ConstOffsets 344 + Store 330(txval324) 345 + 351: 8(ptr) AccessChain 348(psout) 37 + Store 351 350 + 353: 352(ptr) AccessChain 348(psout) 29 + Store 353 349 + 356: 8(ptr) AccessChain 348(psout) 37 + 357: 7(fvec4) Load 356 + Store 355(Color) 357 + 360: 352(ptr) AccessChain 348(psout) 29 + 361: 6(float) Load 360 + Store 359(Depth) 361 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out new file mode 100644 index 00000000..f565379f --- /dev/null +++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out @@ -0,0 +1,1739 @@ +hlsl.gatherRGBA.offsetarray.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:33 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:33 Function Parameters: +0:? Sequence +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of float) +0:40 'txval001' (temp 4-component vector of float) +0:40 textureGatherOffset (global 4-component vector of float) +0:40 Construct combined texture-sampler (temp sampler2DArray) +0:40 'g_tTex2df4a' (uniform texture2DArray) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:40 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:40 Constant: +0:40 2 (const uint) +0:40 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:40 Constant: +0:40 5 (const uint) +0:40 Constant: +0:40 0 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of int) +0:41 'txval011' (temp 4-component vector of int) +0:41 textureGatherOffset (global 4-component vector of int) +0:41 Construct combined texture-sampler (temp isampler2DArray) +0:41 'g_tTex2di4a' (uniform itexture2DArray) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:41 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:41 Constant: +0:41 2 (const uint) +0:41 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:41 Constant: +0:41 5 (const uint) +0:41 Constant: +0:41 0 (const int) +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of uint) +0:42 'txval021' (temp 4-component vector of uint) +0:42 textureGatherOffset (global 4-component vector of uint) +0:42 Construct combined texture-sampler (temp usampler2DArray) +0:42 'g_tTex2du4a' (uniform utexture2DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 2 (const uint) +0:42 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 5 (const uint) +0:42 Constant: +0:42 0 (const int) +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of float) +0:44 'txval004' (temp 4-component vector of float) +0:44 textureGatherOffsets (global 4-component vector of float) +0:44 Construct combined texture-sampler (temp sampler2DArray) +0:44 'g_tTex2df4a' (uniform texture2DArray) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 2 (const uint) +0:44 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 Constant: +0:44 0 (const int) +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of int) +0:45 'txval014' (temp 4-component vector of int) +0:45 textureGatherOffsets (global 4-component vector of int) +0:45 Construct combined texture-sampler (temp isampler2DArray) +0:45 'g_tTex2di4a' (uniform itexture2DArray) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:45 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 2 (const uint) +0:45 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 Constant: +0:45 0 (const int) +0:46 Sequence +0:46 move second child to first child (temp 4-component vector of uint) +0:46 'txval024' (temp 4-component vector of uint) +0:46 textureGatherOffsets (global 4-component vector of uint) +0:46 Construct combined texture-sampler (temp usampler2DArray) +0:46 'g_tTex2du4a' (uniform utexture2DArray) +0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:46 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 2 (const uint) +0:46 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 Constant: +0:46 0 (const int) +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of float) +0:56 'txval101' (temp 4-component vector of float) +0:56 textureGatherOffset (global 4-component vector of float) +0:56 Construct combined texture-sampler (temp sampler2DArray) +0:56 'g_tTex2df4a' (uniform texture2DArray) +0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:56 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 5 (const uint) +0:56 Constant: +0:56 1 (const int) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of int) +0:57 'txval111' (temp 4-component vector of int) +0:57 textureGatherOffset (global 4-component vector of int) +0:57 Construct combined texture-sampler (temp isampler2DArray) +0:57 'g_tTex2di4a' (uniform itexture2DArray) +0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) +0:57 Constant: +0:57 1 (const int) +0:58 Sequence +0:58 move second child to first child (temp 4-component vector of uint) +0:58 'txval121' (temp 4-component vector of uint) +0:58 textureGatherOffset (global 4-component vector of uint) +0:58 Construct combined texture-sampler (temp usampler2DArray) +0:58 'g_tTex2du4a' (uniform utexture2DArray) +0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) +0:58 Constant: +0:58 1 (const int) +0:60 Sequence +0:60 move second child to first child (temp 4-component vector of float) +0:60 'txval104' (temp 4-component vector of float) +0:60 textureGatherOffsets (global 4-component vector of float) +0:60 Construct combined texture-sampler (temp sampler2DArray) +0:60 'g_tTex2df4a' (uniform texture2DArray) +0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:60 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 2 (const uint) +0:60 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 Constant: +0:60 1 (const int) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of int) +0:61 'txval114' (temp 4-component vector of int) +0:61 textureGatherOffsets (global 4-component vector of int) +0:61 Construct combined texture-sampler (temp isampler2DArray) +0:61 'g_tTex2di4a' (uniform itexture2DArray) +0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 2 (const uint) +0:61 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 Constant: +0:61 1 (const int) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of uint) +0:62 'txval124' (temp 4-component vector of uint) +0:62 textureGatherOffsets (global 4-component vector of uint) +0:62 Construct combined texture-sampler (temp usampler2DArray) +0:62 'g_tTex2du4a' (uniform utexture2DArray) +0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 2 (const uint) +0:62 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 Constant: +0:62 1 (const int) +0:72 Sequence +0:72 move second child to first child (temp 4-component vector of float) +0:72 'txval201' (temp 4-component vector of float) +0:72 textureGatherOffset (global 4-component vector of float) +0:72 Construct combined texture-sampler (temp sampler2DArray) +0:72 'g_tTex2df4a' (uniform texture2DArray) +0:72 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:72 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:72 Constant: +0:72 2 (const uint) +0:72 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:72 Constant: +0:72 5 (const uint) +0:72 Constant: +0:72 2 (const int) +0:73 Sequence +0:73 move second child to first child (temp 4-component vector of int) +0:73 'txval211' (temp 4-component vector of int) +0:73 textureGatherOffset (global 4-component vector of int) +0:73 Construct combined texture-sampler (temp isampler2DArray) +0:73 'g_tTex2di4a' (uniform itexture2DArray) +0:73 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:73 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:73 Constant: +0:73 2 (const uint) +0:73 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:73 Constant: +0:73 5 (const uint) +0:73 Constant: +0:73 2 (const int) +0:74 Sequence +0:74 move second child to first child (temp 4-component vector of uint) +0:74 'txval221' (temp 4-component vector of uint) +0:74 textureGatherOffset (global 4-component vector of uint) +0:74 Construct combined texture-sampler (temp usampler2DArray) +0:74 'g_tTex2du4a' (uniform utexture2DArray) +0:74 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:74 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:74 Constant: +0:74 2 (const uint) +0:74 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:74 Constant: +0:74 5 (const uint) +0:74 Constant: +0:74 2 (const int) +0:76 Sequence +0:76 move second child to first child (temp 4-component vector of float) +0:76 'txval204' (temp 4-component vector of float) +0:76 textureGatherOffsets (global 4-component vector of float) +0:76 Construct combined texture-sampler (temp sampler2DArray) +0:76 'g_tTex2df4a' (uniform texture2DArray) +0:76 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:76 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 2 (const uint) +0:76 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 Constant: +0:76 2 (const int) +0:77 Sequence +0:77 move second child to first child (temp 4-component vector of int) +0:77 'txval214' (temp 4-component vector of int) +0:77 textureGatherOffsets (global 4-component vector of int) +0:77 Construct combined texture-sampler (temp isampler2DArray) +0:77 'g_tTex2di4a' (uniform itexture2DArray) +0:77 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:77 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 2 (const uint) +0:77 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 Constant: +0:77 2 (const int) +0:78 Sequence +0:78 move second child to first child (temp 4-component vector of uint) +0:78 'txval224' (temp 4-component vector of uint) +0:78 textureGatherOffsets (global 4-component vector of uint) +0:78 Construct combined texture-sampler (temp usampler2DArray) +0:78 'g_tTex2du4a' (uniform utexture2DArray) +0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:78 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 2 (const uint) +0:78 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 Constant: +0:78 2 (const int) +0:88 Sequence +0:88 move second child to first child (temp 4-component vector of float) +0:88 'txval301' (temp 4-component vector of float) +0:88 textureGatherOffset (global 4-component vector of float) +0:88 Construct combined texture-sampler (temp sampler2DArray) +0:88 'g_tTex2df4a' (uniform texture2DArray) +0:88 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:88 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 Constant: +0:88 2 (const uint) +0:88 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 Constant: +0:88 5 (const uint) +0:88 Constant: +0:88 3 (const int) +0:89 Sequence +0:89 move second child to first child (temp 4-component vector of int) +0:89 'txval311' (temp 4-component vector of int) +0:89 textureGatherOffset (global 4-component vector of int) +0:89 Construct combined texture-sampler (temp isampler2DArray) +0:89 'g_tTex2di4a' (uniform itexture2DArray) +0:89 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:89 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:89 Constant: +0:89 2 (const uint) +0:89 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:89 Constant: +0:89 5 (const uint) +0:89 Constant: +0:89 3 (const int) +0:90 Sequence +0:90 move second child to first child (temp 4-component vector of uint) +0:90 'txval321' (temp 4-component vector of uint) +0:90 textureGatherOffset (global 4-component vector of uint) +0:90 Construct combined texture-sampler (temp usampler2DArray) +0:90 'g_tTex2du4a' (uniform utexture2DArray) +0:90 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:90 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:90 Constant: +0:90 2 (const uint) +0:90 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:90 Constant: +0:90 5 (const uint) +0:90 Constant: +0:90 3 (const int) +0:92 Sequence +0:92 move second child to first child (temp 4-component vector of float) +0:92 'txval304' (temp 4-component vector of float) +0:92 textureGatherOffsets (global 4-component vector of float) +0:92 Construct combined texture-sampler (temp sampler2DArray) +0:92 'g_tTex2df4a' (uniform texture2DArray) +0:92 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:92 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 2 (const uint) +0:92 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 Constant: +0:92 3 (const int) +0:93 Sequence +0:93 move second child to first child (temp 4-component vector of int) +0:93 'txval314' (temp 4-component vector of int) +0:93 textureGatherOffsets (global 4-component vector of int) +0:93 Construct combined texture-sampler (temp isampler2DArray) +0:93 'g_tTex2di4a' (uniform itexture2DArray) +0:93 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:93 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 2 (const uint) +0:93 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 Constant: +0:93 3 (const int) +0:94 Sequence +0:94 move second child to first child (temp 4-component vector of uint) +0:94 'txval324' (temp 4-component vector of uint) +0:94 textureGatherOffsets (global 4-component vector of uint) +0:94 Construct combined texture-sampler (temp usampler2DArray) +0:94 'g_tTex2du4a' (uniform utexture2DArray) +0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:94 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 2 (const uint) +0:94 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 Constant: +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 Depth}) +0:106 Constant: +0:106 0 (const int) +0:106 Constant: +0:106 1.000000 +0:106 1.000000 +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) +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 Sequence +0:109 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) +0:? 'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:33 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:33 Function Parameters: +0:? Sequence +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of float) +0:40 'txval001' (temp 4-component vector of float) +0:40 textureGatherOffset (global 4-component vector of float) +0:40 Construct combined texture-sampler (temp sampler2DArray) +0:40 'g_tTex2df4a' (uniform texture2DArray) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:40 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:40 Constant: +0:40 2 (const uint) +0:40 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:40 Constant: +0:40 5 (const uint) +0:40 Constant: +0:40 0 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of int) +0:41 'txval011' (temp 4-component vector of int) +0:41 textureGatherOffset (global 4-component vector of int) +0:41 Construct combined texture-sampler (temp isampler2DArray) +0:41 'g_tTex2di4a' (uniform itexture2DArray) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:41 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:41 Constant: +0:41 2 (const uint) +0:41 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:41 Constant: +0:41 5 (const uint) +0:41 Constant: +0:41 0 (const int) +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of uint) +0:42 'txval021' (temp 4-component vector of uint) +0:42 textureGatherOffset (global 4-component vector of uint) +0:42 Construct combined texture-sampler (temp usampler2DArray) +0:42 'g_tTex2du4a' (uniform utexture2DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 2 (const uint) +0:42 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 5 (const uint) +0:42 Constant: +0:42 0 (const int) +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of float) +0:44 'txval004' (temp 4-component vector of float) +0:44 textureGatherOffsets (global 4-component vector of float) +0:44 Construct combined texture-sampler (temp sampler2DArray) +0:44 'g_tTex2df4a' (uniform texture2DArray) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 2 (const uint) +0:44 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 5 (const uint) +0:44 Constant: +0:44 0 (const int) +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of int) +0:45 'txval014' (temp 4-component vector of int) +0:45 textureGatherOffsets (global 4-component vector of int) +0:45 Construct combined texture-sampler (temp isampler2DArray) +0:45 'g_tTex2di4a' (uniform itexture2DArray) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:45 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 2 (const uint) +0:45 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 5 (const uint) +0:45 Constant: +0:45 0 (const int) +0:46 Sequence +0:46 move second child to first child (temp 4-component vector of uint) +0:46 'txval024' (temp 4-component vector of uint) +0:46 textureGatherOffsets (global 4-component vector of uint) +0:46 Construct combined texture-sampler (temp usampler2DArray) +0:46 'g_tTex2du4a' (uniform utexture2DArray) +0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:46 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 2 (const uint) +0:46 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 5 (const uint) +0:46 Constant: +0:46 0 (const int) +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of float) +0:56 'txval101' (temp 4-component vector of float) +0:56 textureGatherOffset (global 4-component vector of float) +0:56 Construct combined texture-sampler (temp sampler2DArray) +0:56 'g_tTex2df4a' (uniform texture2DArray) +0:56 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:56 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 5 (const uint) +0:56 Constant: +0:56 1 (const int) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of int) +0:57 'txval111' (temp 4-component vector of int) +0:57 textureGatherOffset (global 4-component vector of int) +0:57 Construct combined texture-sampler (temp isampler2DArray) +0:57 'g_tTex2di4a' (uniform itexture2DArray) +0:57 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) +0:57 Constant: +0:57 1 (const int) +0:58 Sequence +0:58 move second child to first child (temp 4-component vector of uint) +0:58 'txval121' (temp 4-component vector of uint) +0:58 textureGatherOffset (global 4-component vector of uint) +0:58 Construct combined texture-sampler (temp usampler2DArray) +0:58 'g_tTex2du4a' (uniform utexture2DArray) +0:58 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) +0:58 Constant: +0:58 1 (const int) +0:60 Sequence +0:60 move second child to first child (temp 4-component vector of float) +0:60 'txval104' (temp 4-component vector of float) +0:60 textureGatherOffsets (global 4-component vector of float) +0:60 Construct combined texture-sampler (temp sampler2DArray) +0:60 'g_tTex2df4a' (uniform texture2DArray) +0:60 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:60 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 2 (const uint) +0:60 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:60 Constant: +0:60 5 (const uint) +0:60 Constant: +0:60 1 (const int) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of int) +0:61 'txval114' (temp 4-component vector of int) +0:61 textureGatherOffsets (global 4-component vector of int) +0:61 Construct combined texture-sampler (temp isampler2DArray) +0:61 'g_tTex2di4a' (uniform itexture2DArray) +0:61 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 2 (const uint) +0:61 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 5 (const uint) +0:61 Constant: +0:61 1 (const int) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of uint) +0:62 'txval124' (temp 4-component vector of uint) +0:62 textureGatherOffsets (global 4-component vector of uint) +0:62 Construct combined texture-sampler (temp usampler2DArray) +0:62 'g_tTex2du4a' (uniform utexture2DArray) +0:62 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 2 (const uint) +0:62 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 5 (const uint) +0:62 Constant: +0:62 1 (const int) +0:72 Sequence +0:72 move second child to first child (temp 4-component vector of float) +0:72 'txval201' (temp 4-component vector of float) +0:72 textureGatherOffset (global 4-component vector of float) +0:72 Construct combined texture-sampler (temp sampler2DArray) +0:72 'g_tTex2df4a' (uniform texture2DArray) +0:72 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:72 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:72 Constant: +0:72 2 (const uint) +0:72 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:72 Constant: +0:72 5 (const uint) +0:72 Constant: +0:72 2 (const int) +0:73 Sequence +0:73 move second child to first child (temp 4-component vector of int) +0:73 'txval211' (temp 4-component vector of int) +0:73 textureGatherOffset (global 4-component vector of int) +0:73 Construct combined texture-sampler (temp isampler2DArray) +0:73 'g_tTex2di4a' (uniform itexture2DArray) +0:73 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:73 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:73 Constant: +0:73 2 (const uint) +0:73 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:73 Constant: +0:73 5 (const uint) +0:73 Constant: +0:73 2 (const int) +0:74 Sequence +0:74 move second child to first child (temp 4-component vector of uint) +0:74 'txval221' (temp 4-component vector of uint) +0:74 textureGatherOffset (global 4-component vector of uint) +0:74 Construct combined texture-sampler (temp usampler2DArray) +0:74 'g_tTex2du4a' (uniform utexture2DArray) +0:74 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:74 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:74 Constant: +0:74 2 (const uint) +0:74 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:74 Constant: +0:74 5 (const uint) +0:74 Constant: +0:74 2 (const int) +0:76 Sequence +0:76 move second child to first child (temp 4-component vector of float) +0:76 'txval204' (temp 4-component vector of float) +0:76 textureGatherOffsets (global 4-component vector of float) +0:76 Construct combined texture-sampler (temp sampler2DArray) +0:76 'g_tTex2df4a' (uniform texture2DArray) +0:76 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:76 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 2 (const uint) +0:76 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:76 Constant: +0:76 5 (const uint) +0:76 Constant: +0:76 2 (const int) +0:77 Sequence +0:77 move second child to first child (temp 4-component vector of int) +0:77 'txval214' (temp 4-component vector of int) +0:77 textureGatherOffsets (global 4-component vector of int) +0:77 Construct combined texture-sampler (temp isampler2DArray) +0:77 'g_tTex2di4a' (uniform itexture2DArray) +0:77 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:77 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 2 (const uint) +0:77 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:77 Constant: +0:77 5 (const uint) +0:77 Constant: +0:77 2 (const int) +0:78 Sequence +0:78 move second child to first child (temp 4-component vector of uint) +0:78 'txval224' (temp 4-component vector of uint) +0:78 textureGatherOffsets (global 4-component vector of uint) +0:78 Construct combined texture-sampler (temp usampler2DArray) +0:78 'g_tTex2du4a' (uniform utexture2DArray) +0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:78 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 2 (const uint) +0:78 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:78 Constant: +0:78 5 (const uint) +0:78 Constant: +0:78 2 (const int) +0:88 Sequence +0:88 move second child to first child (temp 4-component vector of float) +0:88 'txval301' (temp 4-component vector of float) +0:88 textureGatherOffset (global 4-component vector of float) +0:88 Construct combined texture-sampler (temp sampler2DArray) +0:88 'g_tTex2df4a' (uniform texture2DArray) +0:88 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:88 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 Constant: +0:88 2 (const uint) +0:88 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:88 Constant: +0:88 5 (const uint) +0:88 Constant: +0:88 3 (const int) +0:89 Sequence +0:89 move second child to first child (temp 4-component vector of int) +0:89 'txval311' (temp 4-component vector of int) +0:89 textureGatherOffset (global 4-component vector of int) +0:89 Construct combined texture-sampler (temp isampler2DArray) +0:89 'g_tTex2di4a' (uniform itexture2DArray) +0:89 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:89 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:89 Constant: +0:89 2 (const uint) +0:89 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:89 Constant: +0:89 5 (const uint) +0:89 Constant: +0:89 3 (const int) +0:90 Sequence +0:90 move second child to first child (temp 4-component vector of uint) +0:90 'txval321' (temp 4-component vector of uint) +0:90 textureGatherOffset (global 4-component vector of uint) +0:90 Construct combined texture-sampler (temp usampler2DArray) +0:90 'g_tTex2du4a' (uniform utexture2DArray) +0:90 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:90 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:90 Constant: +0:90 2 (const uint) +0:90 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:90 Constant: +0:90 5 (const uint) +0:90 Constant: +0:90 3 (const int) +0:92 Sequence +0:92 move second child to first child (temp 4-component vector of float) +0:92 'txval304' (temp 4-component vector of float) +0:92 textureGatherOffsets (global 4-component vector of float) +0:92 Construct combined texture-sampler (temp sampler2DArray) +0:92 'g_tTex2df4a' (uniform texture2DArray) +0:92 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:92 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 2 (const uint) +0:92 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:92 Constant: +0:92 5 (const uint) +0:92 Constant: +0:92 3 (const int) +0:93 Sequence +0:93 move second child to first child (temp 4-component vector of int) +0:93 'txval314' (temp 4-component vector of int) +0:93 textureGatherOffsets (global 4-component vector of int) +0:93 Construct combined texture-sampler (temp isampler2DArray) +0:93 'g_tTex2di4a' (uniform itexture2DArray) +0:93 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:93 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 2 (const uint) +0:93 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:93 Constant: +0:93 5 (const uint) +0:93 Constant: +0:93 3 (const int) +0:94 Sequence +0:94 move second child to first child (temp 4-component vector of uint) +0:94 'txval324' (temp 4-component vector of uint) +0:94 textureGatherOffsets (global 4-component vector of uint) +0:94 Construct combined texture-sampler (temp usampler2DArray) +0:94 'g_tTex2du4a' (uniform utexture2DArray) +0:94 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:94 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of float) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 2 (const uint) +0:94 Construct ivec2 (temp 4-element array of 2-component vector of int) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:94 Constant: +0:94 5 (const uint) +0:94 Constant: +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 Depth}) +0:106 Constant: +0:106 0 (const int) +0:106 Constant: +0:106 1.000000 +0:106 1.000000 +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) +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 Sequence +0:109 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) +0:? 'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 382 + + Capability Shader + Capability ImageGatherExtended + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 355 359 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval001" + Name 12 "g_tTex2df4a" + Name 16 "g_sSamp" + Name 26 "$Global" + MemberName 26($Global) 0 "c1" + MemberName 26($Global) 1 "c2" + MemberName 26($Global) 2 "c3" + MemberName 26($Global) 3 "c4" + MemberName 26($Global) 4 "o1" + MemberName 26($Global) 5 "o2" + MemberName 26($Global) 6 "o3" + MemberName 26($Global) 7 "o4" + Name 28 "" + Name 40 "txval011" + Name 43 "g_tTex2di4a" + Name 56 "txval021" + Name 59 "g_tTex2du4a" + Name 69 "txval004" + Name 87 "txval014" + Name 103 "txval024" + Name 119 "txval101" + Name 129 "txval111" + Name 138 "txval121" + Name 147 "txval104" + Name 163 "txval114" + Name 179 "txval124" + Name 195 "txval201" + Name 204 "txval211" + Name 213 "txval221" + Name 222 "txval204" + Name 238 "txval214" + Name 254 "txval224" + Name 270 "txval301" + Name 280 "txval311" + Name 289 "txval321" + Name 298 "txval304" + Name 314 "txval314" + Name 330 "txval324" + Name 346 "PS_OUTPUT" + MemberName 346(PS_OUTPUT) 0 "Color" + MemberName 346(PS_OUTPUT) 1 "Depth" + Name 348 "psout" + Name 355 "Color" + Name 359 "Depth" + Name 363 "g_sSamp2d" + Name 366 "g_tTex1df4a" + Name 369 "g_tTex1di4a" + Name 372 "g_tTex1du4a" + Name 375 "g_tTexcdf4a" + Name 378 "g_tTexcdi4a" + Name 381 "g_tTexcdu4a" + Decorate 12(g_tTex2df4a) DescriptorSet 0 + Decorate 16(g_sSamp) DescriptorSet 0 + Decorate 16(g_sSamp) Binding 0 + MemberDecorate 26($Global) 0 Offset 0 + MemberDecorate 26($Global) 1 Offset 8 + MemberDecorate 26($Global) 2 Offset 16 + MemberDecorate 26($Global) 3 Offset 32 + MemberDecorate 26($Global) 4 Offset 48 + MemberDecorate 26($Global) 5 Offset 56 + MemberDecorate 26($Global) 6 Offset 64 + MemberDecorate 26($Global) 7 Offset 80 + Decorate 26($Global) Block + Decorate 28 DescriptorSet 0 + Decorate 43(g_tTex2di4a) DescriptorSet 0 + Decorate 59(g_tTex2du4a) DescriptorSet 0 + Decorate 355(Color) Location 0 + Decorate 359(Depth) BuiltIn FragDepth + Decorate 363(g_sSamp2d) DescriptorSet 0 + Decorate 366(g_tTex1df4a) DescriptorSet 0 + Decorate 366(g_tTex1df4a) Binding 0 + Decorate 369(g_tTex1di4a) DescriptorSet 0 + Decorate 372(g_tTex1du4a) DescriptorSet 0 + Decorate 375(g_tTexcdf4a) DescriptorSet 0 + Decorate 378(g_tTexcdi4a) DescriptorSet 0 + Decorate 381(g_tTexcdu4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex2df4a): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: TypeVector 6(float) 3 + 22: TypeInt 32 1 + 23: TypeVector 22(int) 2 + 24: TypeVector 22(int) 3 + 25: TypeVector 22(int) 4 + 26($Global): TypeStruct 6(float) 20(fvec2) 21(fvec3) 7(fvec4) 22(int) 23(ivec2) 24(ivec3) 25(ivec4) + 27: TypePointer Uniform 26($Global) + 28: 27(ptr) Variable Uniform + 29: 22(int) Constant 2 + 30: TypePointer Uniform 21(fvec3) + 33: 22(int) Constant 5 + 34: TypePointer Uniform 23(ivec2) + 37: 22(int) Constant 0 + 39: TypePointer Function 25(ivec4) + 41: TypeImage 22(int) 2D array sampled format:Unknown + 42: TypePointer UniformConstant 41 + 43(g_tTex2di4a): 42(ptr) Variable UniformConstant + 46: TypeSampledImage 41 + 53: TypeInt 32 0 + 54: TypeVector 53(int) 4 + 55: TypePointer Function 54(ivec4) + 57: TypeImage 53(int) 2D array sampled format:Unknown + 58: TypePointer UniformConstant 57 + 59(g_tTex2du4a): 58(ptr) Variable UniformConstant + 62: TypeSampledImage 57 + 83: 53(int) Constant 4 + 84: TypeArray 23(ivec2) 83 + 127: 22(int) Constant 1 + 278: 22(int) Constant 3 + 346(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 347: TypePointer Function 346(PS_OUTPUT) + 349: 6(float) Constant 1065353216 + 350: 7(fvec4) ConstantComposite 349 349 349 349 + 352: TypePointer Function 6(float) + 354: TypePointer Output 7(fvec4) + 355(Color): 354(ptr) Variable Output + 358: TypePointer Output 6(float) + 359(Depth): 358(ptr) Variable Output + 363(g_sSamp2d): 15(ptr) Variable UniformConstant + 364: TypeImage 6(float) 1D array sampled format:Unknown + 365: TypePointer UniformConstant 364 +366(g_tTex1df4a): 365(ptr) Variable UniformConstant + 367: TypeImage 22(int) 1D array sampled format:Unknown + 368: TypePointer UniformConstant 367 +369(g_tTex1di4a): 368(ptr) Variable UniformConstant + 370: TypeImage 53(int) 1D array sampled format:Unknown + 371: TypePointer UniformConstant 370 +372(g_tTex1du4a): 371(ptr) Variable UniformConstant + 373: TypeImage 6(float) Cube array sampled format:Unknown + 374: TypePointer UniformConstant 373 +375(g_tTexcdf4a): 374(ptr) Variable UniformConstant + 376: TypeImage 22(int) Cube array sampled format:Unknown + 377: TypePointer UniformConstant 376 +378(g_tTexcdi4a): 377(ptr) Variable UniformConstant + 379: TypeImage 53(int) Cube array sampled format:Unknown + 380: TypePointer UniformConstant 379 +381(g_tTexcdu4a): 380(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(txval001): 8(ptr) Variable Function + 40(txval011): 39(ptr) Variable Function + 56(txval021): 55(ptr) Variable Function + 69(txval004): 8(ptr) Variable Function + 87(txval014): 39(ptr) Variable Function + 103(txval024): 55(ptr) Variable Function + 119(txval101): 8(ptr) Variable Function + 129(txval111): 39(ptr) Variable Function + 138(txval121): 55(ptr) Variable Function + 147(txval104): 8(ptr) Variable Function + 163(txval114): 39(ptr) Variable Function + 179(txval124): 55(ptr) Variable Function + 195(txval201): 8(ptr) Variable Function + 204(txval211): 39(ptr) Variable Function + 213(txval221): 55(ptr) Variable Function + 222(txval204): 8(ptr) Variable Function + 238(txval214): 39(ptr) Variable Function + 254(txval224): 55(ptr) Variable Function + 270(txval301): 8(ptr) Variable Function + 280(txval311): 39(ptr) Variable Function + 289(txval321): 55(ptr) Variable Function + 298(txval304): 8(ptr) Variable Function + 314(txval314): 39(ptr) Variable Function + 330(txval324): 55(ptr) Variable Function + 348(psout): 347(ptr) Variable Function + 13: 10 Load 12(g_tTex2df4a) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 31: 30(ptr) AccessChain 28 29 + 32: 21(fvec3) Load 31 + 35: 34(ptr) AccessChain 28 33 + 36: 23(ivec2) Load 35 + 38: 7(fvec4) ImageGather 19 32 37 Offset 36 + Store 9(txval001) 38 + 44: 41 Load 43(g_tTex2di4a) + 45: 14 Load 16(g_sSamp) + 47: 46 SampledImage 44 45 + 48: 30(ptr) AccessChain 28 29 + 49: 21(fvec3) Load 48 + 50: 34(ptr) AccessChain 28 33 + 51: 23(ivec2) Load 50 + 52: 25(ivec4) ImageGather 47 49 37 Offset 51 + Store 40(txval011) 52 + 60: 57 Load 59(g_tTex2du4a) + 61: 14 Load 16(g_sSamp) + 63: 62 SampledImage 60 61 + 64: 30(ptr) AccessChain 28 29 + 65: 21(fvec3) Load 64 + 66: 34(ptr) AccessChain 28 33 + 67: 23(ivec2) Load 66 + 68: 54(ivec4) ImageGather 63 65 37 Offset 67 + Store 56(txval021) 68 + 70: 10 Load 12(g_tTex2df4a) + 71: 14 Load 16(g_sSamp) + 72: 18 SampledImage 70 71 + 73: 30(ptr) AccessChain 28 29 + 74: 21(fvec3) Load 73 + 75: 34(ptr) AccessChain 28 33 + 76: 23(ivec2) Load 75 + 77: 34(ptr) AccessChain 28 33 + 78: 23(ivec2) Load 77 + 79: 34(ptr) AccessChain 28 33 + 80: 23(ivec2) Load 79 + 81: 34(ptr) AccessChain 28 33 + 82: 23(ivec2) Load 81 + 85: 84 CompositeConstruct 76 78 80 82 + 86: 7(fvec4) ImageGather 72 74 37 ConstOffsets 85 + Store 69(txval004) 86 + 88: 41 Load 43(g_tTex2di4a) + 89: 14 Load 16(g_sSamp) + 90: 46 SampledImage 88 89 + 91: 30(ptr) AccessChain 28 29 + 92: 21(fvec3) Load 91 + 93: 34(ptr) AccessChain 28 33 + 94: 23(ivec2) Load 93 + 95: 34(ptr) AccessChain 28 33 + 96: 23(ivec2) Load 95 + 97: 34(ptr) AccessChain 28 33 + 98: 23(ivec2) Load 97 + 99: 34(ptr) AccessChain 28 33 + 100: 23(ivec2) Load 99 + 101: 84 CompositeConstruct 94 96 98 100 + 102: 25(ivec4) ImageGather 90 92 37 ConstOffsets 101 + Store 87(txval014) 102 + 104: 57 Load 59(g_tTex2du4a) + 105: 14 Load 16(g_sSamp) + 106: 62 SampledImage 104 105 + 107: 30(ptr) AccessChain 28 29 + 108: 21(fvec3) Load 107 + 109: 34(ptr) AccessChain 28 33 + 110: 23(ivec2) Load 109 + 111: 34(ptr) AccessChain 28 33 + 112: 23(ivec2) Load 111 + 113: 34(ptr) AccessChain 28 33 + 114: 23(ivec2) Load 113 + 115: 34(ptr) AccessChain 28 33 + 116: 23(ivec2) Load 115 + 117: 84 CompositeConstruct 110 112 114 116 + 118: 54(ivec4) ImageGather 106 108 37 ConstOffsets 117 + Store 103(txval024) 118 + 120: 10 Load 12(g_tTex2df4a) + 121: 14 Load 16(g_sSamp) + 122: 18 SampledImage 120 121 + 123: 30(ptr) AccessChain 28 29 + 124: 21(fvec3) Load 123 + 125: 34(ptr) AccessChain 28 33 + 126: 23(ivec2) Load 125 + 128: 7(fvec4) ImageGather 122 124 127 Offset 126 + Store 119(txval101) 128 + 130: 41 Load 43(g_tTex2di4a) + 131: 14 Load 16(g_sSamp) + 132: 46 SampledImage 130 131 + 133: 30(ptr) AccessChain 28 29 + 134: 21(fvec3) Load 133 + 135: 34(ptr) AccessChain 28 33 + 136: 23(ivec2) Load 135 + 137: 25(ivec4) ImageGather 132 134 127 Offset 136 + Store 129(txval111) 137 + 139: 57 Load 59(g_tTex2du4a) + 140: 14 Load 16(g_sSamp) + 141: 62 SampledImage 139 140 + 142: 30(ptr) AccessChain 28 29 + 143: 21(fvec3) Load 142 + 144: 34(ptr) AccessChain 28 33 + 145: 23(ivec2) Load 144 + 146: 54(ivec4) ImageGather 141 143 127 Offset 145 + Store 138(txval121) 146 + 148: 10 Load 12(g_tTex2df4a) + 149: 14 Load 16(g_sSamp) + 150: 18 SampledImage 148 149 + 151: 30(ptr) AccessChain 28 29 + 152: 21(fvec3) Load 151 + 153: 34(ptr) AccessChain 28 33 + 154: 23(ivec2) Load 153 + 155: 34(ptr) AccessChain 28 33 + 156: 23(ivec2) Load 155 + 157: 34(ptr) AccessChain 28 33 + 158: 23(ivec2) Load 157 + 159: 34(ptr) AccessChain 28 33 + 160: 23(ivec2) Load 159 + 161: 84 CompositeConstruct 154 156 158 160 + 162: 7(fvec4) ImageGather 150 152 127 ConstOffsets 161 + Store 147(txval104) 162 + 164: 41 Load 43(g_tTex2di4a) + 165: 14 Load 16(g_sSamp) + 166: 46 SampledImage 164 165 + 167: 30(ptr) AccessChain 28 29 + 168: 21(fvec3) Load 167 + 169: 34(ptr) AccessChain 28 33 + 170: 23(ivec2) Load 169 + 171: 34(ptr) AccessChain 28 33 + 172: 23(ivec2) Load 171 + 173: 34(ptr) AccessChain 28 33 + 174: 23(ivec2) Load 173 + 175: 34(ptr) AccessChain 28 33 + 176: 23(ivec2) Load 175 + 177: 84 CompositeConstruct 170 172 174 176 + 178: 25(ivec4) ImageGather 166 168 127 ConstOffsets 177 + Store 163(txval114) 178 + 180: 57 Load 59(g_tTex2du4a) + 181: 14 Load 16(g_sSamp) + 182: 62 SampledImage 180 181 + 183: 30(ptr) AccessChain 28 29 + 184: 21(fvec3) Load 183 + 185: 34(ptr) AccessChain 28 33 + 186: 23(ivec2) Load 185 + 187: 34(ptr) AccessChain 28 33 + 188: 23(ivec2) Load 187 + 189: 34(ptr) AccessChain 28 33 + 190: 23(ivec2) Load 189 + 191: 34(ptr) AccessChain 28 33 + 192: 23(ivec2) Load 191 + 193: 84 CompositeConstruct 186 188 190 192 + 194: 54(ivec4) ImageGather 182 184 127 ConstOffsets 193 + Store 179(txval124) 194 + 196: 10 Load 12(g_tTex2df4a) + 197: 14 Load 16(g_sSamp) + 198: 18 SampledImage 196 197 + 199: 30(ptr) AccessChain 28 29 + 200: 21(fvec3) Load 199 + 201: 34(ptr) AccessChain 28 33 + 202: 23(ivec2) Load 201 + 203: 7(fvec4) ImageGather 198 200 29 Offset 202 + Store 195(txval201) 203 + 205: 41 Load 43(g_tTex2di4a) + 206: 14 Load 16(g_sSamp) + 207: 46 SampledImage 205 206 + 208: 30(ptr) AccessChain 28 29 + 209: 21(fvec3) Load 208 + 210: 34(ptr) AccessChain 28 33 + 211: 23(ivec2) Load 210 + 212: 25(ivec4) ImageGather 207 209 29 Offset 211 + Store 204(txval211) 212 + 214: 57 Load 59(g_tTex2du4a) + 215: 14 Load 16(g_sSamp) + 216: 62 SampledImage 214 215 + 217: 30(ptr) AccessChain 28 29 + 218: 21(fvec3) Load 217 + 219: 34(ptr) AccessChain 28 33 + 220: 23(ivec2) Load 219 + 221: 54(ivec4) ImageGather 216 218 29 Offset 220 + Store 213(txval221) 221 + 223: 10 Load 12(g_tTex2df4a) + 224: 14 Load 16(g_sSamp) + 225: 18 SampledImage 223 224 + 226: 30(ptr) AccessChain 28 29 + 227: 21(fvec3) Load 226 + 228: 34(ptr) AccessChain 28 33 + 229: 23(ivec2) Load 228 + 230: 34(ptr) AccessChain 28 33 + 231: 23(ivec2) Load 230 + 232: 34(ptr) AccessChain 28 33 + 233: 23(ivec2) Load 232 + 234: 34(ptr) AccessChain 28 33 + 235: 23(ivec2) Load 234 + 236: 84 CompositeConstruct 229 231 233 235 + 237: 7(fvec4) ImageGather 225 227 29 ConstOffsets 236 + Store 222(txval204) 237 + 239: 41 Load 43(g_tTex2di4a) + 240: 14 Load 16(g_sSamp) + 241: 46 SampledImage 239 240 + 242: 30(ptr) AccessChain 28 29 + 243: 21(fvec3) Load 242 + 244: 34(ptr) AccessChain 28 33 + 245: 23(ivec2) Load 244 + 246: 34(ptr) AccessChain 28 33 + 247: 23(ivec2) Load 246 + 248: 34(ptr) AccessChain 28 33 + 249: 23(ivec2) Load 248 + 250: 34(ptr) AccessChain 28 33 + 251: 23(ivec2) Load 250 + 252: 84 CompositeConstruct 245 247 249 251 + 253: 25(ivec4) ImageGather 241 243 29 ConstOffsets 252 + Store 238(txval214) 253 + 255: 57 Load 59(g_tTex2du4a) + 256: 14 Load 16(g_sSamp) + 257: 62 SampledImage 255 256 + 258: 30(ptr) AccessChain 28 29 + 259: 21(fvec3) Load 258 + 260: 34(ptr) AccessChain 28 33 + 261: 23(ivec2) Load 260 + 262: 34(ptr) AccessChain 28 33 + 263: 23(ivec2) Load 262 + 264: 34(ptr) AccessChain 28 33 + 265: 23(ivec2) Load 264 + 266: 34(ptr) AccessChain 28 33 + 267: 23(ivec2) Load 266 + 268: 84 CompositeConstruct 261 263 265 267 + 269: 54(ivec4) ImageGather 257 259 29 ConstOffsets 268 + Store 254(txval224) 269 + 271: 10 Load 12(g_tTex2df4a) + 272: 14 Load 16(g_sSamp) + 273: 18 SampledImage 271 272 + 274: 30(ptr) AccessChain 28 29 + 275: 21(fvec3) Load 274 + 276: 34(ptr) AccessChain 28 33 + 277: 23(ivec2) Load 276 + 279: 7(fvec4) ImageGather 273 275 278 Offset 277 + Store 270(txval301) 279 + 281: 41 Load 43(g_tTex2di4a) + 282: 14 Load 16(g_sSamp) + 283: 46 SampledImage 281 282 + 284: 30(ptr) AccessChain 28 29 + 285: 21(fvec3) Load 284 + 286: 34(ptr) AccessChain 28 33 + 287: 23(ivec2) Load 286 + 288: 25(ivec4) ImageGather 283 285 278 Offset 287 + Store 280(txval311) 288 + 290: 57 Load 59(g_tTex2du4a) + 291: 14 Load 16(g_sSamp) + 292: 62 SampledImage 290 291 + 293: 30(ptr) AccessChain 28 29 + 294: 21(fvec3) Load 293 + 295: 34(ptr) AccessChain 28 33 + 296: 23(ivec2) Load 295 + 297: 54(ivec4) ImageGather 292 294 278 Offset 296 + Store 289(txval321) 297 + 299: 10 Load 12(g_tTex2df4a) + 300: 14 Load 16(g_sSamp) + 301: 18 SampledImage 299 300 + 302: 30(ptr) AccessChain 28 29 + 303: 21(fvec3) Load 302 + 304: 34(ptr) AccessChain 28 33 + 305: 23(ivec2) Load 304 + 306: 34(ptr) AccessChain 28 33 + 307: 23(ivec2) Load 306 + 308: 34(ptr) AccessChain 28 33 + 309: 23(ivec2) Load 308 + 310: 34(ptr) AccessChain 28 33 + 311: 23(ivec2) Load 310 + 312: 84 CompositeConstruct 305 307 309 311 + 313: 7(fvec4) ImageGather 301 303 278 ConstOffsets 312 + Store 298(txval304) 313 + 315: 41 Load 43(g_tTex2di4a) + 316: 14 Load 16(g_sSamp) + 317: 46 SampledImage 315 316 + 318: 30(ptr) AccessChain 28 29 + 319: 21(fvec3) Load 318 + 320: 34(ptr) AccessChain 28 33 + 321: 23(ivec2) Load 320 + 322: 34(ptr) AccessChain 28 33 + 323: 23(ivec2) Load 322 + 324: 34(ptr) AccessChain 28 33 + 325: 23(ivec2) Load 324 + 326: 34(ptr) AccessChain 28 33 + 327: 23(ivec2) Load 326 + 328: 84 CompositeConstruct 321 323 325 327 + 329: 25(ivec4) ImageGather 317 319 278 ConstOffsets 328 + Store 314(txval314) 329 + 331: 57 Load 59(g_tTex2du4a) + 332: 14 Load 16(g_sSamp) + 333: 62 SampledImage 331 332 + 334: 30(ptr) AccessChain 28 29 + 335: 21(fvec3) Load 334 + 336: 34(ptr) AccessChain 28 33 + 337: 23(ivec2) Load 336 + 338: 34(ptr) AccessChain 28 33 + 339: 23(ivec2) Load 338 + 340: 34(ptr) AccessChain 28 33 + 341: 23(ivec2) Load 340 + 342: 34(ptr) AccessChain 28 33 + 343: 23(ivec2) Load 342 + 344: 84 CompositeConstruct 337 339 341 343 + 345: 54(ivec4) ImageGather 333 335 278 ConstOffsets 344 + Store 330(txval324) 345 + 351: 8(ptr) AccessChain 348(psout) 37 + Store 351 350 + 353: 352(ptr) AccessChain 348(psout) 127 + Store 353 349 + 356: 8(ptr) AccessChain 348(psout) 37 + 357: 7(fvec4) Load 356 + Store 355(Color) 357 + 360: 352(ptr) AccessChain 348(psout) 127 + 361: 6(float) Load 360 + Store 359(Depth) 361 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out new file mode 100644 index 00000000..3a55d682 --- /dev/null +++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out @@ -0,0 +1,3089 @@ +hlsl.getdimensions.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:46 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:46 Function Parameters: +0:? Sequence +0:65 Sequence +0:65 move second child to first child (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:65 textureSize (temp uint) +0:65 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:65 move second child to first child (temp uint) +0:65 'WidthU' (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:66 Sequence +0:66 move second child to first child (temp uint) +0:66 'sizeQueryTemp' (temp uint) +0:66 textureSize (temp uint) +0:66 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:66 Constant: +0:66 6 (const uint) +0:66 move second child to first child (temp uint) +0:66 'WidthU' (temp uint) +0:66 'sizeQueryTemp' (temp uint) +0:66 move second child to first child (temp uint) +0:66 'NumberOfLevelsU' (temp uint) +0:66 textureQueryLevels (temp uint) +0:66 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:69 Sequence +0:69 move second child to first child (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:69 textureSize (temp uint) +0:69 'g_tTex1di4' (uniform itexture1D) +0:69 move second child to first child (temp uint) +0:69 'WidthU' (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:70 Sequence +0:70 move second child to first child (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:70 textureSize (temp uint) +0:70 'g_tTex1di4' (uniform itexture1D) +0:70 Constant: +0:70 6 (const uint) +0:70 move second child to first child (temp uint) +0:70 'WidthU' (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:70 move second child to first child (temp uint) +0:70 'NumberOfLevelsU' (temp uint) +0:70 textureQueryLevels (temp uint) +0:70 'g_tTex1di4' (uniform itexture1D) +0:73 Sequence +0:73 move second child to first child (temp uint) +0:73 'sizeQueryTemp' (temp uint) +0:73 textureSize (temp uint) +0:73 'g_tTex1du4' (uniform utexture1D) +0:73 move second child to first child (temp uint) +0:73 'WidthU' (temp uint) +0:73 'sizeQueryTemp' (temp uint) +0:74 Sequence +0:74 move second child to first child (temp uint) +0:74 'sizeQueryTemp' (temp uint) +0:74 textureSize (temp uint) +0:74 'g_tTex1du4' (uniform utexture1D) +0:74 Constant: +0:74 6 (const uint) +0:74 move second child to first child (temp uint) +0:74 'WidthU' (temp uint) +0:74 'sizeQueryTemp' (temp uint) +0:74 move second child to first child (temp uint) +0:74 'NumberOfLevelsU' (temp uint) +0:74 textureQueryLevels (temp uint) +0:74 'g_tTex1du4' (uniform utexture1D) +0:77 Sequence +0:77 move second child to first child (temp 2-component vector of uint) +0:77 'sizeQueryTemp' (temp 2-component vector of uint) +0:77 textureSize (temp 2-component vector of uint) +0:77 'g_tTex1df4a' (uniform texture1DArray) +0:77 move second child to first child (temp uint) +0:77 'WidthU' (temp uint) +0:77 direct index (temp uint) +0:77 'sizeQueryTemp' (temp 2-component vector of uint) +0:77 Constant: +0:77 0 (const int) +0:77 move second child to first child (temp uint) +0:77 'ElementsU' (temp uint) +0:77 direct index (temp uint) +0:77 'sizeQueryTemp' (temp 2-component vector of uint) +0:77 Constant: +0:77 1 (const int) +0:78 Sequence +0:78 move second child to first child (temp 2-component vector of uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 textureSize (temp 2-component vector of uint) +0:78 'g_tTex1df4a' (uniform texture1DArray) +0:78 Constant: +0:78 6 (const uint) +0:78 move second child to first child (temp uint) +0:78 'WidthU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 0 (const int) +0:78 move second child to first child (temp uint) +0:78 'ElementsU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 1 (const int) +0:78 move second child to first child (temp uint) +0:78 'NumberOfLevelsU' (temp uint) +0:78 textureQueryLevels (temp uint) +0:78 'g_tTex1df4a' (uniform texture1DArray) +0:81 Sequence +0:81 move second child to first child (temp 2-component vector of uint) +0:81 'sizeQueryTemp' (temp 2-component vector of uint) +0:81 textureSize (temp 2-component vector of uint) +0:81 'g_tTex1di4a' (uniform itexture1DArray) +0:81 move second child to first child (temp uint) +0:81 'WidthU' (temp uint) +0:81 direct index (temp uint) +0:81 'sizeQueryTemp' (temp 2-component vector of uint) +0:81 Constant: +0:81 0 (const int) +0:81 move second child to first child (temp uint) +0:81 'ElementsU' (temp uint) +0:81 direct index (temp uint) +0:81 'sizeQueryTemp' (temp 2-component vector of uint) +0:81 Constant: +0:81 1 (const int) +0:82 Sequence +0:82 move second child to first child (temp 2-component vector of uint) +0:82 'sizeQueryTemp' (temp 2-component vector of uint) +0:82 textureSize (temp 2-component vector of uint) +0:82 'g_tTex1di4a' (uniform itexture1DArray) +0:82 Constant: +0:82 6 (const uint) +0:82 move second child to first child (temp uint) +0:82 'WidthU' (temp uint) +0:82 direct index (temp uint) +0:82 'sizeQueryTemp' (temp 2-component vector of uint) +0:82 Constant: +0:82 0 (const int) +0:82 move second child to first child (temp uint) +0:82 'ElementsU' (temp uint) +0:82 direct index (temp uint) +0:82 'sizeQueryTemp' (temp 2-component vector of uint) +0:82 Constant: +0:82 1 (const int) +0:82 move second child to first child (temp uint) +0:82 'NumberOfLevelsU' (temp uint) +0:82 textureQueryLevels (temp uint) +0:82 'g_tTex1di4a' (uniform itexture1DArray) +0:85 Sequence +0:85 move second child to first child (temp 2-component vector of uint) +0:85 'sizeQueryTemp' (temp 2-component vector of uint) +0:85 textureSize (temp 2-component vector of uint) +0:85 'g_tTex1du4a' (uniform utexture1DArray) +0:85 move second child to first child (temp uint) +0:85 'WidthU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 2-component vector of uint) +0:85 Constant: +0:85 0 (const int) +0:85 move second child to first child (temp uint) +0:85 'ElementsU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 2-component vector of uint) +0:85 Constant: +0:85 1 (const int) +0:86 Sequence +0:86 move second child to first child (temp 2-component vector of uint) +0:86 'sizeQueryTemp' (temp 2-component vector of uint) +0:86 textureSize (temp 2-component vector of uint) +0:86 'g_tTex1du4a' (uniform utexture1DArray) +0:86 Constant: +0:86 6 (const uint) +0:86 move second child to first child (temp uint) +0:86 'WidthU' (temp uint) +0:86 direct index (temp uint) +0:86 'sizeQueryTemp' (temp 2-component vector of uint) +0:86 Constant: +0:86 0 (const int) +0:86 move second child to first child (temp uint) +0:86 'ElementsU' (temp uint) +0:86 direct index (temp uint) +0:86 'sizeQueryTemp' (temp 2-component vector of uint) +0:86 Constant: +0:86 1 (const int) +0:86 move second child to first child (temp uint) +0:86 'NumberOfLevelsU' (temp uint) +0:86 textureQueryLevels (temp uint) +0:86 'g_tTex1du4a' (uniform utexture1DArray) +0:89 Sequence +0:89 move second child to first child (temp 2-component vector of uint) +0:89 'sizeQueryTemp' (temp 2-component vector of uint) +0:89 textureSize (temp 2-component vector of uint) +0:89 'g_tTex2df4' (uniform texture2D) +0:89 move second child to first child (temp uint) +0:89 'WidthU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 2-component vector of uint) +0:89 Constant: +0:89 0 (const int) +0:89 move second child to first child (temp uint) +0:89 'HeightU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 2-component vector of uint) +0:89 Constant: +0:89 1 (const int) +0:90 Sequence +0:90 move second child to first child (temp 2-component vector of uint) +0:90 'sizeQueryTemp' (temp 2-component vector of uint) +0:90 textureSize (temp 2-component vector of uint) +0:90 'g_tTex2df4' (uniform texture2D) +0:90 Constant: +0:90 6 (const uint) +0:90 move second child to first child (temp uint) +0:90 'WidthU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 2-component vector of uint) +0:90 Constant: +0:90 0 (const int) +0:90 move second child to first child (temp uint) +0:90 'HeightU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 2-component vector of uint) +0:90 Constant: +0:90 1 (const int) +0:90 move second child to first child (temp uint) +0:90 'NumberOfLevelsU' (temp uint) +0:90 textureQueryLevels (temp uint) +0:90 'g_tTex2df4' (uniform texture2D) +0:93 Sequence +0:93 move second child to first child (temp 2-component vector of uint) +0:93 'sizeQueryTemp' (temp 2-component vector of uint) +0:93 textureSize (temp 2-component vector of uint) +0:93 'g_tTex2di4' (uniform itexture2D) +0:93 move second child to first child (temp uint) +0:93 'WidthU' (temp uint) +0:93 direct index (temp uint) +0:93 'sizeQueryTemp' (temp 2-component vector of uint) +0:93 Constant: +0:93 0 (const int) +0:93 move second child to first child (temp uint) +0:93 'HeightU' (temp uint) +0:93 direct index (temp uint) +0:93 'sizeQueryTemp' (temp 2-component vector of uint) +0:93 Constant: +0:93 1 (const int) +0:94 Sequence +0:94 move second child to first child (temp 2-component vector of uint) +0:94 'sizeQueryTemp' (temp 2-component vector of uint) +0:94 textureSize (temp 2-component vector of uint) +0:94 'g_tTex2di4' (uniform itexture2D) +0:94 Constant: +0:94 6 (const uint) +0:94 move second child to first child (temp uint) +0:94 'WidthU' (temp uint) +0:94 direct index (temp uint) +0:94 'sizeQueryTemp' (temp 2-component vector of uint) +0:94 Constant: +0:94 0 (const int) +0:94 move second child to first child (temp uint) +0:94 'HeightU' (temp uint) +0:94 direct index (temp uint) +0:94 'sizeQueryTemp' (temp 2-component vector of uint) +0:94 Constant: +0:94 1 (const int) +0:94 move second child to first child (temp uint) +0:94 'NumberOfLevelsU' (temp uint) +0:94 textureQueryLevels (temp uint) +0:94 'g_tTex2di4' (uniform itexture2D) +0:97 Sequence +0:97 move second child to first child (temp 2-component vector of uint) +0:97 'sizeQueryTemp' (temp 2-component vector of uint) +0:97 textureSize (temp 2-component vector of uint) +0:97 'g_tTex2du4' (uniform utexture2D) +0:97 move second child to first child (temp uint) +0:97 'WidthU' (temp uint) +0:97 direct index (temp uint) +0:97 'sizeQueryTemp' (temp 2-component vector of uint) +0:97 Constant: +0:97 0 (const int) +0:97 move second child to first child (temp uint) +0:97 'HeightU' (temp uint) +0:97 direct index (temp uint) +0:97 'sizeQueryTemp' (temp 2-component vector of uint) +0:97 Constant: +0:97 1 (const int) +0:98 Sequence +0:98 move second child to first child (temp 2-component vector of uint) +0:98 'sizeQueryTemp' (temp 2-component vector of uint) +0:98 textureSize (temp 2-component vector of uint) +0:98 'g_tTex2du4' (uniform utexture2D) +0:98 Constant: +0:98 6 (const uint) +0:98 move second child to first child (temp uint) +0:98 'WidthU' (temp uint) +0:98 direct index (temp uint) +0:98 'sizeQueryTemp' (temp 2-component vector of uint) +0:98 Constant: +0:98 0 (const int) +0:98 move second child to first child (temp uint) +0:98 'HeightU' (temp uint) +0:98 direct index (temp uint) +0:98 'sizeQueryTemp' (temp 2-component vector of uint) +0:98 Constant: +0:98 1 (const int) +0:98 move second child to first child (temp uint) +0:98 'NumberOfLevelsU' (temp uint) +0:98 textureQueryLevels (temp uint) +0:98 'g_tTex2du4' (uniform utexture2D) +0:101 Sequence +0:101 move second child to first child (temp 3-component vector of uint) +0:101 'sizeQueryTemp' (temp 3-component vector of uint) +0:101 textureSize (temp 3-component vector of uint) +0:101 'g_tTex2df4a' (uniform texture2DArray) +0:101 move second child to first child (temp uint) +0:101 'WidthU' (temp uint) +0:101 direct index (temp uint) +0:101 'sizeQueryTemp' (temp 3-component vector of uint) +0:101 Constant: +0:101 0 (const int) +0:101 move second child to first child (temp uint) +0:101 'HeightU' (temp uint) +0:101 direct index (temp uint) +0:101 'sizeQueryTemp' (temp 3-component vector of uint) +0:101 Constant: +0:101 1 (const int) +0:101 move second child to first child (temp uint) +0:101 'ElementsU' (temp uint) +0:101 direct index (temp uint) +0:101 'sizeQueryTemp' (temp 3-component vector of uint) +0:101 Constant: +0:101 2 (const int) +0:102 Sequence +0:102 move second child to first child (temp 3-component vector of uint) +0:102 'sizeQueryTemp' (temp 3-component vector of uint) +0:102 textureSize (temp 3-component vector of uint) +0:102 'g_tTex2df4a' (uniform texture2DArray) +0:102 Constant: +0:102 6 (const uint) +0:102 move second child to first child (temp uint) +0:102 'WidthU' (temp uint) +0:102 direct index (temp uint) +0:102 'sizeQueryTemp' (temp 3-component vector of uint) +0:102 Constant: +0:102 0 (const int) +0:102 move second child to first child (temp uint) +0:102 'HeightU' (temp uint) +0:102 direct index (temp uint) +0:102 'sizeQueryTemp' (temp 3-component vector of uint) +0:102 Constant: +0:102 1 (const int) +0:102 move second child to first child (temp uint) +0:102 'ElementsU' (temp uint) +0:102 direct index (temp uint) +0:102 'sizeQueryTemp' (temp 3-component vector of uint) +0:102 Constant: +0:102 2 (const int) +0:102 move second child to first child (temp uint) +0:102 'NumberOfLevelsU' (temp uint) +0:102 textureQueryLevels (temp uint) +0:102 'g_tTex2df4a' (uniform texture2DArray) +0:105 Sequence +0:105 move second child to first child (temp 3-component vector of uint) +0:105 'sizeQueryTemp' (temp 3-component vector of uint) +0:105 textureSize (temp 3-component vector of uint) +0:105 'g_tTex2di4a' (uniform itexture2DArray) +0:105 move second child to first child (temp uint) +0:105 'WidthU' (temp uint) +0:105 direct index (temp uint) +0:105 'sizeQueryTemp' (temp 3-component vector of uint) +0:105 Constant: +0:105 0 (const int) +0:105 move second child to first child (temp uint) +0:105 'HeightU' (temp uint) +0:105 direct index (temp uint) +0:105 'sizeQueryTemp' (temp 3-component vector of uint) +0:105 Constant: +0:105 1 (const int) +0:105 move second child to first child (temp uint) +0:105 'ElementsU' (temp uint) +0:105 direct index (temp uint) +0:105 'sizeQueryTemp' (temp 3-component vector of uint) +0:105 Constant: +0:105 2 (const int) +0:106 Sequence +0:106 move second child to first child (temp 3-component vector of uint) +0:106 'sizeQueryTemp' (temp 3-component vector of uint) +0:106 textureSize (temp 3-component vector of uint) +0:106 'g_tTex2di4a' (uniform itexture2DArray) +0:106 Constant: +0:106 6 (const uint) +0:106 move second child to first child (temp uint) +0:106 'WidthU' (temp uint) +0:106 direct index (temp uint) +0:106 'sizeQueryTemp' (temp 3-component vector of uint) +0:106 Constant: +0:106 0 (const int) +0:106 move second child to first child (temp uint) +0:106 'HeightU' (temp uint) +0:106 direct index (temp uint) +0:106 'sizeQueryTemp' (temp 3-component vector of uint) +0:106 Constant: +0:106 1 (const int) +0:106 move second child to first child (temp uint) +0:106 'ElementsU' (temp uint) +0:106 direct index (temp uint) +0:106 'sizeQueryTemp' (temp 3-component vector of uint) +0:106 Constant: +0:106 2 (const int) +0:106 move second child to first child (temp uint) +0:106 'NumberOfLevelsU' (temp uint) +0:106 textureQueryLevels (temp uint) +0:106 'g_tTex2di4a' (uniform itexture2DArray) +0:109 Sequence +0:109 move second child to first child (temp 3-component vector of uint) +0:109 'sizeQueryTemp' (temp 3-component vector of uint) +0:109 textureSize (temp 3-component vector of uint) +0:109 'g_tTex2du4a' (uniform utexture2DArray) +0:109 move second child to first child (temp uint) +0:109 'WidthU' (temp uint) +0:109 direct index (temp uint) +0:109 'sizeQueryTemp' (temp 3-component vector of uint) +0:109 Constant: +0:109 0 (const int) +0:109 move second child to first child (temp uint) +0:109 'HeightU' (temp uint) +0:109 direct index (temp uint) +0:109 'sizeQueryTemp' (temp 3-component vector of uint) +0:109 Constant: +0:109 1 (const int) +0:109 move second child to first child (temp uint) +0:109 'ElementsU' (temp uint) +0:109 direct index (temp uint) +0:109 'sizeQueryTemp' (temp 3-component vector of uint) +0:109 Constant: +0:109 2 (const int) +0:110 Sequence +0:110 move second child to first child (temp 3-component vector of uint) +0:110 'sizeQueryTemp' (temp 3-component vector of uint) +0:110 textureSize (temp 3-component vector of uint) +0:110 'g_tTex2du4a' (uniform utexture2DArray) +0:110 Constant: +0:110 6 (const uint) +0:110 move second child to first child (temp uint) +0:110 'WidthU' (temp uint) +0:110 direct index (temp uint) +0:110 'sizeQueryTemp' (temp 3-component vector of uint) +0:110 Constant: +0:110 0 (const int) +0:110 move second child to first child (temp uint) +0:110 'HeightU' (temp uint) +0:110 direct index (temp uint) +0:110 'sizeQueryTemp' (temp 3-component vector of uint) +0:110 Constant: +0:110 1 (const int) +0:110 move second child to first child (temp uint) +0:110 'ElementsU' (temp uint) +0:110 direct index (temp uint) +0:110 'sizeQueryTemp' (temp 3-component vector of uint) +0:110 Constant: +0:110 2 (const int) +0:110 move second child to first child (temp uint) +0:110 'NumberOfLevelsU' (temp uint) +0:110 textureQueryLevels (temp uint) +0:110 'g_tTex2du4a' (uniform utexture2DArray) +0:113 Sequence +0:113 move second child to first child (temp 3-component vector of uint) +0:113 'sizeQueryTemp' (temp 3-component vector of uint) +0:113 textureSize (temp 3-component vector of uint) +0:113 'g_tTex3df4' (uniform texture3D) +0:113 move second child to first child (temp uint) +0:113 'WidthU' (temp uint) +0:113 direct index (temp uint) +0:113 'sizeQueryTemp' (temp 3-component vector of uint) +0:113 Constant: +0:113 0 (const int) +0:113 move second child to first child (temp uint) +0:113 'HeightU' (temp uint) +0:113 direct index (temp uint) +0:113 'sizeQueryTemp' (temp 3-component vector of uint) +0:113 Constant: +0:113 1 (const int) +0:113 move second child to first child (temp uint) +0:113 'DepthU' (temp uint) +0:113 direct index (temp uint) +0:113 'sizeQueryTemp' (temp 3-component vector of uint) +0:113 Constant: +0:113 2 (const int) +0:114 Sequence +0:114 move second child to first child (temp 3-component vector of uint) +0:114 'sizeQueryTemp' (temp 3-component vector of uint) +0:114 textureSize (temp 3-component vector of uint) +0:114 'g_tTex3df4' (uniform texture3D) +0:114 Constant: +0:114 6 (const uint) +0:114 move second child to first child (temp uint) +0:114 'WidthU' (temp uint) +0:114 direct index (temp uint) +0:114 'sizeQueryTemp' (temp 3-component vector of uint) +0:114 Constant: +0:114 0 (const int) +0:114 move second child to first child (temp uint) +0:114 'HeightU' (temp uint) +0:114 direct index (temp uint) +0:114 'sizeQueryTemp' (temp 3-component vector of uint) +0:114 Constant: +0:114 1 (const int) +0:114 move second child to first child (temp uint) +0:114 'DepthU' (temp uint) +0:114 direct index (temp uint) +0:114 'sizeQueryTemp' (temp 3-component vector of uint) +0:114 Constant: +0:114 2 (const int) +0:114 move second child to first child (temp uint) +0:114 'NumberOfLevelsU' (temp uint) +0:114 textureQueryLevels (temp uint) +0:114 'g_tTex3df4' (uniform texture3D) +0:117 Sequence +0:117 move second child to first child (temp 3-component vector of uint) +0:117 'sizeQueryTemp' (temp 3-component vector of uint) +0:117 textureSize (temp 3-component vector of uint) +0:117 'g_tTex3di4' (uniform itexture3D) +0:117 move second child to first child (temp uint) +0:117 'WidthU' (temp uint) +0:117 direct index (temp uint) +0:117 'sizeQueryTemp' (temp 3-component vector of uint) +0:117 Constant: +0:117 0 (const int) +0:117 move second child to first child (temp uint) +0:117 'HeightU' (temp uint) +0:117 direct index (temp uint) +0:117 'sizeQueryTemp' (temp 3-component vector of uint) +0:117 Constant: +0:117 1 (const int) +0:117 move second child to first child (temp uint) +0:117 'DepthU' (temp uint) +0:117 direct index (temp uint) +0:117 'sizeQueryTemp' (temp 3-component vector of uint) +0:117 Constant: +0:117 2 (const int) +0:118 Sequence +0:118 move second child to first child (temp 3-component vector of uint) +0:118 'sizeQueryTemp' (temp 3-component vector of uint) +0:118 textureSize (temp 3-component vector of uint) +0:118 'g_tTex3di4' (uniform itexture3D) +0:118 Constant: +0:118 6 (const uint) +0:118 move second child to first child (temp uint) +0:118 'WidthU' (temp uint) +0:118 direct index (temp uint) +0:118 'sizeQueryTemp' (temp 3-component vector of uint) +0:118 Constant: +0:118 0 (const int) +0:118 move second child to first child (temp uint) +0:118 'HeightU' (temp uint) +0:118 direct index (temp uint) +0:118 'sizeQueryTemp' (temp 3-component vector of uint) +0:118 Constant: +0:118 1 (const int) +0:118 move second child to first child (temp uint) +0:118 'DepthU' (temp uint) +0:118 direct index (temp uint) +0:118 'sizeQueryTemp' (temp 3-component vector of uint) +0:118 Constant: +0:118 2 (const int) +0:118 move second child to first child (temp uint) +0:118 'NumberOfLevelsU' (temp uint) +0:118 textureQueryLevels (temp uint) +0:118 'g_tTex3di4' (uniform itexture3D) +0:121 Sequence +0:121 move second child to first child (temp 3-component vector of uint) +0:121 'sizeQueryTemp' (temp 3-component vector of uint) +0:121 textureSize (temp 3-component vector of uint) +0:121 'g_tTex3du4' (uniform utexture3D) +0:121 move second child to first child (temp uint) +0:121 'WidthU' (temp uint) +0:121 direct index (temp uint) +0:121 'sizeQueryTemp' (temp 3-component vector of uint) +0:121 Constant: +0:121 0 (const int) +0:121 move second child to first child (temp uint) +0:121 'HeightU' (temp uint) +0:121 direct index (temp uint) +0:121 'sizeQueryTemp' (temp 3-component vector of uint) +0:121 Constant: +0:121 1 (const int) +0:121 move second child to first child (temp uint) +0:121 'DepthU' (temp uint) +0:121 direct index (temp uint) +0:121 'sizeQueryTemp' (temp 3-component vector of uint) +0:121 Constant: +0:121 2 (const int) +0:122 Sequence +0:122 move second child to first child (temp 3-component vector of uint) +0:122 'sizeQueryTemp' (temp 3-component vector of uint) +0:122 textureSize (temp 3-component vector of uint) +0:122 'g_tTex3du4' (uniform utexture3D) +0:122 Constant: +0:122 6 (const uint) +0:122 move second child to first child (temp uint) +0:122 'WidthU' (temp uint) +0:122 direct index (temp uint) +0:122 'sizeQueryTemp' (temp 3-component vector of uint) +0:122 Constant: +0:122 0 (const int) +0:122 move second child to first child (temp uint) +0:122 'HeightU' (temp uint) +0:122 direct index (temp uint) +0:122 'sizeQueryTemp' (temp 3-component vector of uint) +0:122 Constant: +0:122 1 (const int) +0:122 move second child to first child (temp uint) +0:122 'DepthU' (temp uint) +0:122 direct index (temp uint) +0:122 'sizeQueryTemp' (temp 3-component vector of uint) +0:122 Constant: +0:122 2 (const int) +0:122 move second child to first child (temp uint) +0:122 'NumberOfLevelsU' (temp uint) +0:122 textureQueryLevels (temp uint) +0:122 'g_tTex3du4' (uniform utexture3D) +0:125 Sequence +0:125 move second child to first child (temp 2-component vector of uint) +0:125 'sizeQueryTemp' (temp 2-component vector of uint) +0:125 textureSize (temp 2-component vector of uint) +0:125 'g_tTexcdf4' (uniform textureCube) +0:125 move second child to first child (temp uint) +0:125 'WidthU' (temp uint) +0:125 direct index (temp uint) +0:125 'sizeQueryTemp' (temp 2-component vector of uint) +0:125 Constant: +0:125 0 (const int) +0:125 move second child to first child (temp uint) +0:125 'HeightU' (temp uint) +0:125 direct index (temp uint) +0:125 'sizeQueryTemp' (temp 2-component vector of uint) +0:125 Constant: +0:125 1 (const int) +0:126 Sequence +0:126 move second child to first child (temp 2-component vector of uint) +0:126 'sizeQueryTemp' (temp 2-component vector of uint) +0:126 textureSize (temp 2-component vector of uint) +0:126 'g_tTexcdf4' (uniform textureCube) +0:126 Constant: +0:126 6 (const uint) +0:126 move second child to first child (temp uint) +0:126 'WidthU' (temp uint) +0:126 direct index (temp uint) +0:126 'sizeQueryTemp' (temp 2-component vector of uint) +0:126 Constant: +0:126 0 (const int) +0:126 move second child to first child (temp uint) +0:126 'HeightU' (temp uint) +0:126 direct index (temp uint) +0:126 'sizeQueryTemp' (temp 2-component vector of uint) +0:126 Constant: +0:126 1 (const int) +0:126 move second child to first child (temp uint) +0:126 'NumberOfLevelsU' (temp uint) +0:126 textureQueryLevels (temp uint) +0:126 'g_tTexcdf4' (uniform textureCube) +0:129 Sequence +0:129 move second child to first child (temp 2-component vector of uint) +0:129 'sizeQueryTemp' (temp 2-component vector of uint) +0:129 textureSize (temp 2-component vector of uint) +0:129 'g_tTexcdi4' (uniform itextureCube) +0:129 move second child to first child (temp uint) +0:129 'WidthU' (temp uint) +0:129 direct index (temp uint) +0:129 'sizeQueryTemp' (temp 2-component vector of uint) +0:129 Constant: +0:129 0 (const int) +0:129 move second child to first child (temp uint) +0:129 'HeightU' (temp uint) +0:129 direct index (temp uint) +0:129 'sizeQueryTemp' (temp 2-component vector of uint) +0:129 Constant: +0:129 1 (const int) +0:130 Sequence +0:130 move second child to first child (temp 2-component vector of uint) +0:130 'sizeQueryTemp' (temp 2-component vector of uint) +0:130 textureSize (temp 2-component vector of uint) +0:130 'g_tTexcdi4' (uniform itextureCube) +0:130 Constant: +0:130 6 (const uint) +0:130 move second child to first child (temp uint) +0:130 'WidthU' (temp uint) +0:130 direct index (temp uint) +0:130 'sizeQueryTemp' (temp 2-component vector of uint) +0:130 Constant: +0:130 0 (const int) +0:130 move second child to first child (temp uint) +0:130 'HeightU' (temp uint) +0:130 direct index (temp uint) +0:130 'sizeQueryTemp' (temp 2-component vector of uint) +0:130 Constant: +0:130 1 (const int) +0:130 move second child to first child (temp uint) +0:130 'NumberOfLevelsU' (temp uint) +0:130 textureQueryLevels (temp uint) +0:130 'g_tTexcdi4' (uniform itextureCube) +0:133 Sequence +0:133 move second child to first child (temp 2-component vector of uint) +0:133 'sizeQueryTemp' (temp 2-component vector of uint) +0:133 textureSize (temp 2-component vector of uint) +0:133 'g_tTexcdu4' (uniform utextureCube) +0:133 move second child to first child (temp uint) +0:133 'WidthU' (temp uint) +0:133 direct index (temp uint) +0:133 'sizeQueryTemp' (temp 2-component vector of uint) +0:133 Constant: +0:133 0 (const int) +0:133 move second child to first child (temp uint) +0:133 'HeightU' (temp uint) +0:133 direct index (temp uint) +0:133 'sizeQueryTemp' (temp 2-component vector of uint) +0:133 Constant: +0:133 1 (const int) +0:134 Sequence +0:134 move second child to first child (temp 2-component vector of uint) +0:134 'sizeQueryTemp' (temp 2-component vector of uint) +0:134 textureSize (temp 2-component vector of uint) +0:134 'g_tTexcdu4' (uniform utextureCube) +0:134 Constant: +0:134 6 (const uint) +0:134 move second child to first child (temp uint) +0:134 'WidthU' (temp uint) +0:134 direct index (temp uint) +0:134 'sizeQueryTemp' (temp 2-component vector of uint) +0:134 Constant: +0:134 0 (const int) +0:134 move second child to first child (temp uint) +0:134 'HeightU' (temp uint) +0:134 direct index (temp uint) +0:134 'sizeQueryTemp' (temp 2-component vector of uint) +0:134 Constant: +0:134 1 (const int) +0:134 move second child to first child (temp uint) +0:134 'NumberOfLevelsU' (temp uint) +0:134 textureQueryLevels (temp uint) +0:134 'g_tTexcdu4' (uniform utextureCube) +0:137 Sequence +0:137 move second child to first child (temp 3-component vector of uint) +0:137 'sizeQueryTemp' (temp 3-component vector of uint) +0:137 textureSize (temp 3-component vector of uint) +0:137 'g_tTexcdf4a' (uniform textureCubeArray) +0:137 move second child to first child (temp uint) +0:137 'WidthU' (temp uint) +0:137 direct index (temp uint) +0:137 'sizeQueryTemp' (temp 3-component vector of uint) +0:137 Constant: +0:137 0 (const int) +0:137 move second child to first child (temp uint) +0:137 'HeightU' (temp uint) +0:137 direct index (temp uint) +0:137 'sizeQueryTemp' (temp 3-component vector of uint) +0:137 Constant: +0:137 1 (const int) +0:137 move second child to first child (temp uint) +0:137 'ElementsU' (temp uint) +0:137 direct index (temp uint) +0:137 'sizeQueryTemp' (temp 3-component vector of uint) +0:137 Constant: +0:137 2 (const int) +0:138 Sequence +0:138 move second child to first child (temp 3-component vector of uint) +0:138 'sizeQueryTemp' (temp 3-component vector of uint) +0:138 textureSize (temp 3-component vector of uint) +0:138 'g_tTexcdf4a' (uniform textureCubeArray) +0:138 Constant: +0:138 6 (const uint) +0:138 move second child to first child (temp uint) +0:138 'WidthU' (temp uint) +0:138 direct index (temp uint) +0:138 'sizeQueryTemp' (temp 3-component vector of uint) +0:138 Constant: +0:138 0 (const int) +0:138 move second child to first child (temp uint) +0:138 'HeightU' (temp uint) +0:138 direct index (temp uint) +0:138 'sizeQueryTemp' (temp 3-component vector of uint) +0:138 Constant: +0:138 1 (const int) +0:138 move second child to first child (temp uint) +0:138 'ElementsU' (temp uint) +0:138 direct index (temp uint) +0:138 'sizeQueryTemp' (temp 3-component vector of uint) +0:138 Constant: +0:138 2 (const int) +0:138 move second child to first child (temp uint) +0:138 'NumberOfLevelsU' (temp uint) +0:138 textureQueryLevels (temp uint) +0:138 'g_tTexcdf4a' (uniform textureCubeArray) +0:141 Sequence +0:141 move second child to first child (temp 3-component vector of uint) +0:141 'sizeQueryTemp' (temp 3-component vector of uint) +0:141 textureSize (temp 3-component vector of uint) +0:141 'g_tTexcdi4a' (uniform itextureCubeArray) +0:141 move second child to first child (temp uint) +0:141 'WidthU' (temp uint) +0:141 direct index (temp uint) +0:141 'sizeQueryTemp' (temp 3-component vector of uint) +0:141 Constant: +0:141 0 (const int) +0:141 move second child to first child (temp uint) +0:141 'HeightU' (temp uint) +0:141 direct index (temp uint) +0:141 'sizeQueryTemp' (temp 3-component vector of uint) +0:141 Constant: +0:141 1 (const int) +0:141 move second child to first child (temp uint) +0:141 'ElementsU' (temp uint) +0:141 direct index (temp uint) +0:141 'sizeQueryTemp' (temp 3-component vector of uint) +0:141 Constant: +0:141 2 (const int) +0:142 Sequence +0:142 move second child to first child (temp 3-component vector of uint) +0:142 'sizeQueryTemp' (temp 3-component vector of uint) +0:142 textureSize (temp 3-component vector of uint) +0:142 'g_tTexcdi4a' (uniform itextureCubeArray) +0:142 Constant: +0:142 6 (const uint) +0:142 move second child to first child (temp uint) +0:142 'WidthU' (temp uint) +0:142 direct index (temp uint) +0:142 'sizeQueryTemp' (temp 3-component vector of uint) +0:142 Constant: +0:142 0 (const int) +0:142 move second child to first child (temp uint) +0:142 'HeightU' (temp uint) +0:142 direct index (temp uint) +0:142 'sizeQueryTemp' (temp 3-component vector of uint) +0:142 Constant: +0:142 1 (const int) +0:142 move second child to first child (temp uint) +0:142 'ElementsU' (temp uint) +0:142 direct index (temp uint) +0:142 'sizeQueryTemp' (temp 3-component vector of uint) +0:142 Constant: +0:142 2 (const int) +0:142 move second child to first child (temp uint) +0:142 'NumberOfLevelsU' (temp uint) +0:142 textureQueryLevels (temp uint) +0:142 'g_tTexcdi4a' (uniform itextureCubeArray) +0:145 Sequence +0:145 move second child to first child (temp 3-component vector of uint) +0:145 'sizeQueryTemp' (temp 3-component vector of uint) +0:145 textureSize (temp 3-component vector of uint) +0:145 'g_tTexcdu4a' (uniform utextureCubeArray) +0:145 move second child to first child (temp uint) +0:145 'WidthU' (temp uint) +0:145 direct index (temp uint) +0:145 'sizeQueryTemp' (temp 3-component vector of uint) +0:145 Constant: +0:145 0 (const int) +0:145 move second child to first child (temp uint) +0:145 'HeightU' (temp uint) +0:145 direct index (temp uint) +0:145 'sizeQueryTemp' (temp 3-component vector of uint) +0:145 Constant: +0:145 1 (const int) +0:145 move second child to first child (temp uint) +0:145 'ElementsU' (temp uint) +0:145 direct index (temp uint) +0:145 'sizeQueryTemp' (temp 3-component vector of uint) +0:145 Constant: +0:145 2 (const int) +0:146 Sequence +0:146 move second child to first child (temp 3-component vector of uint) +0:146 'sizeQueryTemp' (temp 3-component vector of uint) +0:146 textureSize (temp 3-component vector of uint) +0:146 'g_tTexcdu4a' (uniform utextureCubeArray) +0:146 Constant: +0:146 6 (const uint) +0:146 move second child to first child (temp uint) +0:146 'WidthU' (temp uint) +0:146 direct index (temp uint) +0:146 'sizeQueryTemp' (temp 3-component vector of uint) +0:146 Constant: +0:146 0 (const int) +0:146 move second child to first child (temp uint) +0:146 'HeightU' (temp uint) +0:146 direct index (temp uint) +0:146 'sizeQueryTemp' (temp 3-component vector of uint) +0:146 Constant: +0:146 1 (const int) +0:146 move second child to first child (temp uint) +0:146 'ElementsU' (temp uint) +0:146 direct index (temp uint) +0:146 'sizeQueryTemp' (temp 3-component vector of uint) +0:146 Constant: +0:146 2 (const int) +0:146 move second child to first child (temp uint) +0:146 'NumberOfLevelsU' (temp uint) +0:146 textureQueryLevels (temp uint) +0:146 'g_tTexcdu4a' (uniform utextureCubeArray) +0:149 Sequence +0:149 move second child to first child (temp 2-component vector of uint) +0:149 'sizeQueryTemp' (temp 2-component vector of uint) +0:149 textureSize (temp 2-component vector of uint) +0:149 'g_tTex2dmsf4' (uniform texture2DMS) +0:149 move second child to first child (temp uint) +0:149 'WidthU' (temp uint) +0:149 direct index (temp uint) +0:149 'sizeQueryTemp' (temp 2-component vector of uint) +0:149 Constant: +0:149 0 (const int) +0:149 move second child to first child (temp uint) +0:149 'HeightU' (temp uint) +0:149 direct index (temp uint) +0:149 'sizeQueryTemp' (temp 2-component vector of uint) +0:149 Constant: +0:149 1 (const int) +0:149 move second child to first child (temp uint) +0:149 'NumberOfSamplesU' (temp uint) +0:149 imageQuerySamples (temp uint) +0:149 'g_tTex2dmsf4' (uniform texture2DMS) +0:152 Sequence +0:152 move second child to first child (temp 2-component vector of uint) +0:152 'sizeQueryTemp' (temp 2-component vector of uint) +0:152 textureSize (temp 2-component vector of uint) +0:152 'g_tTex2dmsi4' (uniform itexture2DMS) +0:152 move second child to first child (temp uint) +0:152 'WidthU' (temp uint) +0:152 direct index (temp uint) +0:152 'sizeQueryTemp' (temp 2-component vector of uint) +0:152 Constant: +0:152 0 (const int) +0:152 move second child to first child (temp uint) +0:152 'HeightU' (temp uint) +0:152 direct index (temp uint) +0:152 'sizeQueryTemp' (temp 2-component vector of uint) +0:152 Constant: +0:152 1 (const int) +0:152 move second child to first child (temp uint) +0:152 'NumberOfSamplesU' (temp uint) +0:152 imageQuerySamples (temp uint) +0:152 'g_tTex2dmsi4' (uniform itexture2DMS) +0:155 Sequence +0:155 move second child to first child (temp 2-component vector of uint) +0:155 'sizeQueryTemp' (temp 2-component vector of uint) +0:155 textureSize (temp 2-component vector of uint) +0:155 'g_tTex2dmsu4' (uniform utexture2DMS) +0:155 move second child to first child (temp uint) +0:155 'WidthU' (temp uint) +0:155 direct index (temp uint) +0:155 'sizeQueryTemp' (temp 2-component vector of uint) +0:155 Constant: +0:155 0 (const int) +0:155 move second child to first child (temp uint) +0:155 'HeightU' (temp uint) +0:155 direct index (temp uint) +0:155 'sizeQueryTemp' (temp 2-component vector of uint) +0:155 Constant: +0:155 1 (const int) +0:155 move second child to first child (temp uint) +0:155 'NumberOfSamplesU' (temp uint) +0:155 imageQuerySamples (temp uint) +0:155 'g_tTex2dmsu4' (uniform utexture2DMS) +0:158 Sequence +0:158 move second child to first child (temp 3-component vector of uint) +0:158 'sizeQueryTemp' (temp 3-component vector of uint) +0:158 textureSize (temp 3-component vector of uint) +0:158 'g_tTex2dmsf4a' (uniform texture2DMSArray) +0:158 move second child to first child (temp uint) +0:158 'WidthU' (temp uint) +0:158 direct index (temp uint) +0:158 'sizeQueryTemp' (temp 3-component vector of uint) +0:158 Constant: +0:158 0 (const int) +0:158 move second child to first child (temp uint) +0:158 'HeightU' (temp uint) +0:158 direct index (temp uint) +0:158 'sizeQueryTemp' (temp 3-component vector of uint) +0:158 Constant: +0:158 1 (const int) +0:158 move second child to first child (temp uint) +0:158 'ElementsU' (temp uint) +0:158 direct index (temp uint) +0:158 'sizeQueryTemp' (temp 3-component vector of uint) +0:158 Constant: +0:158 2 (const int) +0:158 move second child to first child (temp uint) +0:158 'NumberOfSamplesU' (temp uint) +0:158 imageQuerySamples (temp uint) +0:158 'g_tTex2dmsf4a' (uniform texture2DMSArray) +0:161 Sequence +0:161 move second child to first child (temp 3-component vector of uint) +0:161 'sizeQueryTemp' (temp 3-component vector of uint) +0:161 textureSize (temp 3-component vector of uint) +0:161 'g_tTex2dmsi4a' (uniform itexture2DMSArray) +0:161 move second child to first child (temp uint) +0:161 'WidthU' (temp uint) +0:161 direct index (temp uint) +0:161 'sizeQueryTemp' (temp 3-component vector of uint) +0:161 Constant: +0:161 0 (const int) +0:161 move second child to first child (temp uint) +0:161 'HeightU' (temp uint) +0:161 direct index (temp uint) +0:161 'sizeQueryTemp' (temp 3-component vector of uint) +0:161 Constant: +0:161 1 (const int) +0:161 move second child to first child (temp uint) +0:161 'ElementsU' (temp uint) +0:161 direct index (temp uint) +0:161 'sizeQueryTemp' (temp 3-component vector of uint) +0:161 Constant: +0:161 2 (const int) +0:161 move second child to first child (temp uint) +0:161 'NumberOfSamplesU' (temp uint) +0:161 imageQuerySamples (temp uint) +0:161 'g_tTex2dmsi4a' (uniform itexture2DMSArray) +0:164 Sequence +0:164 move second child to first child (temp 3-component vector of uint) +0:164 'sizeQueryTemp' (temp 3-component vector of uint) +0:164 textureSize (temp 3-component vector of uint) +0:164 'g_tTex2dmsu4a' (uniform utexture2DMSArray) +0:164 move second child to first child (temp uint) +0:164 'WidthU' (temp uint) +0:164 direct index (temp uint) +0:164 'sizeQueryTemp' (temp 3-component vector of uint) +0:164 Constant: +0:164 0 (const int) +0:164 move second child to first child (temp uint) +0:164 'HeightU' (temp uint) +0:164 direct index (temp uint) +0:164 'sizeQueryTemp' (temp 3-component vector of uint) +0:164 Constant: +0:164 1 (const int) +0:164 move second child to first child (temp uint) +0:164 'ElementsU' (temp uint) +0:164 direct index (temp uint) +0:164 'sizeQueryTemp' (temp 3-component vector of uint) +0:164 Constant: +0:164 2 (const int) +0:164 move second child to first child (temp uint) +0:164 'NumberOfSamplesU' (temp uint) +0:164 imageQuerySamples (temp uint) +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 Depth}) +0:276 Constant: +0:276 0 (const int) +0:276 Constant: +0:276 1.000000 +0:276 1.000000 +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) +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 Sequence +0:279 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +0:? 'g_tTexcdf4a' (uniform textureCubeArray) +0:? 'g_tTexcdi4a' (uniform itextureCubeArray) +0:? 'g_tTexcdu4a' (uniform utextureCubeArray) +0:? 'g_tTex2dmsf4' (uniform texture2DMS) +0:? 'g_tTex2dmsi4' (uniform itexture2DMS) +0:? 'g_tTex2dmsu4' (uniform utexture2DMS) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:46 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:46 Function Parameters: +0:? Sequence +0:65 Sequence +0:65 move second child to first child (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:65 textureSize (temp uint) +0:65 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:65 move second child to first child (temp uint) +0:65 'WidthU' (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:66 Sequence +0:66 move second child to first child (temp uint) +0:66 'sizeQueryTemp' (temp uint) +0:66 textureSize (temp uint) +0:66 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:66 Constant: +0:66 6 (const uint) +0:66 move second child to first child (temp uint) +0:66 'WidthU' (temp uint) +0:66 'sizeQueryTemp' (temp uint) +0:66 move second child to first child (temp uint) +0:66 'NumberOfLevelsU' (temp uint) +0:66 textureQueryLevels (temp uint) +0:66 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:69 Sequence +0:69 move second child to first child (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:69 textureSize (temp uint) +0:69 'g_tTex1di4' (uniform itexture1D) +0:69 move second child to first child (temp uint) +0:69 'WidthU' (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:70 Sequence +0:70 move second child to first child (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:70 textureSize (temp uint) +0:70 'g_tTex1di4' (uniform itexture1D) +0:70 Constant: +0:70 6 (const uint) +0:70 move second child to first child (temp uint) +0:70 'WidthU' (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:70 move second child to first child (temp uint) +0:70 'NumberOfLevelsU' (temp uint) +0:70 textureQueryLevels (temp uint) +0:70 'g_tTex1di4' (uniform itexture1D) +0:73 Sequence +0:73 move second child to first child (temp uint) +0:73 'sizeQueryTemp' (temp uint) +0:73 textureSize (temp uint) +0:73 'g_tTex1du4' (uniform utexture1D) +0:73 move second child to first child (temp uint) +0:73 'WidthU' (temp uint) +0:73 'sizeQueryTemp' (temp uint) +0:74 Sequence +0:74 move second child to first child (temp uint) +0:74 'sizeQueryTemp' (temp uint) +0:74 textureSize (temp uint) +0:74 'g_tTex1du4' (uniform utexture1D) +0:74 Constant: +0:74 6 (const uint) +0:74 move second child to first child (temp uint) +0:74 'WidthU' (temp uint) +0:74 'sizeQueryTemp' (temp uint) +0:74 move second child to first child (temp uint) +0:74 'NumberOfLevelsU' (temp uint) +0:74 textureQueryLevels (temp uint) +0:74 'g_tTex1du4' (uniform utexture1D) +0:77 Sequence +0:77 move second child to first child (temp 2-component vector of uint) +0:77 'sizeQueryTemp' (temp 2-component vector of uint) +0:77 textureSize (temp 2-component vector of uint) +0:77 'g_tTex1df4a' (uniform texture1DArray) +0:77 move second child to first child (temp uint) +0:77 'WidthU' (temp uint) +0:77 direct index (temp uint) +0:77 'sizeQueryTemp' (temp 2-component vector of uint) +0:77 Constant: +0:77 0 (const int) +0:77 move second child to first child (temp uint) +0:77 'ElementsU' (temp uint) +0:77 direct index (temp uint) +0:77 'sizeQueryTemp' (temp 2-component vector of uint) +0:77 Constant: +0:77 1 (const int) +0:78 Sequence +0:78 move second child to first child (temp 2-component vector of uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 textureSize (temp 2-component vector of uint) +0:78 'g_tTex1df4a' (uniform texture1DArray) +0:78 Constant: +0:78 6 (const uint) +0:78 move second child to first child (temp uint) +0:78 'WidthU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 0 (const int) +0:78 move second child to first child (temp uint) +0:78 'ElementsU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 1 (const int) +0:78 move second child to first child (temp uint) +0:78 'NumberOfLevelsU' (temp uint) +0:78 textureQueryLevels (temp uint) +0:78 'g_tTex1df4a' (uniform texture1DArray) +0:81 Sequence +0:81 move second child to first child (temp 2-component vector of uint) +0:81 'sizeQueryTemp' (temp 2-component vector of uint) +0:81 textureSize (temp 2-component vector of uint) +0:81 'g_tTex1di4a' (uniform itexture1DArray) +0:81 move second child to first child (temp uint) +0:81 'WidthU' (temp uint) +0:81 direct index (temp uint) +0:81 'sizeQueryTemp' (temp 2-component vector of uint) +0:81 Constant: +0:81 0 (const int) +0:81 move second child to first child (temp uint) +0:81 'ElementsU' (temp uint) +0:81 direct index (temp uint) +0:81 'sizeQueryTemp' (temp 2-component vector of uint) +0:81 Constant: +0:81 1 (const int) +0:82 Sequence +0:82 move second child to first child (temp 2-component vector of uint) +0:82 'sizeQueryTemp' (temp 2-component vector of uint) +0:82 textureSize (temp 2-component vector of uint) +0:82 'g_tTex1di4a' (uniform itexture1DArray) +0:82 Constant: +0:82 6 (const uint) +0:82 move second child to first child (temp uint) +0:82 'WidthU' (temp uint) +0:82 direct index (temp uint) +0:82 'sizeQueryTemp' (temp 2-component vector of uint) +0:82 Constant: +0:82 0 (const int) +0:82 move second child to first child (temp uint) +0:82 'ElementsU' (temp uint) +0:82 direct index (temp uint) +0:82 'sizeQueryTemp' (temp 2-component vector of uint) +0:82 Constant: +0:82 1 (const int) +0:82 move second child to first child (temp uint) +0:82 'NumberOfLevelsU' (temp uint) +0:82 textureQueryLevels (temp uint) +0:82 'g_tTex1di4a' (uniform itexture1DArray) +0:85 Sequence +0:85 move second child to first child (temp 2-component vector of uint) +0:85 'sizeQueryTemp' (temp 2-component vector of uint) +0:85 textureSize (temp 2-component vector of uint) +0:85 'g_tTex1du4a' (uniform utexture1DArray) +0:85 move second child to first child (temp uint) +0:85 'WidthU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 2-component vector of uint) +0:85 Constant: +0:85 0 (const int) +0:85 move second child to first child (temp uint) +0:85 'ElementsU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 2-component vector of uint) +0:85 Constant: +0:85 1 (const int) +0:86 Sequence +0:86 move second child to first child (temp 2-component vector of uint) +0:86 'sizeQueryTemp' (temp 2-component vector of uint) +0:86 textureSize (temp 2-component vector of uint) +0:86 'g_tTex1du4a' (uniform utexture1DArray) +0:86 Constant: +0:86 6 (const uint) +0:86 move second child to first child (temp uint) +0:86 'WidthU' (temp uint) +0:86 direct index (temp uint) +0:86 'sizeQueryTemp' (temp 2-component vector of uint) +0:86 Constant: +0:86 0 (const int) +0:86 move second child to first child (temp uint) +0:86 'ElementsU' (temp uint) +0:86 direct index (temp uint) +0:86 'sizeQueryTemp' (temp 2-component vector of uint) +0:86 Constant: +0:86 1 (const int) +0:86 move second child to first child (temp uint) +0:86 'NumberOfLevelsU' (temp uint) +0:86 textureQueryLevels (temp uint) +0:86 'g_tTex1du4a' (uniform utexture1DArray) +0:89 Sequence +0:89 move second child to first child (temp 2-component vector of uint) +0:89 'sizeQueryTemp' (temp 2-component vector of uint) +0:89 textureSize (temp 2-component vector of uint) +0:89 'g_tTex2df4' (uniform texture2D) +0:89 move second child to first child (temp uint) +0:89 'WidthU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 2-component vector of uint) +0:89 Constant: +0:89 0 (const int) +0:89 move second child to first child (temp uint) +0:89 'HeightU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 2-component vector of uint) +0:89 Constant: +0:89 1 (const int) +0:90 Sequence +0:90 move second child to first child (temp 2-component vector of uint) +0:90 'sizeQueryTemp' (temp 2-component vector of uint) +0:90 textureSize (temp 2-component vector of uint) +0:90 'g_tTex2df4' (uniform texture2D) +0:90 Constant: +0:90 6 (const uint) +0:90 move second child to first child (temp uint) +0:90 'WidthU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 2-component vector of uint) +0:90 Constant: +0:90 0 (const int) +0:90 move second child to first child (temp uint) +0:90 'HeightU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 2-component vector of uint) +0:90 Constant: +0:90 1 (const int) +0:90 move second child to first child (temp uint) +0:90 'NumberOfLevelsU' (temp uint) +0:90 textureQueryLevels (temp uint) +0:90 'g_tTex2df4' (uniform texture2D) +0:93 Sequence +0:93 move second child to first child (temp 2-component vector of uint) +0:93 'sizeQueryTemp' (temp 2-component vector of uint) +0:93 textureSize (temp 2-component vector of uint) +0:93 'g_tTex2di4' (uniform itexture2D) +0:93 move second child to first child (temp uint) +0:93 'WidthU' (temp uint) +0:93 direct index (temp uint) +0:93 'sizeQueryTemp' (temp 2-component vector of uint) +0:93 Constant: +0:93 0 (const int) +0:93 move second child to first child (temp uint) +0:93 'HeightU' (temp uint) +0:93 direct index (temp uint) +0:93 'sizeQueryTemp' (temp 2-component vector of uint) +0:93 Constant: +0:93 1 (const int) +0:94 Sequence +0:94 move second child to first child (temp 2-component vector of uint) +0:94 'sizeQueryTemp' (temp 2-component vector of uint) +0:94 textureSize (temp 2-component vector of uint) +0:94 'g_tTex2di4' (uniform itexture2D) +0:94 Constant: +0:94 6 (const uint) +0:94 move second child to first child (temp uint) +0:94 'WidthU' (temp uint) +0:94 direct index (temp uint) +0:94 'sizeQueryTemp' (temp 2-component vector of uint) +0:94 Constant: +0:94 0 (const int) +0:94 move second child to first child (temp uint) +0:94 'HeightU' (temp uint) +0:94 direct index (temp uint) +0:94 'sizeQueryTemp' (temp 2-component vector of uint) +0:94 Constant: +0:94 1 (const int) +0:94 move second child to first child (temp uint) +0:94 'NumberOfLevelsU' (temp uint) +0:94 textureQueryLevels (temp uint) +0:94 'g_tTex2di4' (uniform itexture2D) +0:97 Sequence +0:97 move second child to first child (temp 2-component vector of uint) +0:97 'sizeQueryTemp' (temp 2-component vector of uint) +0:97 textureSize (temp 2-component vector of uint) +0:97 'g_tTex2du4' (uniform utexture2D) +0:97 move second child to first child (temp uint) +0:97 'WidthU' (temp uint) +0:97 direct index (temp uint) +0:97 'sizeQueryTemp' (temp 2-component vector of uint) +0:97 Constant: +0:97 0 (const int) +0:97 move second child to first child (temp uint) +0:97 'HeightU' (temp uint) +0:97 direct index (temp uint) +0:97 'sizeQueryTemp' (temp 2-component vector of uint) +0:97 Constant: +0:97 1 (const int) +0:98 Sequence +0:98 move second child to first child (temp 2-component vector of uint) +0:98 'sizeQueryTemp' (temp 2-component vector of uint) +0:98 textureSize (temp 2-component vector of uint) +0:98 'g_tTex2du4' (uniform utexture2D) +0:98 Constant: +0:98 6 (const uint) +0:98 move second child to first child (temp uint) +0:98 'WidthU' (temp uint) +0:98 direct index (temp uint) +0:98 'sizeQueryTemp' (temp 2-component vector of uint) +0:98 Constant: +0:98 0 (const int) +0:98 move second child to first child (temp uint) +0:98 'HeightU' (temp uint) +0:98 direct index (temp uint) +0:98 'sizeQueryTemp' (temp 2-component vector of uint) +0:98 Constant: +0:98 1 (const int) +0:98 move second child to first child (temp uint) +0:98 'NumberOfLevelsU' (temp uint) +0:98 textureQueryLevels (temp uint) +0:98 'g_tTex2du4' (uniform utexture2D) +0:101 Sequence +0:101 move second child to first child (temp 3-component vector of uint) +0:101 'sizeQueryTemp' (temp 3-component vector of uint) +0:101 textureSize (temp 3-component vector of uint) +0:101 'g_tTex2df4a' (uniform texture2DArray) +0:101 move second child to first child (temp uint) +0:101 'WidthU' (temp uint) +0:101 direct index (temp uint) +0:101 'sizeQueryTemp' (temp 3-component vector of uint) +0:101 Constant: +0:101 0 (const int) +0:101 move second child to first child (temp uint) +0:101 'HeightU' (temp uint) +0:101 direct index (temp uint) +0:101 'sizeQueryTemp' (temp 3-component vector of uint) +0:101 Constant: +0:101 1 (const int) +0:101 move second child to first child (temp uint) +0:101 'ElementsU' (temp uint) +0:101 direct index (temp uint) +0:101 'sizeQueryTemp' (temp 3-component vector of uint) +0:101 Constant: +0:101 2 (const int) +0:102 Sequence +0:102 move second child to first child (temp 3-component vector of uint) +0:102 'sizeQueryTemp' (temp 3-component vector of uint) +0:102 textureSize (temp 3-component vector of uint) +0:102 'g_tTex2df4a' (uniform texture2DArray) +0:102 Constant: +0:102 6 (const uint) +0:102 move second child to first child (temp uint) +0:102 'WidthU' (temp uint) +0:102 direct index (temp uint) +0:102 'sizeQueryTemp' (temp 3-component vector of uint) +0:102 Constant: +0:102 0 (const int) +0:102 move second child to first child (temp uint) +0:102 'HeightU' (temp uint) +0:102 direct index (temp uint) +0:102 'sizeQueryTemp' (temp 3-component vector of uint) +0:102 Constant: +0:102 1 (const int) +0:102 move second child to first child (temp uint) +0:102 'ElementsU' (temp uint) +0:102 direct index (temp uint) +0:102 'sizeQueryTemp' (temp 3-component vector of uint) +0:102 Constant: +0:102 2 (const int) +0:102 move second child to first child (temp uint) +0:102 'NumberOfLevelsU' (temp uint) +0:102 textureQueryLevels (temp uint) +0:102 'g_tTex2df4a' (uniform texture2DArray) +0:105 Sequence +0:105 move second child to first child (temp 3-component vector of uint) +0:105 'sizeQueryTemp' (temp 3-component vector of uint) +0:105 textureSize (temp 3-component vector of uint) +0:105 'g_tTex2di4a' (uniform itexture2DArray) +0:105 move second child to first child (temp uint) +0:105 'WidthU' (temp uint) +0:105 direct index (temp uint) +0:105 'sizeQueryTemp' (temp 3-component vector of uint) +0:105 Constant: +0:105 0 (const int) +0:105 move second child to first child (temp uint) +0:105 'HeightU' (temp uint) +0:105 direct index (temp uint) +0:105 'sizeQueryTemp' (temp 3-component vector of uint) +0:105 Constant: +0:105 1 (const int) +0:105 move second child to first child (temp uint) +0:105 'ElementsU' (temp uint) +0:105 direct index (temp uint) +0:105 'sizeQueryTemp' (temp 3-component vector of uint) +0:105 Constant: +0:105 2 (const int) +0:106 Sequence +0:106 move second child to first child (temp 3-component vector of uint) +0:106 'sizeQueryTemp' (temp 3-component vector of uint) +0:106 textureSize (temp 3-component vector of uint) +0:106 'g_tTex2di4a' (uniform itexture2DArray) +0:106 Constant: +0:106 6 (const uint) +0:106 move second child to first child (temp uint) +0:106 'WidthU' (temp uint) +0:106 direct index (temp uint) +0:106 'sizeQueryTemp' (temp 3-component vector of uint) +0:106 Constant: +0:106 0 (const int) +0:106 move second child to first child (temp uint) +0:106 'HeightU' (temp uint) +0:106 direct index (temp uint) +0:106 'sizeQueryTemp' (temp 3-component vector of uint) +0:106 Constant: +0:106 1 (const int) +0:106 move second child to first child (temp uint) +0:106 'ElementsU' (temp uint) +0:106 direct index (temp uint) +0:106 'sizeQueryTemp' (temp 3-component vector of uint) +0:106 Constant: +0:106 2 (const int) +0:106 move second child to first child (temp uint) +0:106 'NumberOfLevelsU' (temp uint) +0:106 textureQueryLevels (temp uint) +0:106 'g_tTex2di4a' (uniform itexture2DArray) +0:109 Sequence +0:109 move second child to first child (temp 3-component vector of uint) +0:109 'sizeQueryTemp' (temp 3-component vector of uint) +0:109 textureSize (temp 3-component vector of uint) +0:109 'g_tTex2du4a' (uniform utexture2DArray) +0:109 move second child to first child (temp uint) +0:109 'WidthU' (temp uint) +0:109 direct index (temp uint) +0:109 'sizeQueryTemp' (temp 3-component vector of uint) +0:109 Constant: +0:109 0 (const int) +0:109 move second child to first child (temp uint) +0:109 'HeightU' (temp uint) +0:109 direct index (temp uint) +0:109 'sizeQueryTemp' (temp 3-component vector of uint) +0:109 Constant: +0:109 1 (const int) +0:109 move second child to first child (temp uint) +0:109 'ElementsU' (temp uint) +0:109 direct index (temp uint) +0:109 'sizeQueryTemp' (temp 3-component vector of uint) +0:109 Constant: +0:109 2 (const int) +0:110 Sequence +0:110 move second child to first child (temp 3-component vector of uint) +0:110 'sizeQueryTemp' (temp 3-component vector of uint) +0:110 textureSize (temp 3-component vector of uint) +0:110 'g_tTex2du4a' (uniform utexture2DArray) +0:110 Constant: +0:110 6 (const uint) +0:110 move second child to first child (temp uint) +0:110 'WidthU' (temp uint) +0:110 direct index (temp uint) +0:110 'sizeQueryTemp' (temp 3-component vector of uint) +0:110 Constant: +0:110 0 (const int) +0:110 move second child to first child (temp uint) +0:110 'HeightU' (temp uint) +0:110 direct index (temp uint) +0:110 'sizeQueryTemp' (temp 3-component vector of uint) +0:110 Constant: +0:110 1 (const int) +0:110 move second child to first child (temp uint) +0:110 'ElementsU' (temp uint) +0:110 direct index (temp uint) +0:110 'sizeQueryTemp' (temp 3-component vector of uint) +0:110 Constant: +0:110 2 (const int) +0:110 move second child to first child (temp uint) +0:110 'NumberOfLevelsU' (temp uint) +0:110 textureQueryLevels (temp uint) +0:110 'g_tTex2du4a' (uniform utexture2DArray) +0:113 Sequence +0:113 move second child to first child (temp 3-component vector of uint) +0:113 'sizeQueryTemp' (temp 3-component vector of uint) +0:113 textureSize (temp 3-component vector of uint) +0:113 'g_tTex3df4' (uniform texture3D) +0:113 move second child to first child (temp uint) +0:113 'WidthU' (temp uint) +0:113 direct index (temp uint) +0:113 'sizeQueryTemp' (temp 3-component vector of uint) +0:113 Constant: +0:113 0 (const int) +0:113 move second child to first child (temp uint) +0:113 'HeightU' (temp uint) +0:113 direct index (temp uint) +0:113 'sizeQueryTemp' (temp 3-component vector of uint) +0:113 Constant: +0:113 1 (const int) +0:113 move second child to first child (temp uint) +0:113 'DepthU' (temp uint) +0:113 direct index (temp uint) +0:113 'sizeQueryTemp' (temp 3-component vector of uint) +0:113 Constant: +0:113 2 (const int) +0:114 Sequence +0:114 move second child to first child (temp 3-component vector of uint) +0:114 'sizeQueryTemp' (temp 3-component vector of uint) +0:114 textureSize (temp 3-component vector of uint) +0:114 'g_tTex3df4' (uniform texture3D) +0:114 Constant: +0:114 6 (const uint) +0:114 move second child to first child (temp uint) +0:114 'WidthU' (temp uint) +0:114 direct index (temp uint) +0:114 'sizeQueryTemp' (temp 3-component vector of uint) +0:114 Constant: +0:114 0 (const int) +0:114 move second child to first child (temp uint) +0:114 'HeightU' (temp uint) +0:114 direct index (temp uint) +0:114 'sizeQueryTemp' (temp 3-component vector of uint) +0:114 Constant: +0:114 1 (const int) +0:114 move second child to first child (temp uint) +0:114 'DepthU' (temp uint) +0:114 direct index (temp uint) +0:114 'sizeQueryTemp' (temp 3-component vector of uint) +0:114 Constant: +0:114 2 (const int) +0:114 move second child to first child (temp uint) +0:114 'NumberOfLevelsU' (temp uint) +0:114 textureQueryLevels (temp uint) +0:114 'g_tTex3df4' (uniform texture3D) +0:117 Sequence +0:117 move second child to first child (temp 3-component vector of uint) +0:117 'sizeQueryTemp' (temp 3-component vector of uint) +0:117 textureSize (temp 3-component vector of uint) +0:117 'g_tTex3di4' (uniform itexture3D) +0:117 move second child to first child (temp uint) +0:117 'WidthU' (temp uint) +0:117 direct index (temp uint) +0:117 'sizeQueryTemp' (temp 3-component vector of uint) +0:117 Constant: +0:117 0 (const int) +0:117 move second child to first child (temp uint) +0:117 'HeightU' (temp uint) +0:117 direct index (temp uint) +0:117 'sizeQueryTemp' (temp 3-component vector of uint) +0:117 Constant: +0:117 1 (const int) +0:117 move second child to first child (temp uint) +0:117 'DepthU' (temp uint) +0:117 direct index (temp uint) +0:117 'sizeQueryTemp' (temp 3-component vector of uint) +0:117 Constant: +0:117 2 (const int) +0:118 Sequence +0:118 move second child to first child (temp 3-component vector of uint) +0:118 'sizeQueryTemp' (temp 3-component vector of uint) +0:118 textureSize (temp 3-component vector of uint) +0:118 'g_tTex3di4' (uniform itexture3D) +0:118 Constant: +0:118 6 (const uint) +0:118 move second child to first child (temp uint) +0:118 'WidthU' (temp uint) +0:118 direct index (temp uint) +0:118 'sizeQueryTemp' (temp 3-component vector of uint) +0:118 Constant: +0:118 0 (const int) +0:118 move second child to first child (temp uint) +0:118 'HeightU' (temp uint) +0:118 direct index (temp uint) +0:118 'sizeQueryTemp' (temp 3-component vector of uint) +0:118 Constant: +0:118 1 (const int) +0:118 move second child to first child (temp uint) +0:118 'DepthU' (temp uint) +0:118 direct index (temp uint) +0:118 'sizeQueryTemp' (temp 3-component vector of uint) +0:118 Constant: +0:118 2 (const int) +0:118 move second child to first child (temp uint) +0:118 'NumberOfLevelsU' (temp uint) +0:118 textureQueryLevels (temp uint) +0:118 'g_tTex3di4' (uniform itexture3D) +0:121 Sequence +0:121 move second child to first child (temp 3-component vector of uint) +0:121 'sizeQueryTemp' (temp 3-component vector of uint) +0:121 textureSize (temp 3-component vector of uint) +0:121 'g_tTex3du4' (uniform utexture3D) +0:121 move second child to first child (temp uint) +0:121 'WidthU' (temp uint) +0:121 direct index (temp uint) +0:121 'sizeQueryTemp' (temp 3-component vector of uint) +0:121 Constant: +0:121 0 (const int) +0:121 move second child to first child (temp uint) +0:121 'HeightU' (temp uint) +0:121 direct index (temp uint) +0:121 'sizeQueryTemp' (temp 3-component vector of uint) +0:121 Constant: +0:121 1 (const int) +0:121 move second child to first child (temp uint) +0:121 'DepthU' (temp uint) +0:121 direct index (temp uint) +0:121 'sizeQueryTemp' (temp 3-component vector of uint) +0:121 Constant: +0:121 2 (const int) +0:122 Sequence +0:122 move second child to first child (temp 3-component vector of uint) +0:122 'sizeQueryTemp' (temp 3-component vector of uint) +0:122 textureSize (temp 3-component vector of uint) +0:122 'g_tTex3du4' (uniform utexture3D) +0:122 Constant: +0:122 6 (const uint) +0:122 move second child to first child (temp uint) +0:122 'WidthU' (temp uint) +0:122 direct index (temp uint) +0:122 'sizeQueryTemp' (temp 3-component vector of uint) +0:122 Constant: +0:122 0 (const int) +0:122 move second child to first child (temp uint) +0:122 'HeightU' (temp uint) +0:122 direct index (temp uint) +0:122 'sizeQueryTemp' (temp 3-component vector of uint) +0:122 Constant: +0:122 1 (const int) +0:122 move second child to first child (temp uint) +0:122 'DepthU' (temp uint) +0:122 direct index (temp uint) +0:122 'sizeQueryTemp' (temp 3-component vector of uint) +0:122 Constant: +0:122 2 (const int) +0:122 move second child to first child (temp uint) +0:122 'NumberOfLevelsU' (temp uint) +0:122 textureQueryLevels (temp uint) +0:122 'g_tTex3du4' (uniform utexture3D) +0:125 Sequence +0:125 move second child to first child (temp 2-component vector of uint) +0:125 'sizeQueryTemp' (temp 2-component vector of uint) +0:125 textureSize (temp 2-component vector of uint) +0:125 'g_tTexcdf4' (uniform textureCube) +0:125 move second child to first child (temp uint) +0:125 'WidthU' (temp uint) +0:125 direct index (temp uint) +0:125 'sizeQueryTemp' (temp 2-component vector of uint) +0:125 Constant: +0:125 0 (const int) +0:125 move second child to first child (temp uint) +0:125 'HeightU' (temp uint) +0:125 direct index (temp uint) +0:125 'sizeQueryTemp' (temp 2-component vector of uint) +0:125 Constant: +0:125 1 (const int) +0:126 Sequence +0:126 move second child to first child (temp 2-component vector of uint) +0:126 'sizeQueryTemp' (temp 2-component vector of uint) +0:126 textureSize (temp 2-component vector of uint) +0:126 'g_tTexcdf4' (uniform textureCube) +0:126 Constant: +0:126 6 (const uint) +0:126 move second child to first child (temp uint) +0:126 'WidthU' (temp uint) +0:126 direct index (temp uint) +0:126 'sizeQueryTemp' (temp 2-component vector of uint) +0:126 Constant: +0:126 0 (const int) +0:126 move second child to first child (temp uint) +0:126 'HeightU' (temp uint) +0:126 direct index (temp uint) +0:126 'sizeQueryTemp' (temp 2-component vector of uint) +0:126 Constant: +0:126 1 (const int) +0:126 move second child to first child (temp uint) +0:126 'NumberOfLevelsU' (temp uint) +0:126 textureQueryLevels (temp uint) +0:126 'g_tTexcdf4' (uniform textureCube) +0:129 Sequence +0:129 move second child to first child (temp 2-component vector of uint) +0:129 'sizeQueryTemp' (temp 2-component vector of uint) +0:129 textureSize (temp 2-component vector of uint) +0:129 'g_tTexcdi4' (uniform itextureCube) +0:129 move second child to first child (temp uint) +0:129 'WidthU' (temp uint) +0:129 direct index (temp uint) +0:129 'sizeQueryTemp' (temp 2-component vector of uint) +0:129 Constant: +0:129 0 (const int) +0:129 move second child to first child (temp uint) +0:129 'HeightU' (temp uint) +0:129 direct index (temp uint) +0:129 'sizeQueryTemp' (temp 2-component vector of uint) +0:129 Constant: +0:129 1 (const int) +0:130 Sequence +0:130 move second child to first child (temp 2-component vector of uint) +0:130 'sizeQueryTemp' (temp 2-component vector of uint) +0:130 textureSize (temp 2-component vector of uint) +0:130 'g_tTexcdi4' (uniform itextureCube) +0:130 Constant: +0:130 6 (const uint) +0:130 move second child to first child (temp uint) +0:130 'WidthU' (temp uint) +0:130 direct index (temp uint) +0:130 'sizeQueryTemp' (temp 2-component vector of uint) +0:130 Constant: +0:130 0 (const int) +0:130 move second child to first child (temp uint) +0:130 'HeightU' (temp uint) +0:130 direct index (temp uint) +0:130 'sizeQueryTemp' (temp 2-component vector of uint) +0:130 Constant: +0:130 1 (const int) +0:130 move second child to first child (temp uint) +0:130 'NumberOfLevelsU' (temp uint) +0:130 textureQueryLevels (temp uint) +0:130 'g_tTexcdi4' (uniform itextureCube) +0:133 Sequence +0:133 move second child to first child (temp 2-component vector of uint) +0:133 'sizeQueryTemp' (temp 2-component vector of uint) +0:133 textureSize (temp 2-component vector of uint) +0:133 'g_tTexcdu4' (uniform utextureCube) +0:133 move second child to first child (temp uint) +0:133 'WidthU' (temp uint) +0:133 direct index (temp uint) +0:133 'sizeQueryTemp' (temp 2-component vector of uint) +0:133 Constant: +0:133 0 (const int) +0:133 move second child to first child (temp uint) +0:133 'HeightU' (temp uint) +0:133 direct index (temp uint) +0:133 'sizeQueryTemp' (temp 2-component vector of uint) +0:133 Constant: +0:133 1 (const int) +0:134 Sequence +0:134 move second child to first child (temp 2-component vector of uint) +0:134 'sizeQueryTemp' (temp 2-component vector of uint) +0:134 textureSize (temp 2-component vector of uint) +0:134 'g_tTexcdu4' (uniform utextureCube) +0:134 Constant: +0:134 6 (const uint) +0:134 move second child to first child (temp uint) +0:134 'WidthU' (temp uint) +0:134 direct index (temp uint) +0:134 'sizeQueryTemp' (temp 2-component vector of uint) +0:134 Constant: +0:134 0 (const int) +0:134 move second child to first child (temp uint) +0:134 'HeightU' (temp uint) +0:134 direct index (temp uint) +0:134 'sizeQueryTemp' (temp 2-component vector of uint) +0:134 Constant: +0:134 1 (const int) +0:134 move second child to first child (temp uint) +0:134 'NumberOfLevelsU' (temp uint) +0:134 textureQueryLevels (temp uint) +0:134 'g_tTexcdu4' (uniform utextureCube) +0:137 Sequence +0:137 move second child to first child (temp 3-component vector of uint) +0:137 'sizeQueryTemp' (temp 3-component vector of uint) +0:137 textureSize (temp 3-component vector of uint) +0:137 'g_tTexcdf4a' (uniform textureCubeArray) +0:137 move second child to first child (temp uint) +0:137 'WidthU' (temp uint) +0:137 direct index (temp uint) +0:137 'sizeQueryTemp' (temp 3-component vector of uint) +0:137 Constant: +0:137 0 (const int) +0:137 move second child to first child (temp uint) +0:137 'HeightU' (temp uint) +0:137 direct index (temp uint) +0:137 'sizeQueryTemp' (temp 3-component vector of uint) +0:137 Constant: +0:137 1 (const int) +0:137 move second child to first child (temp uint) +0:137 'ElementsU' (temp uint) +0:137 direct index (temp uint) +0:137 'sizeQueryTemp' (temp 3-component vector of uint) +0:137 Constant: +0:137 2 (const int) +0:138 Sequence +0:138 move second child to first child (temp 3-component vector of uint) +0:138 'sizeQueryTemp' (temp 3-component vector of uint) +0:138 textureSize (temp 3-component vector of uint) +0:138 'g_tTexcdf4a' (uniform textureCubeArray) +0:138 Constant: +0:138 6 (const uint) +0:138 move second child to first child (temp uint) +0:138 'WidthU' (temp uint) +0:138 direct index (temp uint) +0:138 'sizeQueryTemp' (temp 3-component vector of uint) +0:138 Constant: +0:138 0 (const int) +0:138 move second child to first child (temp uint) +0:138 'HeightU' (temp uint) +0:138 direct index (temp uint) +0:138 'sizeQueryTemp' (temp 3-component vector of uint) +0:138 Constant: +0:138 1 (const int) +0:138 move second child to first child (temp uint) +0:138 'ElementsU' (temp uint) +0:138 direct index (temp uint) +0:138 'sizeQueryTemp' (temp 3-component vector of uint) +0:138 Constant: +0:138 2 (const int) +0:138 move second child to first child (temp uint) +0:138 'NumberOfLevelsU' (temp uint) +0:138 textureQueryLevels (temp uint) +0:138 'g_tTexcdf4a' (uniform textureCubeArray) +0:141 Sequence +0:141 move second child to first child (temp 3-component vector of uint) +0:141 'sizeQueryTemp' (temp 3-component vector of uint) +0:141 textureSize (temp 3-component vector of uint) +0:141 'g_tTexcdi4a' (uniform itextureCubeArray) +0:141 move second child to first child (temp uint) +0:141 'WidthU' (temp uint) +0:141 direct index (temp uint) +0:141 'sizeQueryTemp' (temp 3-component vector of uint) +0:141 Constant: +0:141 0 (const int) +0:141 move second child to first child (temp uint) +0:141 'HeightU' (temp uint) +0:141 direct index (temp uint) +0:141 'sizeQueryTemp' (temp 3-component vector of uint) +0:141 Constant: +0:141 1 (const int) +0:141 move second child to first child (temp uint) +0:141 'ElementsU' (temp uint) +0:141 direct index (temp uint) +0:141 'sizeQueryTemp' (temp 3-component vector of uint) +0:141 Constant: +0:141 2 (const int) +0:142 Sequence +0:142 move second child to first child (temp 3-component vector of uint) +0:142 'sizeQueryTemp' (temp 3-component vector of uint) +0:142 textureSize (temp 3-component vector of uint) +0:142 'g_tTexcdi4a' (uniform itextureCubeArray) +0:142 Constant: +0:142 6 (const uint) +0:142 move second child to first child (temp uint) +0:142 'WidthU' (temp uint) +0:142 direct index (temp uint) +0:142 'sizeQueryTemp' (temp 3-component vector of uint) +0:142 Constant: +0:142 0 (const int) +0:142 move second child to first child (temp uint) +0:142 'HeightU' (temp uint) +0:142 direct index (temp uint) +0:142 'sizeQueryTemp' (temp 3-component vector of uint) +0:142 Constant: +0:142 1 (const int) +0:142 move second child to first child (temp uint) +0:142 'ElementsU' (temp uint) +0:142 direct index (temp uint) +0:142 'sizeQueryTemp' (temp 3-component vector of uint) +0:142 Constant: +0:142 2 (const int) +0:142 move second child to first child (temp uint) +0:142 'NumberOfLevelsU' (temp uint) +0:142 textureQueryLevels (temp uint) +0:142 'g_tTexcdi4a' (uniform itextureCubeArray) +0:145 Sequence +0:145 move second child to first child (temp 3-component vector of uint) +0:145 'sizeQueryTemp' (temp 3-component vector of uint) +0:145 textureSize (temp 3-component vector of uint) +0:145 'g_tTexcdu4a' (uniform utextureCubeArray) +0:145 move second child to first child (temp uint) +0:145 'WidthU' (temp uint) +0:145 direct index (temp uint) +0:145 'sizeQueryTemp' (temp 3-component vector of uint) +0:145 Constant: +0:145 0 (const int) +0:145 move second child to first child (temp uint) +0:145 'HeightU' (temp uint) +0:145 direct index (temp uint) +0:145 'sizeQueryTemp' (temp 3-component vector of uint) +0:145 Constant: +0:145 1 (const int) +0:145 move second child to first child (temp uint) +0:145 'ElementsU' (temp uint) +0:145 direct index (temp uint) +0:145 'sizeQueryTemp' (temp 3-component vector of uint) +0:145 Constant: +0:145 2 (const int) +0:146 Sequence +0:146 move second child to first child (temp 3-component vector of uint) +0:146 'sizeQueryTemp' (temp 3-component vector of uint) +0:146 textureSize (temp 3-component vector of uint) +0:146 'g_tTexcdu4a' (uniform utextureCubeArray) +0:146 Constant: +0:146 6 (const uint) +0:146 move second child to first child (temp uint) +0:146 'WidthU' (temp uint) +0:146 direct index (temp uint) +0:146 'sizeQueryTemp' (temp 3-component vector of uint) +0:146 Constant: +0:146 0 (const int) +0:146 move second child to first child (temp uint) +0:146 'HeightU' (temp uint) +0:146 direct index (temp uint) +0:146 'sizeQueryTemp' (temp 3-component vector of uint) +0:146 Constant: +0:146 1 (const int) +0:146 move second child to first child (temp uint) +0:146 'ElementsU' (temp uint) +0:146 direct index (temp uint) +0:146 'sizeQueryTemp' (temp 3-component vector of uint) +0:146 Constant: +0:146 2 (const int) +0:146 move second child to first child (temp uint) +0:146 'NumberOfLevelsU' (temp uint) +0:146 textureQueryLevels (temp uint) +0:146 'g_tTexcdu4a' (uniform utextureCubeArray) +0:149 Sequence +0:149 move second child to first child (temp 2-component vector of uint) +0:149 'sizeQueryTemp' (temp 2-component vector of uint) +0:149 textureSize (temp 2-component vector of uint) +0:149 'g_tTex2dmsf4' (uniform texture2DMS) +0:149 move second child to first child (temp uint) +0:149 'WidthU' (temp uint) +0:149 direct index (temp uint) +0:149 'sizeQueryTemp' (temp 2-component vector of uint) +0:149 Constant: +0:149 0 (const int) +0:149 move second child to first child (temp uint) +0:149 'HeightU' (temp uint) +0:149 direct index (temp uint) +0:149 'sizeQueryTemp' (temp 2-component vector of uint) +0:149 Constant: +0:149 1 (const int) +0:149 move second child to first child (temp uint) +0:149 'NumberOfSamplesU' (temp uint) +0:149 imageQuerySamples (temp uint) +0:149 'g_tTex2dmsf4' (uniform texture2DMS) +0:152 Sequence +0:152 move second child to first child (temp 2-component vector of uint) +0:152 'sizeQueryTemp' (temp 2-component vector of uint) +0:152 textureSize (temp 2-component vector of uint) +0:152 'g_tTex2dmsi4' (uniform itexture2DMS) +0:152 move second child to first child (temp uint) +0:152 'WidthU' (temp uint) +0:152 direct index (temp uint) +0:152 'sizeQueryTemp' (temp 2-component vector of uint) +0:152 Constant: +0:152 0 (const int) +0:152 move second child to first child (temp uint) +0:152 'HeightU' (temp uint) +0:152 direct index (temp uint) +0:152 'sizeQueryTemp' (temp 2-component vector of uint) +0:152 Constant: +0:152 1 (const int) +0:152 move second child to first child (temp uint) +0:152 'NumberOfSamplesU' (temp uint) +0:152 imageQuerySamples (temp uint) +0:152 'g_tTex2dmsi4' (uniform itexture2DMS) +0:155 Sequence +0:155 move second child to first child (temp 2-component vector of uint) +0:155 'sizeQueryTemp' (temp 2-component vector of uint) +0:155 textureSize (temp 2-component vector of uint) +0:155 'g_tTex2dmsu4' (uniform utexture2DMS) +0:155 move second child to first child (temp uint) +0:155 'WidthU' (temp uint) +0:155 direct index (temp uint) +0:155 'sizeQueryTemp' (temp 2-component vector of uint) +0:155 Constant: +0:155 0 (const int) +0:155 move second child to first child (temp uint) +0:155 'HeightU' (temp uint) +0:155 direct index (temp uint) +0:155 'sizeQueryTemp' (temp 2-component vector of uint) +0:155 Constant: +0:155 1 (const int) +0:155 move second child to first child (temp uint) +0:155 'NumberOfSamplesU' (temp uint) +0:155 imageQuerySamples (temp uint) +0:155 'g_tTex2dmsu4' (uniform utexture2DMS) +0:158 Sequence +0:158 move second child to first child (temp 3-component vector of uint) +0:158 'sizeQueryTemp' (temp 3-component vector of uint) +0:158 textureSize (temp 3-component vector of uint) +0:158 'g_tTex2dmsf4a' (uniform texture2DMSArray) +0:158 move second child to first child (temp uint) +0:158 'WidthU' (temp uint) +0:158 direct index (temp uint) +0:158 'sizeQueryTemp' (temp 3-component vector of uint) +0:158 Constant: +0:158 0 (const int) +0:158 move second child to first child (temp uint) +0:158 'HeightU' (temp uint) +0:158 direct index (temp uint) +0:158 'sizeQueryTemp' (temp 3-component vector of uint) +0:158 Constant: +0:158 1 (const int) +0:158 move second child to first child (temp uint) +0:158 'ElementsU' (temp uint) +0:158 direct index (temp uint) +0:158 'sizeQueryTemp' (temp 3-component vector of uint) +0:158 Constant: +0:158 2 (const int) +0:158 move second child to first child (temp uint) +0:158 'NumberOfSamplesU' (temp uint) +0:158 imageQuerySamples (temp uint) +0:158 'g_tTex2dmsf4a' (uniform texture2DMSArray) +0:161 Sequence +0:161 move second child to first child (temp 3-component vector of uint) +0:161 'sizeQueryTemp' (temp 3-component vector of uint) +0:161 textureSize (temp 3-component vector of uint) +0:161 'g_tTex2dmsi4a' (uniform itexture2DMSArray) +0:161 move second child to first child (temp uint) +0:161 'WidthU' (temp uint) +0:161 direct index (temp uint) +0:161 'sizeQueryTemp' (temp 3-component vector of uint) +0:161 Constant: +0:161 0 (const int) +0:161 move second child to first child (temp uint) +0:161 'HeightU' (temp uint) +0:161 direct index (temp uint) +0:161 'sizeQueryTemp' (temp 3-component vector of uint) +0:161 Constant: +0:161 1 (const int) +0:161 move second child to first child (temp uint) +0:161 'ElementsU' (temp uint) +0:161 direct index (temp uint) +0:161 'sizeQueryTemp' (temp 3-component vector of uint) +0:161 Constant: +0:161 2 (const int) +0:161 move second child to first child (temp uint) +0:161 'NumberOfSamplesU' (temp uint) +0:161 imageQuerySamples (temp uint) +0:161 'g_tTex2dmsi4a' (uniform itexture2DMSArray) +0:164 Sequence +0:164 move second child to first child (temp 3-component vector of uint) +0:164 'sizeQueryTemp' (temp 3-component vector of uint) +0:164 textureSize (temp 3-component vector of uint) +0:164 'g_tTex2dmsu4a' (uniform utexture2DMSArray) +0:164 move second child to first child (temp uint) +0:164 'WidthU' (temp uint) +0:164 direct index (temp uint) +0:164 'sizeQueryTemp' (temp 3-component vector of uint) +0:164 Constant: +0:164 0 (const int) +0:164 move second child to first child (temp uint) +0:164 'HeightU' (temp uint) +0:164 direct index (temp uint) +0:164 'sizeQueryTemp' (temp 3-component vector of uint) +0:164 Constant: +0:164 1 (const int) +0:164 move second child to first child (temp uint) +0:164 'ElementsU' (temp uint) +0:164 direct index (temp uint) +0:164 'sizeQueryTemp' (temp 3-component vector of uint) +0:164 Constant: +0:164 2 (const int) +0:164 move second child to first child (temp uint) +0:164 'NumberOfSamplesU' (temp uint) +0:164 imageQuerySamples (temp uint) +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 Depth}) +0:276 Constant: +0:276 0 (const int) +0:276 Constant: +0:276 1.000000 +0:276 1.000000 +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) +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 Sequence +0:279 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +0:? 'g_tTexcdf4a' (uniform textureCubeArray) +0:? 'g_tTexcdi4a' (uniform itextureCubeArray) +0:? 'g_tTexcdu4a' (uniform utextureCubeArray) +0:? 'g_tTex2dmsf4' (uniform texture2DMS) +0:? 'g_tTex2dmsi4' (uniform itexture2DMS) +0:? 'g_tTex2dmsu4' (uniform utexture2DMS) +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 545 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + Capability ImageMSArray + Capability ImageQuery + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 534 538 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "sizeQueryTemp" + Name 12 "g_tTex1df4" + Name 16 "WidthU" + Name 18 "sizeQueryTemp" + Name 23 "NumberOfLevelsU" + Name 26 "sizeQueryTemp" + Name 29 "g_tTex1di4" + Name 33 "sizeQueryTemp" + Name 39 "sizeQueryTemp" + Name 42 "g_tTex1du4" + Name 46 "sizeQueryTemp" + Name 54 "sizeQueryTemp" + Name 57 "g_tTex1df4a" + Name 64 "ElementsU" + Name 68 "sizeQueryTemp" + Name 77 "sizeQueryTemp" + Name 80 "g_tTex1di4a" + Name 87 "sizeQueryTemp" + Name 96 "sizeQueryTemp" + Name 99 "g_tTex1du4a" + Name 106 "sizeQueryTemp" + Name 115 "sizeQueryTemp" + Name 118 "g_tTex2df4" + Name 123 "HeightU" + Name 126 "sizeQueryTemp" + Name 135 "sizeQueryTemp" + Name 138 "g_tTex2di4" + Name 145 "sizeQueryTemp" + Name 154 "sizeQueryTemp" + Name 157 "g_tTex2du4" + Name 164 "sizeQueryTemp" + Name 175 "sizeQueryTemp" + Name 178 "g_tTex2df4a" + Name 189 "sizeQueryTemp" + Name 200 "sizeQueryTemp" + Name 203 "g_tTex2di4a" + Name 212 "sizeQueryTemp" + Name 223 "sizeQueryTemp" + Name 226 "g_tTex2du4a" + Name 235 "sizeQueryTemp" + Name 246 "sizeQueryTemp" + Name 249 "g_tTex3df4" + Name 256 "DepthU" + Name 259 "sizeQueryTemp" + Name 270 "sizeQueryTemp" + Name 273 "g_tTex3di4" + Name 282 "sizeQueryTemp" + Name 293 "sizeQueryTemp" + Name 296 "g_tTex3du4" + Name 305 "sizeQueryTemp" + Name 316 "sizeQueryTemp" + Name 319 "g_tTexcdf4" + Name 326 "sizeQueryTemp" + Name 335 "sizeQueryTemp" + Name 338 "g_tTexcdi4" + Name 345 "sizeQueryTemp" + Name 354 "sizeQueryTemp" + Name 357 "g_tTexcdu4" + Name 364 "sizeQueryTemp" + Name 373 "sizeQueryTemp" + Name 376 "g_tTexcdf4a" + Name 385 "sizeQueryTemp" + Name 396 "sizeQueryTemp" + Name 399 "g_tTexcdi4a" + Name 408 "sizeQueryTemp" + Name 419 "sizeQueryTemp" + Name 422 "g_tTexcdu4a" + Name 431 "sizeQueryTemp" + Name 442 "sizeQueryTemp" + Name 445 "g_tTex2dmsf4" + Name 452 "NumberOfSamplesU" + Name 455 "sizeQueryTemp" + Name 458 "g_tTex2dmsi4" + Name 467 "sizeQueryTemp" + Name 470 "g_tTex2dmsu4" + Name 479 "sizeQueryTemp" + Name 482 "g_tTex2dmsf4a" + Name 493 "sizeQueryTemp" + Name 496 "g_tTex2dmsi4a" + Name 507 "sizeQueryTemp" + Name 510 "g_tTex2dmsu4a" + Name 522 "PS_OUTPUT" + MemberName 522(PS_OUTPUT) 0 "Color" + MemberName 522(PS_OUTPUT) 1 "Depth" + Name 524 "psout" + 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 + Decorate 42(g_tTex1du4) DescriptorSet 0 + Decorate 57(g_tTex1df4a) DescriptorSet 0 + Decorate 80(g_tTex1di4a) DescriptorSet 0 + Decorate 99(g_tTex1du4a) DescriptorSet 0 + Decorate 118(g_tTex2df4) DescriptorSet 0 + Decorate 138(g_tTex2di4) DescriptorSet 0 + Decorate 157(g_tTex2du4) DescriptorSet 0 + Decorate 178(g_tTex2df4a) DescriptorSet 0 + Decorate 203(g_tTex2di4a) DescriptorSet 0 + Decorate 226(g_tTex2du4a) DescriptorSet 0 + Decorate 249(g_tTex3df4) DescriptorSet 0 + Decorate 273(g_tTex3di4) DescriptorSet 0 + Decorate 296(g_tTex3du4) DescriptorSet 0 + Decorate 319(g_tTexcdf4) DescriptorSet 0 + Decorate 338(g_tTexcdi4) DescriptorSet 0 + Decorate 357(g_tTexcdu4) DescriptorSet 0 + Decorate 376(g_tTexcdf4a) DescriptorSet 0 + Decorate 399(g_tTexcdi4a) DescriptorSet 0 + Decorate 422(g_tTexcdu4a) DescriptorSet 0 + Decorate 445(g_tTex2dmsf4) DescriptorSet 0 + Decorate 458(g_tTex2dmsi4) DescriptorSet 0 + Decorate 470(g_tTex2dmsu4) DescriptorSet 0 + Decorate 482(g_tTex2dmsf4a) DescriptorSet 0 + Decorate 496(g_tTex2dmsi4a) DescriptorSet 0 + Decorate 510(g_tTex2dmsu4a) DescriptorSet 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 + 7: TypePointer Function 6(int) + 9: TypeFloat 32 + 10: TypeImage 9(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeInt 32 1 + 20: 6(int) Constant 6 + 27: TypeImage 14(int) 1D sampled format:Unknown + 28: TypePointer UniformConstant 27 + 29(g_tTex1di4): 28(ptr) Variable UniformConstant + 40: TypeImage 6(int) 1D sampled format:Unknown + 41: TypePointer UniformConstant 40 + 42(g_tTex1du4): 41(ptr) Variable UniformConstant + 52: TypeVector 6(int) 2 + 53: TypePointer Function 52(ivec2) + 55: TypeImage 9(float) 1D array sampled format:Unknown + 56: TypePointer UniformConstant 55 + 57(g_tTex1df4a): 56(ptr) Variable UniformConstant + 59: TypeVector 14(int) 2 + 61: 6(int) Constant 0 + 65: 6(int) Constant 1 + 78: TypeImage 14(int) 1D array sampled format:Unknown + 79: TypePointer UniformConstant 78 + 80(g_tTex1di4a): 79(ptr) Variable UniformConstant + 97: TypeImage 6(int) 1D array sampled format:Unknown + 98: TypePointer UniformConstant 97 + 99(g_tTex1du4a): 98(ptr) Variable UniformConstant + 116: TypeImage 9(float) 2D sampled format:Unknown + 117: TypePointer UniformConstant 116 + 118(g_tTex2df4): 117(ptr) Variable UniformConstant + 136: TypeImage 14(int) 2D sampled format:Unknown + 137: TypePointer UniformConstant 136 + 138(g_tTex2di4): 137(ptr) Variable UniformConstant + 155: TypeImage 6(int) 2D sampled format:Unknown + 156: TypePointer UniformConstant 155 + 157(g_tTex2du4): 156(ptr) Variable UniformConstant + 173: TypeVector 6(int) 3 + 174: TypePointer Function 173(ivec3) + 176: TypeImage 9(float) 2D array sampled format:Unknown + 177: TypePointer UniformConstant 176 +178(g_tTex2df4a): 177(ptr) Variable UniformConstant + 180: TypeVector 14(int) 3 + 186: 6(int) Constant 2 + 201: TypeImage 14(int) 2D array sampled format:Unknown + 202: TypePointer UniformConstant 201 +203(g_tTex2di4a): 202(ptr) Variable UniformConstant + 224: TypeImage 6(int) 2D array sampled format:Unknown + 225: TypePointer UniformConstant 224 +226(g_tTex2du4a): 225(ptr) Variable UniformConstant + 247: TypeImage 9(float) 3D sampled format:Unknown + 248: TypePointer UniformConstant 247 + 249(g_tTex3df4): 248(ptr) Variable UniformConstant + 271: TypeImage 14(int) 3D sampled format:Unknown + 272: TypePointer UniformConstant 271 + 273(g_tTex3di4): 272(ptr) Variable UniformConstant + 294: TypeImage 6(int) 3D sampled format:Unknown + 295: TypePointer UniformConstant 294 + 296(g_tTex3du4): 295(ptr) Variable UniformConstant + 317: TypeImage 9(float) Cube sampled format:Unknown + 318: TypePointer UniformConstant 317 + 319(g_tTexcdf4): 318(ptr) Variable UniformConstant + 336: TypeImage 14(int) Cube sampled format:Unknown + 337: TypePointer UniformConstant 336 + 338(g_tTexcdi4): 337(ptr) Variable UniformConstant + 355: TypeImage 6(int) Cube sampled format:Unknown + 356: TypePointer UniformConstant 355 + 357(g_tTexcdu4): 356(ptr) Variable UniformConstant + 374: TypeImage 9(float) Cube array sampled format:Unknown + 375: TypePointer UniformConstant 374 +376(g_tTexcdf4a): 375(ptr) Variable UniformConstant + 397: TypeImage 14(int) Cube array sampled format:Unknown + 398: TypePointer UniformConstant 397 +399(g_tTexcdi4a): 398(ptr) Variable UniformConstant + 420: TypeImage 6(int) Cube array sampled format:Unknown + 421: TypePointer UniformConstant 420 +422(g_tTexcdu4a): 421(ptr) Variable UniformConstant + 443: TypeImage 9(float) 2D multi-sampled sampled format:Unknown + 444: TypePointer UniformConstant 443 +445(g_tTex2dmsf4): 444(ptr) Variable UniformConstant + 456: TypeImage 14(int) 2D multi-sampled sampled format:Unknown + 457: TypePointer UniformConstant 456 +458(g_tTex2dmsi4): 457(ptr) Variable UniformConstant + 468: TypeImage 6(int) 2D multi-sampled sampled format:Unknown + 469: TypePointer UniformConstant 468 +470(g_tTex2dmsu4): 469(ptr) Variable UniformConstant + 480: TypeImage 9(float) 2D array multi-sampled sampled format:Unknown + 481: TypePointer UniformConstant 480 +482(g_tTex2dmsf4a): 481(ptr) Variable UniformConstant + 494: TypeImage 14(int) 2D array multi-sampled sampled format:Unknown + 495: TypePointer UniformConstant 494 +496(g_tTex2dmsi4a): 495(ptr) Variable UniformConstant + 508: TypeImage 6(int) 2D array multi-sampled sampled format:Unknown + 509: TypePointer UniformConstant 508 +510(g_tTex2dmsu4a): 509(ptr) Variable UniformConstant + 521: TypeVector 9(float) 4 + 522(PS_OUTPUT): TypeStruct 521(fvec4) 9(float) + 523: TypePointer Function 522(PS_OUTPUT) + 525: 14(int) Constant 0 + 526: 9(float) Constant 1065353216 + 527: 521(fvec4) ConstantComposite 526 526 526 526 + 528: TypePointer Function 521(fvec4) + 530: 14(int) Constant 1 + 531: TypePointer Function 9(float) + 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 + 16(WidthU): 7(ptr) Variable Function +18(sizeQueryTemp): 7(ptr) Variable Function +23(NumberOfLevelsU): 7(ptr) Variable Function +26(sizeQueryTemp): 7(ptr) Variable Function +33(sizeQueryTemp): 7(ptr) Variable Function +39(sizeQueryTemp): 7(ptr) Variable Function +46(sizeQueryTemp): 7(ptr) Variable Function +54(sizeQueryTemp): 53(ptr) Variable Function + 64(ElementsU): 7(ptr) Variable Function +68(sizeQueryTemp): 53(ptr) Variable Function +77(sizeQueryTemp): 53(ptr) Variable Function +87(sizeQueryTemp): 53(ptr) Variable Function +96(sizeQueryTemp): 53(ptr) Variable Function +106(sizeQueryTemp): 53(ptr) Variable Function +115(sizeQueryTemp): 53(ptr) Variable Function + 123(HeightU): 7(ptr) Variable Function +126(sizeQueryTemp): 53(ptr) Variable Function +135(sizeQueryTemp): 53(ptr) Variable Function +145(sizeQueryTemp): 53(ptr) Variable Function +154(sizeQueryTemp): 53(ptr) Variable Function +164(sizeQueryTemp): 53(ptr) Variable Function +175(sizeQueryTemp): 174(ptr) Variable Function +189(sizeQueryTemp): 174(ptr) Variable Function +200(sizeQueryTemp): 174(ptr) Variable Function +212(sizeQueryTemp): 174(ptr) Variable Function +223(sizeQueryTemp): 174(ptr) Variable Function +235(sizeQueryTemp): 174(ptr) Variable Function +246(sizeQueryTemp): 174(ptr) Variable Function + 256(DepthU): 7(ptr) Variable Function +259(sizeQueryTemp): 174(ptr) Variable Function +270(sizeQueryTemp): 174(ptr) Variable Function +282(sizeQueryTemp): 174(ptr) Variable Function +293(sizeQueryTemp): 174(ptr) Variable Function +305(sizeQueryTemp): 174(ptr) Variable Function +316(sizeQueryTemp): 53(ptr) Variable Function +326(sizeQueryTemp): 53(ptr) Variable Function +335(sizeQueryTemp): 53(ptr) Variable Function +345(sizeQueryTemp): 53(ptr) Variable Function +354(sizeQueryTemp): 53(ptr) Variable Function +364(sizeQueryTemp): 53(ptr) Variable Function +373(sizeQueryTemp): 174(ptr) Variable Function +385(sizeQueryTemp): 174(ptr) Variable Function +396(sizeQueryTemp): 174(ptr) Variable Function +408(sizeQueryTemp): 174(ptr) Variable Function +419(sizeQueryTemp): 174(ptr) Variable Function +431(sizeQueryTemp): 174(ptr) Variable Function +442(sizeQueryTemp): 53(ptr) Variable Function +452(NumberOfSamplesU): 7(ptr) Variable Function +455(sizeQueryTemp): 53(ptr) Variable Function +467(sizeQueryTemp): 53(ptr) Variable Function +479(sizeQueryTemp): 174(ptr) Variable Function +493(sizeQueryTemp): 174(ptr) Variable Function +507(sizeQueryTemp): 174(ptr) Variable Function + 524(psout): 523(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 15: 14(int) ImageQuerySize 13 + Store 8(sizeQueryTemp) 15 + 17: 6(int) Load 8(sizeQueryTemp) + Store 16(WidthU) 17 + 19: 10 Load 12(g_tTex1df4) + 21: 14(int) ImageQuerySizeLod 19 20 + Store 18(sizeQueryTemp) 21 + 22: 6(int) Load 18(sizeQueryTemp) + Store 16(WidthU) 22 + 24: 10 Load 12(g_tTex1df4) + 25: 14(int) ImageQueryLevels 24 + Store 23(NumberOfLevelsU) 25 + 30: 27 Load 29(g_tTex1di4) + 31: 14(int) ImageQuerySize 30 + Store 26(sizeQueryTemp) 31 + 32: 6(int) Load 26(sizeQueryTemp) + Store 16(WidthU) 32 + 34: 27 Load 29(g_tTex1di4) + 35: 14(int) ImageQuerySizeLod 34 20 + Store 33(sizeQueryTemp) 35 + 36: 6(int) Load 33(sizeQueryTemp) + Store 16(WidthU) 36 + 37: 27 Load 29(g_tTex1di4) + 38: 14(int) ImageQueryLevels 37 + Store 23(NumberOfLevelsU) 38 + 43: 40 Load 42(g_tTex1du4) + 44: 14(int) ImageQuerySize 43 + Store 39(sizeQueryTemp) 44 + 45: 6(int) Load 39(sizeQueryTemp) + Store 16(WidthU) 45 + 47: 40 Load 42(g_tTex1du4) + 48: 14(int) ImageQuerySizeLod 47 20 + Store 46(sizeQueryTemp) 48 + 49: 6(int) Load 46(sizeQueryTemp) + Store 16(WidthU) 49 + 50: 40 Load 42(g_tTex1du4) + 51: 14(int) ImageQueryLevels 50 + Store 23(NumberOfLevelsU) 51 + 58: 55 Load 57(g_tTex1df4a) + 60: 59(ivec2) ImageQuerySize 58 + Store 54(sizeQueryTemp) 60 + 62: 7(ptr) AccessChain 54(sizeQueryTemp) 61 + 63: 6(int) Load 62 + Store 16(WidthU) 63 + 66: 7(ptr) AccessChain 54(sizeQueryTemp) 65 + 67: 6(int) Load 66 + Store 64(ElementsU) 67 + 69: 55 Load 57(g_tTex1df4a) + 70: 59(ivec2) ImageQuerySizeLod 69 20 + Store 68(sizeQueryTemp) 70 + 71: 7(ptr) AccessChain 68(sizeQueryTemp) 61 + 72: 6(int) Load 71 + Store 16(WidthU) 72 + 73: 7(ptr) AccessChain 68(sizeQueryTemp) 65 + 74: 6(int) Load 73 + Store 64(ElementsU) 74 + 75: 55 Load 57(g_tTex1df4a) + 76: 14(int) ImageQueryLevels 75 + Store 23(NumberOfLevelsU) 76 + 81: 78 Load 80(g_tTex1di4a) + 82: 59(ivec2) ImageQuerySize 81 + Store 77(sizeQueryTemp) 82 + 83: 7(ptr) AccessChain 77(sizeQueryTemp) 61 + 84: 6(int) Load 83 + Store 16(WidthU) 84 + 85: 7(ptr) AccessChain 77(sizeQueryTemp) 65 + 86: 6(int) Load 85 + Store 64(ElementsU) 86 + 88: 78 Load 80(g_tTex1di4a) + 89: 59(ivec2) ImageQuerySizeLod 88 20 + Store 87(sizeQueryTemp) 89 + 90: 7(ptr) AccessChain 87(sizeQueryTemp) 61 + 91: 6(int) Load 90 + Store 16(WidthU) 91 + 92: 7(ptr) AccessChain 87(sizeQueryTemp) 65 + 93: 6(int) Load 92 + Store 64(ElementsU) 93 + 94: 78 Load 80(g_tTex1di4a) + 95: 14(int) ImageQueryLevels 94 + Store 23(NumberOfLevelsU) 95 + 100: 97 Load 99(g_tTex1du4a) + 101: 59(ivec2) ImageQuerySize 100 + Store 96(sizeQueryTemp) 101 + 102: 7(ptr) AccessChain 96(sizeQueryTemp) 61 + 103: 6(int) Load 102 + Store 16(WidthU) 103 + 104: 7(ptr) AccessChain 96(sizeQueryTemp) 65 + 105: 6(int) Load 104 + Store 64(ElementsU) 105 + 107: 97 Load 99(g_tTex1du4a) + 108: 59(ivec2) ImageQuerySizeLod 107 20 + Store 106(sizeQueryTemp) 108 + 109: 7(ptr) AccessChain 106(sizeQueryTemp) 61 + 110: 6(int) Load 109 + Store 16(WidthU) 110 + 111: 7(ptr) AccessChain 106(sizeQueryTemp) 65 + 112: 6(int) Load 111 + Store 64(ElementsU) 112 + 113: 97 Load 99(g_tTex1du4a) + 114: 14(int) ImageQueryLevels 113 + Store 23(NumberOfLevelsU) 114 + 119: 116 Load 118(g_tTex2df4) + 120: 59(ivec2) ImageQuerySize 119 + Store 115(sizeQueryTemp) 120 + 121: 7(ptr) AccessChain 115(sizeQueryTemp) 61 + 122: 6(int) Load 121 + Store 16(WidthU) 122 + 124: 7(ptr) AccessChain 115(sizeQueryTemp) 65 + 125: 6(int) Load 124 + Store 123(HeightU) 125 + 127: 116 Load 118(g_tTex2df4) + 128: 59(ivec2) ImageQuerySizeLod 127 20 + Store 126(sizeQueryTemp) 128 + 129: 7(ptr) AccessChain 126(sizeQueryTemp) 61 + 130: 6(int) Load 129 + Store 16(WidthU) 130 + 131: 7(ptr) AccessChain 126(sizeQueryTemp) 65 + 132: 6(int) Load 131 + Store 123(HeightU) 132 + 133: 116 Load 118(g_tTex2df4) + 134: 14(int) ImageQueryLevels 133 + Store 23(NumberOfLevelsU) 134 + 139: 136 Load 138(g_tTex2di4) + 140: 59(ivec2) ImageQuerySize 139 + Store 135(sizeQueryTemp) 140 + 141: 7(ptr) AccessChain 135(sizeQueryTemp) 61 + 142: 6(int) Load 141 + Store 16(WidthU) 142 + 143: 7(ptr) AccessChain 135(sizeQueryTemp) 65 + 144: 6(int) Load 143 + Store 123(HeightU) 144 + 146: 136 Load 138(g_tTex2di4) + 147: 59(ivec2) ImageQuerySizeLod 146 20 + Store 145(sizeQueryTemp) 147 + 148: 7(ptr) AccessChain 145(sizeQueryTemp) 61 + 149: 6(int) Load 148 + Store 16(WidthU) 149 + 150: 7(ptr) AccessChain 145(sizeQueryTemp) 65 + 151: 6(int) Load 150 + Store 123(HeightU) 151 + 152: 136 Load 138(g_tTex2di4) + 153: 14(int) ImageQueryLevels 152 + Store 23(NumberOfLevelsU) 153 + 158: 155 Load 157(g_tTex2du4) + 159: 59(ivec2) ImageQuerySize 158 + Store 154(sizeQueryTemp) 159 + 160: 7(ptr) AccessChain 154(sizeQueryTemp) 61 + 161: 6(int) Load 160 + Store 16(WidthU) 161 + 162: 7(ptr) AccessChain 154(sizeQueryTemp) 65 + 163: 6(int) Load 162 + Store 123(HeightU) 163 + 165: 155 Load 157(g_tTex2du4) + 166: 59(ivec2) ImageQuerySizeLod 165 20 + Store 164(sizeQueryTemp) 166 + 167: 7(ptr) AccessChain 164(sizeQueryTemp) 61 + 168: 6(int) Load 167 + Store 16(WidthU) 168 + 169: 7(ptr) AccessChain 164(sizeQueryTemp) 65 + 170: 6(int) Load 169 + Store 123(HeightU) 170 + 171: 155 Load 157(g_tTex2du4) + 172: 14(int) ImageQueryLevels 171 + Store 23(NumberOfLevelsU) 172 + 179: 176 Load 178(g_tTex2df4a) + 181: 180(ivec3) ImageQuerySize 179 + Store 175(sizeQueryTemp) 181 + 182: 7(ptr) AccessChain 175(sizeQueryTemp) 61 + 183: 6(int) Load 182 + Store 16(WidthU) 183 + 184: 7(ptr) AccessChain 175(sizeQueryTemp) 65 + 185: 6(int) Load 184 + Store 123(HeightU) 185 + 187: 7(ptr) AccessChain 175(sizeQueryTemp) 186 + 188: 6(int) Load 187 + Store 64(ElementsU) 188 + 190: 176 Load 178(g_tTex2df4a) + 191: 180(ivec3) ImageQuerySizeLod 190 20 + Store 189(sizeQueryTemp) 191 + 192: 7(ptr) AccessChain 189(sizeQueryTemp) 61 + 193: 6(int) Load 192 + Store 16(WidthU) 193 + 194: 7(ptr) AccessChain 189(sizeQueryTemp) 65 + 195: 6(int) Load 194 + Store 123(HeightU) 195 + 196: 7(ptr) AccessChain 189(sizeQueryTemp) 186 + 197: 6(int) Load 196 + Store 64(ElementsU) 197 + 198: 176 Load 178(g_tTex2df4a) + 199: 14(int) ImageQueryLevels 198 + Store 23(NumberOfLevelsU) 199 + 204: 201 Load 203(g_tTex2di4a) + 205: 180(ivec3) ImageQuerySize 204 + Store 200(sizeQueryTemp) 205 + 206: 7(ptr) AccessChain 200(sizeQueryTemp) 61 + 207: 6(int) Load 206 + Store 16(WidthU) 207 + 208: 7(ptr) AccessChain 200(sizeQueryTemp) 65 + 209: 6(int) Load 208 + Store 123(HeightU) 209 + 210: 7(ptr) AccessChain 200(sizeQueryTemp) 186 + 211: 6(int) Load 210 + Store 64(ElementsU) 211 + 213: 201 Load 203(g_tTex2di4a) + 214: 180(ivec3) ImageQuerySizeLod 213 20 + Store 212(sizeQueryTemp) 214 + 215: 7(ptr) AccessChain 212(sizeQueryTemp) 61 + 216: 6(int) Load 215 + Store 16(WidthU) 216 + 217: 7(ptr) AccessChain 212(sizeQueryTemp) 65 + 218: 6(int) Load 217 + Store 123(HeightU) 218 + 219: 7(ptr) AccessChain 212(sizeQueryTemp) 186 + 220: 6(int) Load 219 + Store 64(ElementsU) 220 + 221: 201 Load 203(g_tTex2di4a) + 222: 14(int) ImageQueryLevels 221 + Store 23(NumberOfLevelsU) 222 + 227: 224 Load 226(g_tTex2du4a) + 228: 180(ivec3) ImageQuerySize 227 + Store 223(sizeQueryTemp) 228 + 229: 7(ptr) AccessChain 223(sizeQueryTemp) 61 + 230: 6(int) Load 229 + Store 16(WidthU) 230 + 231: 7(ptr) AccessChain 223(sizeQueryTemp) 65 + 232: 6(int) Load 231 + Store 123(HeightU) 232 + 233: 7(ptr) AccessChain 223(sizeQueryTemp) 186 + 234: 6(int) Load 233 + Store 64(ElementsU) 234 + 236: 224 Load 226(g_tTex2du4a) + 237: 180(ivec3) ImageQuerySizeLod 236 20 + Store 235(sizeQueryTemp) 237 + 238: 7(ptr) AccessChain 235(sizeQueryTemp) 61 + 239: 6(int) Load 238 + Store 16(WidthU) 239 + 240: 7(ptr) AccessChain 235(sizeQueryTemp) 65 + 241: 6(int) Load 240 + Store 123(HeightU) 241 + 242: 7(ptr) AccessChain 235(sizeQueryTemp) 186 + 243: 6(int) Load 242 + Store 64(ElementsU) 243 + 244: 224 Load 226(g_tTex2du4a) + 245: 14(int) ImageQueryLevels 244 + Store 23(NumberOfLevelsU) 245 + 250: 247 Load 249(g_tTex3df4) + 251: 180(ivec3) ImageQuerySize 250 + Store 246(sizeQueryTemp) 251 + 252: 7(ptr) AccessChain 246(sizeQueryTemp) 61 + 253: 6(int) Load 252 + Store 16(WidthU) 253 + 254: 7(ptr) AccessChain 246(sizeQueryTemp) 65 + 255: 6(int) Load 254 + Store 123(HeightU) 255 + 257: 7(ptr) AccessChain 246(sizeQueryTemp) 186 + 258: 6(int) Load 257 + Store 256(DepthU) 258 + 260: 247 Load 249(g_tTex3df4) + 261: 180(ivec3) ImageQuerySizeLod 260 20 + Store 259(sizeQueryTemp) 261 + 262: 7(ptr) AccessChain 259(sizeQueryTemp) 61 + 263: 6(int) Load 262 + Store 16(WidthU) 263 + 264: 7(ptr) AccessChain 259(sizeQueryTemp) 65 + 265: 6(int) Load 264 + Store 123(HeightU) 265 + 266: 7(ptr) AccessChain 259(sizeQueryTemp) 186 + 267: 6(int) Load 266 + Store 256(DepthU) 267 + 268: 247 Load 249(g_tTex3df4) + 269: 14(int) ImageQueryLevels 268 + Store 23(NumberOfLevelsU) 269 + 274: 271 Load 273(g_tTex3di4) + 275: 180(ivec3) ImageQuerySize 274 + Store 270(sizeQueryTemp) 275 + 276: 7(ptr) AccessChain 270(sizeQueryTemp) 61 + 277: 6(int) Load 276 + Store 16(WidthU) 277 + 278: 7(ptr) AccessChain 270(sizeQueryTemp) 65 + 279: 6(int) Load 278 + Store 123(HeightU) 279 + 280: 7(ptr) AccessChain 270(sizeQueryTemp) 186 + 281: 6(int) Load 280 + Store 256(DepthU) 281 + 283: 271 Load 273(g_tTex3di4) + 284: 180(ivec3) ImageQuerySizeLod 283 20 + Store 282(sizeQueryTemp) 284 + 285: 7(ptr) AccessChain 282(sizeQueryTemp) 61 + 286: 6(int) Load 285 + Store 16(WidthU) 286 + 287: 7(ptr) AccessChain 282(sizeQueryTemp) 65 + 288: 6(int) Load 287 + Store 123(HeightU) 288 + 289: 7(ptr) AccessChain 282(sizeQueryTemp) 186 + 290: 6(int) Load 289 + Store 256(DepthU) 290 + 291: 271 Load 273(g_tTex3di4) + 292: 14(int) ImageQueryLevels 291 + Store 23(NumberOfLevelsU) 292 + 297: 294 Load 296(g_tTex3du4) + 298: 180(ivec3) ImageQuerySize 297 + Store 293(sizeQueryTemp) 298 + 299: 7(ptr) AccessChain 293(sizeQueryTemp) 61 + 300: 6(int) Load 299 + Store 16(WidthU) 300 + 301: 7(ptr) AccessChain 293(sizeQueryTemp) 65 + 302: 6(int) Load 301 + Store 123(HeightU) 302 + 303: 7(ptr) AccessChain 293(sizeQueryTemp) 186 + 304: 6(int) Load 303 + Store 256(DepthU) 304 + 306: 294 Load 296(g_tTex3du4) + 307: 180(ivec3) ImageQuerySizeLod 306 20 + Store 305(sizeQueryTemp) 307 + 308: 7(ptr) AccessChain 305(sizeQueryTemp) 61 + 309: 6(int) Load 308 + Store 16(WidthU) 309 + 310: 7(ptr) AccessChain 305(sizeQueryTemp) 65 + 311: 6(int) Load 310 + Store 123(HeightU) 311 + 312: 7(ptr) AccessChain 305(sizeQueryTemp) 186 + 313: 6(int) Load 312 + Store 256(DepthU) 313 + 314: 294 Load 296(g_tTex3du4) + 315: 14(int) ImageQueryLevels 314 + Store 23(NumberOfLevelsU) 315 + 320: 317 Load 319(g_tTexcdf4) + 321: 59(ivec2) ImageQuerySize 320 + Store 316(sizeQueryTemp) 321 + 322: 7(ptr) AccessChain 316(sizeQueryTemp) 61 + 323: 6(int) Load 322 + Store 16(WidthU) 323 + 324: 7(ptr) AccessChain 316(sizeQueryTemp) 65 + 325: 6(int) Load 324 + Store 123(HeightU) 325 + 327: 317 Load 319(g_tTexcdf4) + 328: 59(ivec2) ImageQuerySizeLod 327 20 + Store 326(sizeQueryTemp) 328 + 329: 7(ptr) AccessChain 326(sizeQueryTemp) 61 + 330: 6(int) Load 329 + Store 16(WidthU) 330 + 331: 7(ptr) AccessChain 326(sizeQueryTemp) 65 + 332: 6(int) Load 331 + Store 123(HeightU) 332 + 333: 317 Load 319(g_tTexcdf4) + 334: 14(int) ImageQueryLevels 333 + Store 23(NumberOfLevelsU) 334 + 339: 336 Load 338(g_tTexcdi4) + 340: 59(ivec2) ImageQuerySize 339 + Store 335(sizeQueryTemp) 340 + 341: 7(ptr) AccessChain 335(sizeQueryTemp) 61 + 342: 6(int) Load 341 + Store 16(WidthU) 342 + 343: 7(ptr) AccessChain 335(sizeQueryTemp) 65 + 344: 6(int) Load 343 + Store 123(HeightU) 344 + 346: 336 Load 338(g_tTexcdi4) + 347: 59(ivec2) ImageQuerySizeLod 346 20 + Store 345(sizeQueryTemp) 347 + 348: 7(ptr) AccessChain 345(sizeQueryTemp) 61 + 349: 6(int) Load 348 + Store 16(WidthU) 349 + 350: 7(ptr) AccessChain 345(sizeQueryTemp) 65 + 351: 6(int) Load 350 + Store 123(HeightU) 351 + 352: 336 Load 338(g_tTexcdi4) + 353: 14(int) ImageQueryLevels 352 + Store 23(NumberOfLevelsU) 353 + 358: 355 Load 357(g_tTexcdu4) + 359: 59(ivec2) ImageQuerySize 358 + Store 354(sizeQueryTemp) 359 + 360: 7(ptr) AccessChain 354(sizeQueryTemp) 61 + 361: 6(int) Load 360 + Store 16(WidthU) 361 + 362: 7(ptr) AccessChain 354(sizeQueryTemp) 65 + 363: 6(int) Load 362 + Store 123(HeightU) 363 + 365: 355 Load 357(g_tTexcdu4) + 366: 59(ivec2) ImageQuerySizeLod 365 20 + Store 364(sizeQueryTemp) 366 + 367: 7(ptr) AccessChain 364(sizeQueryTemp) 61 + 368: 6(int) Load 367 + Store 16(WidthU) 368 + 369: 7(ptr) AccessChain 364(sizeQueryTemp) 65 + 370: 6(int) Load 369 + Store 123(HeightU) 370 + 371: 355 Load 357(g_tTexcdu4) + 372: 14(int) ImageQueryLevels 371 + Store 23(NumberOfLevelsU) 372 + 377: 374 Load 376(g_tTexcdf4a) + 378: 180(ivec3) ImageQuerySize 377 + Store 373(sizeQueryTemp) 378 + 379: 7(ptr) AccessChain 373(sizeQueryTemp) 61 + 380: 6(int) Load 379 + Store 16(WidthU) 380 + 381: 7(ptr) AccessChain 373(sizeQueryTemp) 65 + 382: 6(int) Load 381 + Store 123(HeightU) 382 + 383: 7(ptr) AccessChain 373(sizeQueryTemp) 186 + 384: 6(int) Load 383 + Store 64(ElementsU) 384 + 386: 374 Load 376(g_tTexcdf4a) + 387: 180(ivec3) ImageQuerySizeLod 386 20 + Store 385(sizeQueryTemp) 387 + 388: 7(ptr) AccessChain 385(sizeQueryTemp) 61 + 389: 6(int) Load 388 + Store 16(WidthU) 389 + 390: 7(ptr) AccessChain 385(sizeQueryTemp) 65 + 391: 6(int) Load 390 + Store 123(HeightU) 391 + 392: 7(ptr) AccessChain 385(sizeQueryTemp) 186 + 393: 6(int) Load 392 + Store 64(ElementsU) 393 + 394: 374 Load 376(g_tTexcdf4a) + 395: 14(int) ImageQueryLevels 394 + Store 23(NumberOfLevelsU) 395 + 400: 397 Load 399(g_tTexcdi4a) + 401: 180(ivec3) ImageQuerySize 400 + Store 396(sizeQueryTemp) 401 + 402: 7(ptr) AccessChain 396(sizeQueryTemp) 61 + 403: 6(int) Load 402 + Store 16(WidthU) 403 + 404: 7(ptr) AccessChain 396(sizeQueryTemp) 65 + 405: 6(int) Load 404 + Store 123(HeightU) 405 + 406: 7(ptr) AccessChain 396(sizeQueryTemp) 186 + 407: 6(int) Load 406 + Store 64(ElementsU) 407 + 409: 397 Load 399(g_tTexcdi4a) + 410: 180(ivec3) ImageQuerySizeLod 409 20 + Store 408(sizeQueryTemp) 410 + 411: 7(ptr) AccessChain 408(sizeQueryTemp) 61 + 412: 6(int) Load 411 + Store 16(WidthU) 412 + 413: 7(ptr) AccessChain 408(sizeQueryTemp) 65 + 414: 6(int) Load 413 + Store 123(HeightU) 414 + 415: 7(ptr) AccessChain 408(sizeQueryTemp) 186 + 416: 6(int) Load 415 + Store 64(ElementsU) 416 + 417: 397 Load 399(g_tTexcdi4a) + 418: 14(int) ImageQueryLevels 417 + Store 23(NumberOfLevelsU) 418 + 423: 420 Load 422(g_tTexcdu4a) + 424: 180(ivec3) ImageQuerySize 423 + Store 419(sizeQueryTemp) 424 + 425: 7(ptr) AccessChain 419(sizeQueryTemp) 61 + 426: 6(int) Load 425 + Store 16(WidthU) 426 + 427: 7(ptr) AccessChain 419(sizeQueryTemp) 65 + 428: 6(int) Load 427 + Store 123(HeightU) 428 + 429: 7(ptr) AccessChain 419(sizeQueryTemp) 186 + 430: 6(int) Load 429 + Store 64(ElementsU) 430 + 432: 420 Load 422(g_tTexcdu4a) + 433: 180(ivec3) ImageQuerySizeLod 432 20 + Store 431(sizeQueryTemp) 433 + 434: 7(ptr) AccessChain 431(sizeQueryTemp) 61 + 435: 6(int) Load 434 + Store 16(WidthU) 435 + 436: 7(ptr) AccessChain 431(sizeQueryTemp) 65 + 437: 6(int) Load 436 + Store 123(HeightU) 437 + 438: 7(ptr) AccessChain 431(sizeQueryTemp) 186 + 439: 6(int) Load 438 + Store 64(ElementsU) 439 + 440: 420 Load 422(g_tTexcdu4a) + 441: 14(int) ImageQueryLevels 440 + Store 23(NumberOfLevelsU) 441 + 446: 443 Load 445(g_tTex2dmsf4) + 447: 59(ivec2) ImageQuerySize 446 + Store 442(sizeQueryTemp) 447 + 448: 7(ptr) AccessChain 442(sizeQueryTemp) 61 + 449: 6(int) Load 448 + Store 16(WidthU) 449 + 450: 7(ptr) AccessChain 442(sizeQueryTemp) 65 + 451: 6(int) Load 450 + Store 123(HeightU) 451 + 453: 443 Load 445(g_tTex2dmsf4) + 454: 14(int) ImageQuerySamples 453 + Store 452(NumberOfSamplesU) 454 + 459: 456 Load 458(g_tTex2dmsi4) + 460: 59(ivec2) ImageQuerySize 459 + Store 455(sizeQueryTemp) 460 + 461: 7(ptr) AccessChain 455(sizeQueryTemp) 61 + 462: 6(int) Load 461 + Store 16(WidthU) 462 + 463: 7(ptr) AccessChain 455(sizeQueryTemp) 65 + 464: 6(int) Load 463 + Store 123(HeightU) 464 + 465: 456 Load 458(g_tTex2dmsi4) + 466: 14(int) ImageQuerySamples 465 + Store 452(NumberOfSamplesU) 466 + 471: 468 Load 470(g_tTex2dmsu4) + 472: 59(ivec2) ImageQuerySize 471 + Store 467(sizeQueryTemp) 472 + 473: 7(ptr) AccessChain 467(sizeQueryTemp) 61 + 474: 6(int) Load 473 + Store 16(WidthU) 474 + 475: 7(ptr) AccessChain 467(sizeQueryTemp) 65 + 476: 6(int) Load 475 + Store 123(HeightU) 476 + 477: 468 Load 470(g_tTex2dmsu4) + 478: 14(int) ImageQuerySamples 477 + Store 452(NumberOfSamplesU) 478 + 483: 480 Load 482(g_tTex2dmsf4a) + 484: 180(ivec3) ImageQuerySize 483 + Store 479(sizeQueryTemp) 484 + 485: 7(ptr) AccessChain 479(sizeQueryTemp) 61 + 486: 6(int) Load 485 + Store 16(WidthU) 486 + 487: 7(ptr) AccessChain 479(sizeQueryTemp) 65 + 488: 6(int) Load 487 + Store 123(HeightU) 488 + 489: 7(ptr) AccessChain 479(sizeQueryTemp) 186 + 490: 6(int) Load 489 + Store 64(ElementsU) 490 + 491: 480 Load 482(g_tTex2dmsf4a) + 492: 14(int) ImageQuerySamples 491 + Store 452(NumberOfSamplesU) 492 + 497: 494 Load 496(g_tTex2dmsi4a) + 498: 180(ivec3) ImageQuerySize 497 + Store 493(sizeQueryTemp) 498 + 499: 7(ptr) AccessChain 493(sizeQueryTemp) 61 + 500: 6(int) Load 499 + Store 16(WidthU) 500 + 501: 7(ptr) AccessChain 493(sizeQueryTemp) 65 + 502: 6(int) Load 501 + Store 123(HeightU) 502 + 503: 7(ptr) AccessChain 493(sizeQueryTemp) 186 + 504: 6(int) Load 503 + Store 64(ElementsU) 504 + 505: 494 Load 496(g_tTex2dmsi4a) + 506: 14(int) ImageQuerySamples 505 + Store 452(NumberOfSamplesU) 506 + 511: 508 Load 510(g_tTex2dmsu4a) + 512: 180(ivec3) ImageQuerySize 511 + Store 507(sizeQueryTemp) 512 + 513: 7(ptr) AccessChain 507(sizeQueryTemp) 61 + 514: 6(int) Load 513 + Store 16(WidthU) 514 + 515: 7(ptr) AccessChain 507(sizeQueryTemp) 65 + 516: 6(int) Load 515 + Store 123(HeightU) 516 + 517: 7(ptr) AccessChain 507(sizeQueryTemp) 186 + 518: 6(int) Load 517 + Store 64(ElementsU) 518 + 519: 508 Load 510(g_tTex2dmsu4a) + 520: 14(int) ImageQuerySamples 519 + Store 452(NumberOfSamplesU) 520 + 529: 528(ptr) AccessChain 524(psout) 525 + Store 529 527 + 532: 531(ptr) AccessChain 524(psout) 530 + Store 532 526 + 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 new file mode 100644 index 00000000..3a05bca8 --- /dev/null +++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out @@ -0,0 +1,182 @@ +hlsl.getdimensions.dx10.vert +Shader version: 450 +0:? Sequence +0:11 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) +0:11 Function Parameters: +0:? Sequence +0:21 Sequence +0:21 move second child to first child (temp uint) +0:21 'sizeQueryTemp' (temp uint) +0:21 textureSize (temp uint) +0:21 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:21 move second child to first child (temp uint) +0:21 'WidthU' (temp uint) +0:21 'sizeQueryTemp' (temp uint) +0:22 Sequence +0:22 move second child to first child (temp uint) +0:22 'sizeQueryTemp' (temp uint) +0:22 textureSize (temp uint) +0:22 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:22 Constant: +0:22 6 (const uint) +0:22 move second child to first child (temp uint) +0:22 'WidthU' (temp uint) +0:22 'sizeQueryTemp' (temp uint) +0:22 move second child to first child (temp uint) +0:22 'NumberOfLevelsU' (temp uint) +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) +0:24 'vsout' (temp structure{temp 4-component vector of float Pos}) +0:24 Constant: +0:24 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:26 Sequence +0:26 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: + + +Shader version: 450 +0:? Sequence +0:11 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) +0:11 Function Parameters: +0:? Sequence +0:21 Sequence +0:21 move second child to first child (temp uint) +0:21 'sizeQueryTemp' (temp uint) +0:21 textureSize (temp uint) +0:21 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:21 move second child to first child (temp uint) +0:21 'WidthU' (temp uint) +0:21 'sizeQueryTemp' (temp uint) +0:22 Sequence +0:22 move second child to first child (temp uint) +0:22 'sizeQueryTemp' (temp uint) +0:22 textureSize (temp uint) +0:22 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:22 Constant: +0:22 6 (const uint) +0:22 move second child to first child (temp uint) +0:22 'WidthU' (temp uint) +0:22 'sizeQueryTemp' (temp uint) +0:22 move second child to first child (temp uint) +0:22 'NumberOfLevelsU' (temp uint) +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) +0:24 'vsout' (temp structure{temp 4-component vector of float Pos}) +0:24 Constant: +0:24 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:26 Sequence +0:26 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 43 + + Capability Shader + Capability Sampled1D + Capability ImageQuery + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 36 + Name 4 "main" + Name 8 "sizeQueryTemp" + Name 12 "g_tTex1df4" + Name 16 "WidthU" + Name 18 "sizeQueryTemp" + Name 23 "NumberOfLevelsU" + Name 27 "VS_OUTPUT" + MemberName 27(VS_OUTPUT) 0 "Pos" + Name 29 "vsout" + Name 36 "Pos" + Name 42 "g_sSamp" + Decorate 12(g_tTex1df4) DescriptorSet 0 + Decorate 12(g_tTex1df4) 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 + 7: TypePointer Function 6(int) + 9: TypeFloat 32 + 10: TypeImage 9(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeInt 32 1 + 20: 6(int) Constant 6 + 26: TypeVector 9(float) 4 + 27(VS_OUTPUT): TypeStruct 26(fvec4) + 28: TypePointer Function 27(VS_OUTPUT) + 30: 14(int) Constant 0 + 31: 9(float) Constant 0 + 32: 26(fvec4) ConstantComposite 31 31 31 31 + 33: TypePointer Function 26(fvec4) + 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 + 16(WidthU): 7(ptr) Variable Function +18(sizeQueryTemp): 7(ptr) Variable Function +23(NumberOfLevelsU): 7(ptr) Variable Function + 29(vsout): 28(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 15: 14(int) ImageQuerySize 13 + Store 8(sizeQueryTemp) 15 + 17: 6(int) Load 8(sizeQueryTemp) + Store 16(WidthU) 17 + 19: 10 Load 12(g_tTex1df4) + 21: 14(int) ImageQuerySizeLod 19 20 + Store 18(sizeQueryTemp) 21 + 22: 6(int) Load 18(sizeQueryTemp) + Store 16(WidthU) 22 + 24: 10 Load 12(g_tTex1df4) + 25: 14(int) ImageQueryLevels 24 + Store 23(NumberOfLevelsU) 25 + 34: 33(ptr) AccessChain 29(vsout) 30 + Store 34 32 + 37: 33(ptr) AccessChain 29(vsout) 30 + 38: 26(fvec4) Load 37 + Store 36(Pos) 38 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out new file mode 100644 index 00000000..717c376a --- /dev/null +++ b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out @@ -0,0 +1,1082 @@ +hlsl.getdimensions.rw.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:44 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:44 Function Parameters: +0:? Sequence +0:63 Sequence +0:63 move second child to first child (temp uint) +0:63 'sizeQueryTemp' (temp uint) +0:63 imageQuerySize (temp uint) +0:63 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:63 move second child to first child (temp uint) +0:63 'WidthU' (temp uint) +0:63 'sizeQueryTemp' (temp uint) +0:64 Sequence +0:64 move second child to first child (temp uint) +0:64 'sizeQueryTemp' (temp uint) +0:64 imageQuerySize (temp uint) +0:64 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:64 move second child to first child (temp uint) +0:64 'WidthU' (temp uint) +0:64 'sizeQueryTemp' (temp uint) +0:65 Sequence +0:65 move second child to first child (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:65 imageQuerySize (temp uint) +0:65 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:65 move second child to first child (temp uint) +0:65 'WidthU' (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:68 Sequence +0:68 move second child to first child (temp uint) +0:68 'sizeQueryTemp' (temp uint) +0:68 imageQuerySize (temp uint) +0:68 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:68 move second child to first child (temp uint) +0:68 'WidthU' (temp uint) +0:68 'sizeQueryTemp' (temp uint) +0:69 Sequence +0:69 move second child to first child (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:69 imageQuerySize (temp uint) +0:69 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:69 move second child to first child (temp uint) +0:69 'WidthU' (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:70 Sequence +0:70 move second child to first child (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:70 imageQuerySize (temp uint) +0:70 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:70 move second child to first child (temp uint) +0:70 'WidthU' (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:73 Sequence +0:73 move second child to first child (temp 2-component vector of uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 imageQuerySize (temp 2-component vector of uint) +0:73 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:73 move second child to first child (temp uint) +0:73 'WidthU' (temp uint) +0:73 direct index (temp uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 Constant: +0:73 0 (const int) +0:73 move second child to first child (temp uint) +0:73 'ElementsU' (temp uint) +0:73 direct index (temp uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 Constant: +0:73 1 (const int) +0:74 Sequence +0:74 move second child to first child (temp 2-component vector of uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 imageQuerySize (temp 2-component vector of uint) +0:74 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:74 move second child to first child (temp uint) +0:74 'WidthU' (temp uint) +0:74 direct index (temp uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 Constant: +0:74 0 (const int) +0:74 move second child to first child (temp uint) +0:74 'ElementsU' (temp uint) +0:74 direct index (temp uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 Constant: +0:74 1 (const int) +0:75 Sequence +0:75 move second child to first child (temp 2-component vector of uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 imageQuerySize (temp 2-component vector of uint) +0:75 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:75 move second child to first child (temp uint) +0:75 'WidthU' (temp uint) +0:75 direct index (temp uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 Constant: +0:75 0 (const int) +0:75 move second child to first child (temp uint) +0:75 'ElementsU' (temp uint) +0:75 direct index (temp uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 Constant: +0:75 1 (const int) +0:78 Sequence +0:78 move second child to first child (temp 2-component vector of uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 imageQuerySize (temp 2-component vector of uint) +0:78 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:78 move second child to first child (temp uint) +0:78 'WidthU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 0 (const int) +0:78 move second child to first child (temp uint) +0:78 'HeightU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 1 (const int) +0:79 Sequence +0:79 move second child to first child (temp 2-component vector of uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 imageQuerySize (temp 2-component vector of uint) +0:79 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:79 move second child to first child (temp uint) +0:79 'WidthU' (temp uint) +0:79 direct index (temp uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 Constant: +0:79 0 (const int) +0:79 move second child to first child (temp uint) +0:79 'HeightU' (temp uint) +0:79 direct index (temp uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 Constant: +0:79 1 (const int) +0:80 Sequence +0:80 move second child to first child (temp 2-component vector of uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 imageQuerySize (temp 2-component vector of uint) +0:80 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:80 move second child to first child (temp uint) +0:80 'WidthU' (temp uint) +0:80 direct index (temp uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 Constant: +0:80 0 (const int) +0:80 move second child to first child (temp uint) +0:80 'HeightU' (temp uint) +0:80 direct index (temp uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 Constant: +0:80 1 (const int) +0:83 Sequence +0:83 move second child to first child (temp 3-component vector of uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 imageQuerySize (temp 3-component vector of uint) +0:83 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:83 move second child to first child (temp uint) +0:83 'WidthU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 0 (const int) +0:83 move second child to first child (temp uint) +0:83 'HeightU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 1 (const int) +0:83 move second child to first child (temp uint) +0:83 'ElementsU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 2 (const int) +0:84 Sequence +0:84 move second child to first child (temp 3-component vector of uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 imageQuerySize (temp 3-component vector of uint) +0:84 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:84 move second child to first child (temp uint) +0:84 'WidthU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 0 (const int) +0:84 move second child to first child (temp uint) +0:84 'HeightU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 1 (const int) +0:84 move second child to first child (temp uint) +0:84 'ElementsU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 2 (const int) +0:85 Sequence +0:85 move second child to first child (temp 3-component vector of uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 imageQuerySize (temp 3-component vector of uint) +0:85 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:85 move second child to first child (temp uint) +0:85 'WidthU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 0 (const int) +0:85 move second child to first child (temp uint) +0:85 'HeightU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 1 (const int) +0:85 move second child to first child (temp uint) +0:85 'ElementsU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 2 (const int) +0:88 Sequence +0:88 move second child to first child (temp 3-component vector of uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 imageQuerySize (temp 3-component vector of uint) +0:88 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:88 move second child to first child (temp uint) +0:88 'WidthU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 0 (const int) +0:88 move second child to first child (temp uint) +0:88 'HeightU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 1 (const int) +0:88 move second child to first child (temp uint) +0:88 'DepthU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 2 (const int) +0:89 Sequence +0:89 move second child to first child (temp 3-component vector of uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 imageQuerySize (temp 3-component vector of uint) +0:89 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:89 move second child to first child (temp uint) +0:89 'WidthU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 0 (const int) +0:89 move second child to first child (temp uint) +0:89 'HeightU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 1 (const int) +0:89 move second child to first child (temp uint) +0:89 'DepthU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 2 (const int) +0:90 Sequence +0:90 move second child to first child (temp 3-component vector of uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 imageQuerySize (temp 3-component vector of uint) +0:90 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:90 move second child to first child (temp uint) +0:90 'WidthU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 0 (const int) +0:90 move second child to first child (temp uint) +0:90 'HeightU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 1 (const int) +0:90 move second child to first child (temp uint) +0:90 'DepthU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 2 (const int) +0:92 move second child to first child (temp 4-component vector of float) +0:92 Color: direct index for structure (temp 4-component vector of float) +0:92 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:92 Constant: +0:92 0 (const int) +0:92 Constant: +0:92 1.000000 +0:92 1.000000 +0:92 1.000000 +0:92 1.000000 +0:93 move second child to first child (temp float) +0:93 Depth: direct index for structure (temp float) +0:93 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:93 Constant: +0:93 1 (const int) +0:93 Constant: +0:93 1.000000 +0:95 Sequence +0:95 Sequence +0:95 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:95 Color: direct index for structure (temp 4-component vector of float) +0:95 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:95 Constant: +0:95 0 (const int) +0:95 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:95 Depth: direct index for structure (temp float) +0:95 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:95 Constant: +0:95 1 (const int) +0:95 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:44 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:44 Function Parameters: +0:? Sequence +0:63 Sequence +0:63 move second child to first child (temp uint) +0:63 'sizeQueryTemp' (temp uint) +0:63 imageQuerySize (temp uint) +0:63 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:63 move second child to first child (temp uint) +0:63 'WidthU' (temp uint) +0:63 'sizeQueryTemp' (temp uint) +0:64 Sequence +0:64 move second child to first child (temp uint) +0:64 'sizeQueryTemp' (temp uint) +0:64 imageQuerySize (temp uint) +0:64 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:64 move second child to first child (temp uint) +0:64 'WidthU' (temp uint) +0:64 'sizeQueryTemp' (temp uint) +0:65 Sequence +0:65 move second child to first child (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:65 imageQuerySize (temp uint) +0:65 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:65 move second child to first child (temp uint) +0:65 'WidthU' (temp uint) +0:65 'sizeQueryTemp' (temp uint) +0:68 Sequence +0:68 move second child to first child (temp uint) +0:68 'sizeQueryTemp' (temp uint) +0:68 imageQuerySize (temp uint) +0:68 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:68 move second child to first child (temp uint) +0:68 'WidthU' (temp uint) +0:68 'sizeQueryTemp' (temp uint) +0:69 Sequence +0:69 move second child to first child (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:69 imageQuerySize (temp uint) +0:69 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:69 move second child to first child (temp uint) +0:69 'WidthU' (temp uint) +0:69 'sizeQueryTemp' (temp uint) +0:70 Sequence +0:70 move second child to first child (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:70 imageQuerySize (temp uint) +0:70 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:70 move second child to first child (temp uint) +0:70 'WidthU' (temp uint) +0:70 'sizeQueryTemp' (temp uint) +0:73 Sequence +0:73 move second child to first child (temp 2-component vector of uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 imageQuerySize (temp 2-component vector of uint) +0:73 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:73 move second child to first child (temp uint) +0:73 'WidthU' (temp uint) +0:73 direct index (temp uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 Constant: +0:73 0 (const int) +0:73 move second child to first child (temp uint) +0:73 'ElementsU' (temp uint) +0:73 direct index (temp uint) +0:73 'sizeQueryTemp' (temp 2-component vector of uint) +0:73 Constant: +0:73 1 (const int) +0:74 Sequence +0:74 move second child to first child (temp 2-component vector of uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 imageQuerySize (temp 2-component vector of uint) +0:74 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:74 move second child to first child (temp uint) +0:74 'WidthU' (temp uint) +0:74 direct index (temp uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 Constant: +0:74 0 (const int) +0:74 move second child to first child (temp uint) +0:74 'ElementsU' (temp uint) +0:74 direct index (temp uint) +0:74 'sizeQueryTemp' (temp 2-component vector of uint) +0:74 Constant: +0:74 1 (const int) +0:75 Sequence +0:75 move second child to first child (temp 2-component vector of uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 imageQuerySize (temp 2-component vector of uint) +0:75 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:75 move second child to first child (temp uint) +0:75 'WidthU' (temp uint) +0:75 direct index (temp uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 Constant: +0:75 0 (const int) +0:75 move second child to first child (temp uint) +0:75 'ElementsU' (temp uint) +0:75 direct index (temp uint) +0:75 'sizeQueryTemp' (temp 2-component vector of uint) +0:75 Constant: +0:75 1 (const int) +0:78 Sequence +0:78 move second child to first child (temp 2-component vector of uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 imageQuerySize (temp 2-component vector of uint) +0:78 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:78 move second child to first child (temp uint) +0:78 'WidthU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 0 (const int) +0:78 move second child to first child (temp uint) +0:78 'HeightU' (temp uint) +0:78 direct index (temp uint) +0:78 'sizeQueryTemp' (temp 2-component vector of uint) +0:78 Constant: +0:78 1 (const int) +0:79 Sequence +0:79 move second child to first child (temp 2-component vector of uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 imageQuerySize (temp 2-component vector of uint) +0:79 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:79 move second child to first child (temp uint) +0:79 'WidthU' (temp uint) +0:79 direct index (temp uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 Constant: +0:79 0 (const int) +0:79 move second child to first child (temp uint) +0:79 'HeightU' (temp uint) +0:79 direct index (temp uint) +0:79 'sizeQueryTemp' (temp 2-component vector of uint) +0:79 Constant: +0:79 1 (const int) +0:80 Sequence +0:80 move second child to first child (temp 2-component vector of uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 imageQuerySize (temp 2-component vector of uint) +0:80 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:80 move second child to first child (temp uint) +0:80 'WidthU' (temp uint) +0:80 direct index (temp uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 Constant: +0:80 0 (const int) +0:80 move second child to first child (temp uint) +0:80 'HeightU' (temp uint) +0:80 direct index (temp uint) +0:80 'sizeQueryTemp' (temp 2-component vector of uint) +0:80 Constant: +0:80 1 (const int) +0:83 Sequence +0:83 move second child to first child (temp 3-component vector of uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 imageQuerySize (temp 3-component vector of uint) +0:83 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:83 move second child to first child (temp uint) +0:83 'WidthU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 0 (const int) +0:83 move second child to first child (temp uint) +0:83 'HeightU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 1 (const int) +0:83 move second child to first child (temp uint) +0:83 'ElementsU' (temp uint) +0:83 direct index (temp uint) +0:83 'sizeQueryTemp' (temp 3-component vector of uint) +0:83 Constant: +0:83 2 (const int) +0:84 Sequence +0:84 move second child to first child (temp 3-component vector of uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 imageQuerySize (temp 3-component vector of uint) +0:84 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:84 move second child to first child (temp uint) +0:84 'WidthU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 0 (const int) +0:84 move second child to first child (temp uint) +0:84 'HeightU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 1 (const int) +0:84 move second child to first child (temp uint) +0:84 'ElementsU' (temp uint) +0:84 direct index (temp uint) +0:84 'sizeQueryTemp' (temp 3-component vector of uint) +0:84 Constant: +0:84 2 (const int) +0:85 Sequence +0:85 move second child to first child (temp 3-component vector of uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 imageQuerySize (temp 3-component vector of uint) +0:85 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:85 move second child to first child (temp uint) +0:85 'WidthU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 0 (const int) +0:85 move second child to first child (temp uint) +0:85 'HeightU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 1 (const int) +0:85 move second child to first child (temp uint) +0:85 'ElementsU' (temp uint) +0:85 direct index (temp uint) +0:85 'sizeQueryTemp' (temp 3-component vector of uint) +0:85 Constant: +0:85 2 (const int) +0:88 Sequence +0:88 move second child to first child (temp 3-component vector of uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 imageQuerySize (temp 3-component vector of uint) +0:88 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:88 move second child to first child (temp uint) +0:88 'WidthU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 0 (const int) +0:88 move second child to first child (temp uint) +0:88 'HeightU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 1 (const int) +0:88 move second child to first child (temp uint) +0:88 'DepthU' (temp uint) +0:88 direct index (temp uint) +0:88 'sizeQueryTemp' (temp 3-component vector of uint) +0:88 Constant: +0:88 2 (const int) +0:89 Sequence +0:89 move second child to first child (temp 3-component vector of uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 imageQuerySize (temp 3-component vector of uint) +0:89 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:89 move second child to first child (temp uint) +0:89 'WidthU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 0 (const int) +0:89 move second child to first child (temp uint) +0:89 'HeightU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 1 (const int) +0:89 move second child to first child (temp uint) +0:89 'DepthU' (temp uint) +0:89 direct index (temp uint) +0:89 'sizeQueryTemp' (temp 3-component vector of uint) +0:89 Constant: +0:89 2 (const int) +0:90 Sequence +0:90 move second child to first child (temp 3-component vector of uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 imageQuerySize (temp 3-component vector of uint) +0:90 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:90 move second child to first child (temp uint) +0:90 'WidthU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 0 (const int) +0:90 move second child to first child (temp uint) +0:90 'HeightU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 1 (const int) +0:90 move second child to first child (temp uint) +0:90 'DepthU' (temp uint) +0:90 direct index (temp uint) +0:90 'sizeQueryTemp' (temp 3-component vector of uint) +0:90 Constant: +0:90 2 (const int) +0:92 move second child to first child (temp 4-component vector of float) +0:92 Color: direct index for structure (temp 4-component vector of float) +0:92 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:92 Constant: +0:92 0 (const int) +0:92 Constant: +0:92 1.000000 +0:92 1.000000 +0:92 1.000000 +0:92 1.000000 +0:93 move second child to first child (temp float) +0:93 Depth: direct index for structure (temp float) +0:93 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:93 Constant: +0:93 1 (const int) +0:93 Constant: +0:93 1.000000 +0:95 Sequence +0:95 Sequence +0:95 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:95 Color: direct index for structure (temp 4-component vector of float) +0:95 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:95 Constant: +0:95 0 (const int) +0:95 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:95 Depth: direct index for structure (temp float) +0:95 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:95 Constant: +0:95 1 (const int) +0:95 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 225 + + Capability Shader + Capability Sampled1D + Capability SampledBuffer + Capability ImageQuery + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 210 214 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "sizeQueryTemp" + Name 12 "g_tTex1df4" + Name 16 "WidthU" + Name 18 "sizeQueryTemp" + Name 21 "g_tTex1di4" + Name 25 "sizeQueryTemp" + Name 28 "g_tTex1du4" + Name 32 "sizeQueryTemp" + Name 35 "g_tBuffF" + Name 39 "sizeQueryTemp" + Name 42 "g_tBuffI" + Name 46 "sizeQueryTemp" + Name 49 "g_tBuffU" + Name 55 "sizeQueryTemp" + Name 58 "g_tTex1df4a" + Name 65 "ElementsU" + Name 69 "sizeQueryTemp" + Name 72 "g_tTex1di4a" + Name 79 "sizeQueryTemp" + Name 82 "g_tTex1du4a" + Name 89 "sizeQueryTemp" + Name 92 "g_tTex2df4" + Name 97 "HeightU" + Name 100 "sizeQueryTemp" + Name 103 "g_tTex2di4" + Name 110 "sizeQueryTemp" + Name 113 "g_tTex2du4" + Name 122 "sizeQueryTemp" + Name 125 "g_tTex2df4a" + Name 136 "sizeQueryTemp" + Name 139 "g_tTex2di4a" + Name 148 "sizeQueryTemp" + Name 151 "g_tTex2du4a" + Name 160 "sizeQueryTemp" + Name 163 "g_tTex3df4" + Name 170 "DepthU" + Name 173 "sizeQueryTemp" + Name 176 "g_tTex3di4" + Name 185 "sizeQueryTemp" + Name 188 "g_tTex3du4" + Name 198 "PS_OUTPUT" + MemberName 198(PS_OUTPUT) 0 "Color" + MemberName 198(PS_OUTPUT) 1 "Depth" + Name 200 "psout" + Name 210 "Color" + Name 214 "Depth" + Name 220 "g_sSamp" + Name 222 "$Global" + MemberName 222($Global) 0 "c1" + MemberName 222($Global) 1 "c2" + MemberName 222($Global) 2 "c3" + MemberName 222($Global) 3 "c4" + MemberName 222($Global) 4 "o1" + MemberName 222($Global) 5 "o2" + MemberName 222($Global) 6 "o3" + MemberName 222($Global) 7 "o4" + Name 224 "" + Decorate 12(g_tTex1df4) DescriptorSet 0 + Decorate 12(g_tTex1df4) Binding 0 + Decorate 21(g_tTex1di4) DescriptorSet 0 + Decorate 28(g_tTex1du4) DescriptorSet 0 + Decorate 35(g_tBuffF) DescriptorSet 0 + Decorate 42(g_tBuffI) DescriptorSet 0 + Decorate 49(g_tBuffU) DescriptorSet 0 + Decorate 58(g_tTex1df4a) DescriptorSet 0 + Decorate 72(g_tTex1di4a) DescriptorSet 0 + Decorate 82(g_tTex1du4a) DescriptorSet 0 + Decorate 92(g_tTex2df4) DescriptorSet 0 + Decorate 103(g_tTex2di4) DescriptorSet 0 + Decorate 113(g_tTex2du4) DescriptorSet 0 + Decorate 125(g_tTex2df4a) DescriptorSet 0 + Decorate 139(g_tTex2di4a) DescriptorSet 0 + Decorate 151(g_tTex2du4a) DescriptorSet 0 + Decorate 163(g_tTex3df4) DescriptorSet 0 + Decorate 176(g_tTex3di4) DescriptorSet 0 + Decorate 188(g_tTex3du4) DescriptorSet 0 + Decorate 210(Color) Location 0 + Decorate 214(Depth) BuiltIn FragDepth + Decorate 220(g_sSamp) DescriptorSet 0 + Decorate 220(g_sSamp) Binding 0 + Decorate 222($Global) Block + Decorate 224 DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeFloat 32 + 10: TypeImage 9(float) 1D nonsampled format:Rgba32f + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeInt 32 1 + 19: TypeImage 14(int) 1D nonsampled format:Rgba32i + 20: TypePointer UniformConstant 19 + 21(g_tTex1di4): 20(ptr) Variable UniformConstant + 26: TypeImage 6(int) 1D nonsampled format:Rgba32ui + 27: TypePointer UniformConstant 26 + 28(g_tTex1du4): 27(ptr) Variable UniformConstant + 33: TypeImage 9(float) Buffer nonsampled format:Rgba32f + 34: TypePointer UniformConstant 33 + 35(g_tBuffF): 34(ptr) Variable UniformConstant + 40: TypeImage 14(int) Buffer nonsampled format:Rgba32i + 41: TypePointer UniformConstant 40 + 42(g_tBuffI): 41(ptr) Variable UniformConstant + 47: TypeImage 6(int) Buffer nonsampled format:Rgba32ui + 48: TypePointer UniformConstant 47 + 49(g_tBuffU): 48(ptr) Variable UniformConstant + 53: TypeVector 6(int) 2 + 54: TypePointer Function 53(ivec2) + 56: TypeImage 9(float) 1D array nonsampled format:Rgba32f + 57: TypePointer UniformConstant 56 + 58(g_tTex1df4a): 57(ptr) Variable UniformConstant + 60: TypeVector 14(int) 2 + 62: 6(int) Constant 0 + 66: 6(int) Constant 1 + 70: TypeImage 14(int) 1D array nonsampled format:Rgba32i + 71: TypePointer UniformConstant 70 + 72(g_tTex1di4a): 71(ptr) Variable UniformConstant + 80: TypeImage 6(int) 1D array nonsampled format:Rgba32ui + 81: TypePointer UniformConstant 80 + 82(g_tTex1du4a): 81(ptr) Variable UniformConstant + 90: TypeImage 9(float) 2D nonsampled format:Rgba32f + 91: TypePointer UniformConstant 90 + 92(g_tTex2df4): 91(ptr) Variable UniformConstant + 101: TypeImage 14(int) 2D nonsampled format:Rgba32i + 102: TypePointer UniformConstant 101 + 103(g_tTex2di4): 102(ptr) Variable UniformConstant + 111: TypeImage 6(int) 2D nonsampled format:Rgba32ui + 112: TypePointer UniformConstant 111 + 113(g_tTex2du4): 112(ptr) Variable UniformConstant + 120: TypeVector 6(int) 3 + 121: TypePointer Function 120(ivec3) + 123: TypeImage 9(float) 2D array nonsampled format:Rgba32f + 124: TypePointer UniformConstant 123 +125(g_tTex2df4a): 124(ptr) Variable UniformConstant + 127: TypeVector 14(int) 3 + 133: 6(int) Constant 2 + 137: TypeImage 14(int) 2D array nonsampled format:Rgba32i + 138: TypePointer UniformConstant 137 +139(g_tTex2di4a): 138(ptr) Variable UniformConstant + 149: TypeImage 6(int) 2D array nonsampled format:Rgba32ui + 150: TypePointer UniformConstant 149 +151(g_tTex2du4a): 150(ptr) Variable UniformConstant + 161: TypeImage 9(float) 3D nonsampled format:Rgba32f + 162: TypePointer UniformConstant 161 + 163(g_tTex3df4): 162(ptr) Variable UniformConstant + 174: TypeImage 14(int) 3D nonsampled format:Rgba32i + 175: TypePointer UniformConstant 174 + 176(g_tTex3di4): 175(ptr) Variable UniformConstant + 186: TypeImage 6(int) 3D nonsampled format:Rgba32ui + 187: TypePointer UniformConstant 186 + 188(g_tTex3du4): 187(ptr) Variable UniformConstant + 197: TypeVector 9(float) 4 + 198(PS_OUTPUT): TypeStruct 197(fvec4) 9(float) + 199: TypePointer Function 198(PS_OUTPUT) + 201: 14(int) Constant 0 + 202: 9(float) Constant 1065353216 + 203: 197(fvec4) ConstantComposite 202 202 202 202 + 204: TypePointer Function 197(fvec4) + 206: 14(int) Constant 1 + 207: TypePointer Function 9(float) + 209: TypePointer Output 197(fvec4) + 210(Color): 209(ptr) Variable Output + 213: TypePointer Output 9(float) + 214(Depth): 213(ptr) Variable Output + 218: TypeSampler + 219: TypePointer UniformConstant 218 + 220(g_sSamp): 219(ptr) Variable UniformConstant + 221: TypeVector 14(int) 4 + 222($Global): TypeStruct 14(int) 60(ivec2) 127(ivec3) 221(ivec4) 14(int) 60(ivec2) 127(ivec3) 221(ivec4) + 223: TypePointer Uniform 222($Global) + 224: 223(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label +8(sizeQueryTemp): 7(ptr) Variable Function + 16(WidthU): 7(ptr) Variable Function +18(sizeQueryTemp): 7(ptr) Variable Function +25(sizeQueryTemp): 7(ptr) Variable Function +32(sizeQueryTemp): 7(ptr) Variable Function +39(sizeQueryTemp): 7(ptr) Variable Function +46(sizeQueryTemp): 7(ptr) Variable Function +55(sizeQueryTemp): 54(ptr) Variable Function + 65(ElementsU): 7(ptr) Variable Function +69(sizeQueryTemp): 54(ptr) Variable Function +79(sizeQueryTemp): 54(ptr) Variable Function +89(sizeQueryTemp): 54(ptr) Variable Function + 97(HeightU): 7(ptr) Variable Function +100(sizeQueryTemp): 54(ptr) Variable Function +110(sizeQueryTemp): 54(ptr) Variable Function +122(sizeQueryTemp): 121(ptr) Variable Function +136(sizeQueryTemp): 121(ptr) Variable Function +148(sizeQueryTemp): 121(ptr) Variable Function +160(sizeQueryTemp): 121(ptr) Variable Function + 170(DepthU): 7(ptr) Variable Function +173(sizeQueryTemp): 121(ptr) Variable Function +185(sizeQueryTemp): 121(ptr) Variable Function + 200(psout): 199(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 15: 14(int) ImageQuerySize 13 + Store 8(sizeQueryTemp) 15 + 17: 6(int) Load 8(sizeQueryTemp) + Store 16(WidthU) 17 + 22: 19 Load 21(g_tTex1di4) + 23: 14(int) ImageQuerySize 22 + Store 18(sizeQueryTemp) 23 + 24: 6(int) Load 18(sizeQueryTemp) + Store 16(WidthU) 24 + 29: 26 Load 28(g_tTex1du4) + 30: 14(int) ImageQuerySize 29 + Store 25(sizeQueryTemp) 30 + 31: 6(int) Load 25(sizeQueryTemp) + Store 16(WidthU) 31 + 36: 33 Load 35(g_tBuffF) + 37: 14(int) ImageQuerySize 36 + Store 32(sizeQueryTemp) 37 + 38: 6(int) Load 32(sizeQueryTemp) + Store 16(WidthU) 38 + 43: 40 Load 42(g_tBuffI) + 44: 14(int) ImageQuerySize 43 + Store 39(sizeQueryTemp) 44 + 45: 6(int) Load 39(sizeQueryTemp) + Store 16(WidthU) 45 + 50: 47 Load 49(g_tBuffU) + 51: 14(int) ImageQuerySize 50 + Store 46(sizeQueryTemp) 51 + 52: 6(int) Load 46(sizeQueryTemp) + Store 16(WidthU) 52 + 59: 56 Load 58(g_tTex1df4a) + 61: 60(ivec2) ImageQuerySize 59 + Store 55(sizeQueryTemp) 61 + 63: 7(ptr) AccessChain 55(sizeQueryTemp) 62 + 64: 6(int) Load 63 + Store 16(WidthU) 64 + 67: 7(ptr) AccessChain 55(sizeQueryTemp) 66 + 68: 6(int) Load 67 + Store 65(ElementsU) 68 + 73: 70 Load 72(g_tTex1di4a) + 74: 60(ivec2) ImageQuerySize 73 + Store 69(sizeQueryTemp) 74 + 75: 7(ptr) AccessChain 69(sizeQueryTemp) 62 + 76: 6(int) Load 75 + Store 16(WidthU) 76 + 77: 7(ptr) AccessChain 69(sizeQueryTemp) 66 + 78: 6(int) Load 77 + Store 65(ElementsU) 78 + 83: 80 Load 82(g_tTex1du4a) + 84: 60(ivec2) ImageQuerySize 83 + Store 79(sizeQueryTemp) 84 + 85: 7(ptr) AccessChain 79(sizeQueryTemp) 62 + 86: 6(int) Load 85 + Store 16(WidthU) 86 + 87: 7(ptr) AccessChain 79(sizeQueryTemp) 66 + 88: 6(int) Load 87 + Store 65(ElementsU) 88 + 93: 90 Load 92(g_tTex2df4) + 94: 60(ivec2) ImageQuerySize 93 + Store 89(sizeQueryTemp) 94 + 95: 7(ptr) AccessChain 89(sizeQueryTemp) 62 + 96: 6(int) Load 95 + Store 16(WidthU) 96 + 98: 7(ptr) AccessChain 89(sizeQueryTemp) 66 + 99: 6(int) Load 98 + Store 97(HeightU) 99 + 104: 101 Load 103(g_tTex2di4) + 105: 60(ivec2) ImageQuerySize 104 + Store 100(sizeQueryTemp) 105 + 106: 7(ptr) AccessChain 100(sizeQueryTemp) 62 + 107: 6(int) Load 106 + Store 16(WidthU) 107 + 108: 7(ptr) AccessChain 100(sizeQueryTemp) 66 + 109: 6(int) Load 108 + Store 97(HeightU) 109 + 114: 111 Load 113(g_tTex2du4) + 115: 60(ivec2) ImageQuerySize 114 + Store 110(sizeQueryTemp) 115 + 116: 7(ptr) AccessChain 110(sizeQueryTemp) 62 + 117: 6(int) Load 116 + Store 16(WidthU) 117 + 118: 7(ptr) AccessChain 110(sizeQueryTemp) 66 + 119: 6(int) Load 118 + Store 97(HeightU) 119 + 126: 123 Load 125(g_tTex2df4a) + 128: 127(ivec3) ImageQuerySize 126 + Store 122(sizeQueryTemp) 128 + 129: 7(ptr) AccessChain 122(sizeQueryTemp) 62 + 130: 6(int) Load 129 + Store 16(WidthU) 130 + 131: 7(ptr) AccessChain 122(sizeQueryTemp) 66 + 132: 6(int) Load 131 + Store 97(HeightU) 132 + 134: 7(ptr) AccessChain 122(sizeQueryTemp) 133 + 135: 6(int) Load 134 + Store 65(ElementsU) 135 + 140: 137 Load 139(g_tTex2di4a) + 141: 127(ivec3) ImageQuerySize 140 + Store 136(sizeQueryTemp) 141 + 142: 7(ptr) AccessChain 136(sizeQueryTemp) 62 + 143: 6(int) Load 142 + Store 16(WidthU) 143 + 144: 7(ptr) AccessChain 136(sizeQueryTemp) 66 + 145: 6(int) Load 144 + Store 97(HeightU) 145 + 146: 7(ptr) AccessChain 136(sizeQueryTemp) 133 + 147: 6(int) Load 146 + Store 65(ElementsU) 147 + 152: 149 Load 151(g_tTex2du4a) + 153: 127(ivec3) ImageQuerySize 152 + Store 148(sizeQueryTemp) 153 + 154: 7(ptr) AccessChain 148(sizeQueryTemp) 62 + 155: 6(int) Load 154 + Store 16(WidthU) 155 + 156: 7(ptr) AccessChain 148(sizeQueryTemp) 66 + 157: 6(int) Load 156 + Store 97(HeightU) 157 + 158: 7(ptr) AccessChain 148(sizeQueryTemp) 133 + 159: 6(int) Load 158 + Store 65(ElementsU) 159 + 164: 161 Load 163(g_tTex3df4) + 165: 127(ivec3) ImageQuerySize 164 + Store 160(sizeQueryTemp) 165 + 166: 7(ptr) AccessChain 160(sizeQueryTemp) 62 + 167: 6(int) Load 166 + Store 16(WidthU) 167 + 168: 7(ptr) AccessChain 160(sizeQueryTemp) 66 + 169: 6(int) Load 168 + Store 97(HeightU) 169 + 171: 7(ptr) AccessChain 160(sizeQueryTemp) 133 + 172: 6(int) Load 171 + Store 170(DepthU) 172 + 177: 174 Load 176(g_tTex3di4) + 178: 127(ivec3) ImageQuerySize 177 + Store 173(sizeQueryTemp) 178 + 179: 7(ptr) AccessChain 173(sizeQueryTemp) 62 + 180: 6(int) Load 179 + Store 16(WidthU) 180 + 181: 7(ptr) AccessChain 173(sizeQueryTemp) 66 + 182: 6(int) Load 181 + Store 97(HeightU) 182 + 183: 7(ptr) AccessChain 173(sizeQueryTemp) 133 + 184: 6(int) Load 183 + Store 170(DepthU) 184 + 189: 186 Load 188(g_tTex3du4) + 190: 127(ivec3) ImageQuerySize 189 + Store 185(sizeQueryTemp) 190 + 191: 7(ptr) AccessChain 185(sizeQueryTemp) 62 + 192: 6(int) Load 191 + Store 16(WidthU) 192 + 193: 7(ptr) AccessChain 185(sizeQueryTemp) 66 + 194: 6(int) Load 193 + Store 97(HeightU) 194 + 195: 7(ptr) AccessChain 185(sizeQueryTemp) 133 + 196: 6(int) Load 195 + Store 170(DepthU) 196 + 205: 204(ptr) AccessChain 200(psout) 201 + Store 205 203 + 208: 207(ptr) AccessChain 200(psout) 206 + Store 208 202 + 211: 204(ptr) AccessChain 200(psout) 201 + 212: 197(fvec4) Load 211 + Store 210(Color) 212 + 215: 207(ptr) AccessChain 200(psout) 206 + 216: 9(float) Load 215 + Store 214(Depth) 216 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out new file mode 100644 index 00000000..9465c62b --- /dev/null +++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out @@ -0,0 +1,133 @@ +hlsl.getsampleposition.dx10.frag +ERROR: 0:16: '' : unimplemented: GetSamplePosition +ERROR: 0:17: '' : unimplemented: GetSamplePosition +ERROR: 2 compilation errors. No code generated. + + +Shader version: 450 +gl_FragCoord origin is upper left +ERROR: node is still EOpNull! +0:13 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:13 Function Parameters: +0:? Sequence +0:16 Sequence +0:16 move second child to first child (temp 2-component vector of float) +0:16 'r00' (temp 2-component vector of float) +0:16 ERROR: Bad aggregation op + (global 2-component vector of float) +0:16 'g_tTex2dmsf4' (uniform texture2DMS) +0:16 Constant: +0:16 1 (const int) +0:17 Sequence +0:17 move second child to first child (temp 2-component vector of float) +0:17 'r01' (temp 2-component vector of float) +0:17 ERROR: Bad aggregation op + (global 2-component vector of float) +0:17 'g_tTex2dmsf4a' (uniform texture2DMSArray) +0:17 Constant: +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 Depth}) +0:19 Constant: +0:19 0 (const int) +0:19 Constant: +0:19 1.000000 +0:19 1.000000 +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) +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 Sequence +0:22 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: + + +Shader version: 450 +gl_FragCoord origin is upper left +ERROR: node is still EOpNull! +0:13 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:13 Function Parameters: +0:? Sequence +0:16 Sequence +0:16 move second child to first child (temp 2-component vector of float) +0:16 'r00' (temp 2-component vector of float) +0:16 ERROR: Bad aggregation op + (global 2-component vector of float) +0:16 'g_tTex2dmsf4' (uniform texture2DMS) +0:16 Constant: +0:16 1 (const int) +0:17 Sequence +0:17 move second child to first child (temp 2-component vector of float) +0:17 'r01' (temp 2-component vector of float) +0:17 ERROR: Bad aggregation op + (global 2-component vector of float) +0:17 'g_tTex2dmsf4a' (uniform texture2DMSArray) +0:17 Constant: +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 Depth}) +0:19 Constant: +0:19 0 (const int) +0:19 Constant: +0:19 1.000000 +0:19 1.000000 +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) +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 Sequence +0:22 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 4554ec6a..3b329ae1 100755 --- a/Test/baseResults/hlsl.if.frag.out +++ b/Test/baseResults/hlsl.if.frag.out @@ -2,71 +2,89 @@ hlsl.if.frag 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ Linked fragment stage: 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 1a4c8024..b31921b4 100755 --- a/Test/baseResults/hlsl.init.frag.out +++ b/Test/baseResults/hlsl.init.frag.out @@ -56,56 +56,81 @@ gl_FragCoord origin is upper left 0:6 'c5' (global float) 0:6 Constant: 0:6 1.500000 -0:25 Function Definition: ShaderFunction(vf4; (global 4-component vector of float) -0:9 Function Parameters: -0:9 'input' (in 4-component vector of float) +0:9 Sequence +0:9 move second child to first child (temp structure{temp int f}) +0:9 'single1' (global structure{temp int f}) +0:9 Constant: +0:9 10 (const int) +0:12 Sequence +0:12 move second child to first child (temp structure{temp 2-component vector of uint v}) +0:12 'single2' (global structure{temp 2-component vector of uint v}) +0:12 Constant: +0:12 1 (const uint) +0:12 2 (const uint) +0:15 Sequence +0:15 move second child to first child (temp structure{temp structure{temp int f} s1}) +0:15 'single3' (global structure{temp structure{temp int f} s1}) +0:15 Constant: +0:15 3 (const int) +0:18 Sequence +0:18 move second child to first child (temp structure{temp structure{temp 2-component vector of uint v} s1}) +0:18 'single4' (global structure{temp structure{temp 2-component vector of uint v} s1}) +0:18 Constant: +0:18 4 (const uint) +0:18 5 (const uint) +0:21 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float) +0:21 Function Parameters: +0:21 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:10 Sequence -0:10 move second child to first child (temp 4-component vector of float) -0:10 'a2' (temp 4-component vector of float) +0:22 Sequence +0:22 move second child to first child (temp 4-component vector of float) +0:22 'a2' (temp 4-component vector of float) 0:? Constant: 0:? 0.200000 0:? 0.300000 0:? 0.400000 0:? 0.500000 -0:20 Sequence -0:20 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) -0:20 's2i' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) -0:20 Construct structure (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) -0:20 Constant: -0:20 9 (const int) -0:20 'a5' (global float) -0:20 Construct structure (temp structure{temp float f, temp int i}) -0:20 Comma (temp float) -0:20 'a3' (global float) -0:20 'a4' (global float) -0:20 Constant: -0:20 12 (const int) -0:20 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) -0:20 's2' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) +0:32 Sequence +0:32 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) +0:32 's2i' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) +0:32 Construct structure (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) +0:32 Constant: +0:32 9 (const int) +0:32 'a5' (global float) +0:32 Construct structure (temp structure{temp float f, temp int i}) +0:32 Comma (temp float) +0:32 'a3' (global float) +0:32 'a4' (global float) +0:32 Constant: +0:32 12 (const int) +0:32 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) +0:32 's2' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) 0:? Construct structure (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) -0:20 Constant: -0:20 9 (const int) -0:20 'a5' (global float) +0:32 Constant: +0:32 9 (const int) +0:32 'a5' (global float) 0:? Construct structure (temp structure{temp float f, temp int i}) -0:20 Comma (temp float) -0:20 'a3' (global float) -0:20 'a4' (global float) -0:20 Constant: -0:20 12 (const int) -0:21 Sequence -0:21 move second child to first child (temp float) -0:21 'a8' (temp float) -0:21 Comma (temp float) -0:21 'a2' (temp 4-component vector of float) -0:21 'b2' (global float) -0:21 move second child to first child (temp float) -0:21 'a9' (temp float) -0:21 'a5' (global float) -0:23 Branch: Return with expression -0:23 component-wise multiply (temp 4-component vector of float) -0:23 'input' (in 4-component vector of float) -0:23 'a1' (global 4-component vector of float) +0:32 Comma (temp float) +0:32 'a3' (global float) +0:32 'a4' (global float) +0:32 Constant: +0:32 12 (const int) +0:33 Sequence +0:33 move second child to first child (temp float) +0:33 'a8' (temp float) +0:33 Comma (temp float) +0:33 'a2' (temp 4-component vector of float) +0:33 'b2' (global float) +0:33 move second child to first child (temp float) +0:33 'a9' (temp float) +0:33 'a5' (global 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) @@ -121,6 +146,12 @@ gl_FragCoord origin is upper left 0:? 'a5' (global float) 0:? 'b5' (global float) 0:? 'c5' (global float) +0:? 'single1' (global structure{temp int f}) +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: @@ -183,56 +214,81 @@ gl_FragCoord origin is upper left 0:6 'c5' (global float) 0:6 Constant: 0:6 1.500000 -0:25 Function Definition: ShaderFunction(vf4; (global 4-component vector of float) -0:9 Function Parameters: -0:9 'input' (in 4-component vector of float) +0:9 Sequence +0:9 move second child to first child (temp structure{temp int f}) +0:9 'single1' (global structure{temp int f}) +0:9 Constant: +0:9 10 (const int) +0:12 Sequence +0:12 move second child to first child (temp structure{temp 2-component vector of uint v}) +0:12 'single2' (global structure{temp 2-component vector of uint v}) +0:12 Constant: +0:12 1 (const uint) +0:12 2 (const uint) +0:15 Sequence +0:15 move second child to first child (temp structure{temp structure{temp int f} s1}) +0:15 'single3' (global structure{temp structure{temp int f} s1}) +0:15 Constant: +0:15 3 (const int) +0:18 Sequence +0:18 move second child to first child (temp structure{temp structure{temp 2-component vector of uint v} s1}) +0:18 'single4' (global structure{temp structure{temp 2-component vector of uint v} s1}) +0:18 Constant: +0:18 4 (const uint) +0:18 5 (const uint) +0:21 Function Definition: ShaderFunction(vf4; (temp 4-component vector of float) +0:21 Function Parameters: +0:21 'input' (layout(location=0 ) in 4-component vector of float) 0:? Sequence -0:10 Sequence -0:10 move second child to first child (temp 4-component vector of float) -0:10 'a2' (temp 4-component vector of float) +0:22 Sequence +0:22 move second child to first child (temp 4-component vector of float) +0:22 'a2' (temp 4-component vector of float) 0:? Constant: 0:? 0.200000 0:? 0.300000 0:? 0.400000 0:? 0.500000 -0:20 Sequence -0:20 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) -0:20 's2i' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) -0:20 Construct structure (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) -0:20 Constant: -0:20 9 (const int) -0:20 'a5' (global float) -0:20 Construct structure (temp structure{temp float f, temp int i}) -0:20 Comma (temp float) -0:20 'a3' (global float) -0:20 'a4' (global float) -0:20 Constant: -0:20 12 (const int) -0:20 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) -0:20 's2' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) +0:32 Sequence +0:32 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) +0:32 's2i' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) +0:32 Construct structure (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) +0:32 Constant: +0:32 9 (const int) +0:32 'a5' (global float) +0:32 Construct structure (temp structure{temp float f, temp int i}) +0:32 Comma (temp float) +0:32 'a3' (global float) +0:32 'a4' (global float) +0:32 Constant: +0:32 12 (const int) +0:32 move second child to first child (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) +0:32 's2' (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) 0:? Construct structure (temp structure{temp int j, temp float g, temp structure{temp float f, temp int i} s1}) -0:20 Constant: -0:20 9 (const int) -0:20 'a5' (global float) +0:32 Constant: +0:32 9 (const int) +0:32 'a5' (global float) 0:? Construct structure (temp structure{temp float f, temp int i}) -0:20 Comma (temp float) -0:20 'a3' (global float) -0:20 'a4' (global float) -0:20 Constant: -0:20 12 (const int) -0:21 Sequence -0:21 move second child to first child (temp float) -0:21 'a8' (temp float) -0:21 Comma (temp float) -0:21 'a2' (temp 4-component vector of float) -0:21 'b2' (global float) -0:21 move second child to first child (temp float) -0:21 'a9' (temp float) -0:21 'a5' (global float) -0:23 Branch: Return with expression -0:23 component-wise multiply (temp 4-component vector of float) -0:23 'input' (in 4-component vector of float) -0:23 'a1' (global 4-component vector of float) +0:32 Comma (temp float) +0:32 'a3' (global float) +0:32 'a4' (global float) +0:32 Constant: +0:32 12 (const int) +0:33 Sequence +0:33 move second child to first child (temp float) +0:33 'a8' (temp float) +0:33 Comma (temp float) +0:33 'a2' (temp 4-component vector of float) +0:33 'b2' (global float) +0:33 move second child to first child (temp float) +0:33 'a9' (temp float) +0:33 'a5' (global 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) @@ -248,17 +304,22 @@ gl_FragCoord origin is upper left 0:? 'a5' (global float) 0:? 'b5' (global float) 0:? 'c5' (global float) +0:? 'single1' (global structure{temp int f}) +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 67 +// Id's are bound by 97 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "ShaderFunction" 60 + EntryPoint Fragment 4 "ShaderFunction" 88 90 ExecutionMode 4 OriginUpperLeft - Source HLSL 450 Name 4 "ShaderFunction" Name 9 "a1" Name 14 "b1" @@ -269,24 +330,39 @@ gl_FragCoord origin is upper left Name 27 "b4" Name 29 "a5" Name 30 "c5" - Name 33 "a2" - Name 36 "S1" - MemberName 36(S1) 0 "f" - MemberName 36(S1) 1 "i" - Name 37 "S2" - MemberName 37(S2) 0 "j" - MemberName 37(S2) 1 "g" - MemberName 37(S2) 2 "s1" - Name 39 "s2i" - Name 42 "a3" - Name 43 "a4" - Name 48 "s2" - Name 54 "a8" - Name 55 "b2" - Name 57 "a9" - Name 60 "input" - Name 65 "c4" - Name 66 "b5" + Name 33 "Single1" + MemberName 33(Single1) 0 "f" + Name 35 "single1" + Name 40 "Single2" + MemberName 40(Single2) 0 "v" + Name 42 "single2" + Name 47 "Single3" + MemberName 47(Single3) 0 "s1" + Name 49 "single3" + Name 53 "Single4" + MemberName 53(Single4) 0 "s1" + Name 55 "single4" + Name 62 "a2" + Name 64 "S1" + MemberName 64(S1) 0 "f" + MemberName 64(S1) 1 "i" + Name 65 "S2" + MemberName 65(S2) 0 "j" + MemberName 65(S2) 1 "g" + MemberName 65(S2) 2 "s1" + Name 67 "s2i" + Name 70 "a3" + Name 71 "a4" + Name 76 "s2" + Name 82 "a8" + Name 83 "b2" + Name 85 "a9" + 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 @@ -315,29 +391,59 @@ gl_FragCoord origin is upper left 29(a5): 22(ptr) Variable Private 30(c5): 22(ptr) Variable Private 31: 6(float) Constant 1069547520 - 32: TypePointer Function 7(fvec4) - 34: 7(fvec4) ConstantComposite 24 26 28 11 - 35: TypeInt 32 1 - 36(S1): TypeStruct 6(float) 35(int) - 37(S2): TypeStruct 35(int) 6(float) 36(S1) - 38: TypePointer Function 37(S2) - 40: 35(int) Constant 9 - 42(a3): 22(ptr) Variable Private - 43(a4): 22(ptr) Variable Private - 45: 35(int) Constant 12 - 53: TypePointer Function 6(float) - 55(b2): 22(ptr) Variable Private - 59: TypePointer Input 7(fvec4) - 60(input): 59(ptr) Variable Input - 65(c4): 22(ptr) Variable Private - 66(b5): 22(ptr) Variable Private + 32: TypeInt 32 1 + 33(Single1): TypeStruct 32(int) + 34: TypePointer Private 33(Single1) + 35(single1): 34(ptr) Variable Private + 36: 32(int) Constant 10 + 37: 33(Single1) ConstantComposite 36 + 38: TypeInt 32 0 + 39: TypeVector 38(int) 2 + 40(Single2): TypeStruct 39(ivec2) + 41: TypePointer Private 40(Single2) + 42(single2): 41(ptr) Variable Private + 43: 38(int) Constant 1 + 44: 38(int) Constant 2 + 45: 39(ivec2) ConstantComposite 43 44 + 46: 40(Single2) ConstantComposite 45 + 47(Single3): TypeStruct 33(Single1) + 48: TypePointer Private 47(Single3) + 49(single3): 48(ptr) Variable Private + 50: 32(int) Constant 3 + 51: 33(Single1) ConstantComposite 50 + 52: 47(Single3) ConstantComposite 51 + 53(Single4): TypeStruct 40(Single2) + 54: TypePointer Private 53(Single4) + 55(single4): 54(ptr) Variable Private + 56: 38(int) Constant 4 + 57: 38(int) Constant 5 + 58: 39(ivec2) ConstantComposite 56 57 + 59: 40(Single2) ConstantComposite 58 + 60: 53(Single4) ConstantComposite 59 + 61: TypePointer Function 7(fvec4) + 63: 7(fvec4) ConstantComposite 24 26 28 11 + 64(S1): TypeStruct 6(float) 32(int) + 65(S2): TypeStruct 32(int) 6(float) 64(S1) + 66: TypePointer Function 65(S2) + 68: 32(int) Constant 9 + 70(a3): 22(ptr) Variable Private + 71(a4): 22(ptr) Variable Private + 73: 32(int) Constant 12 + 81: TypePointer Function 6(float) + 83(b2): 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 - 33(a2): 32(ptr) Variable Function - 39(s2i): 38(ptr) Variable Function - 48(s2): 38(ptr) Variable Function - 54(a8): 53(ptr) Variable Function - 57(a9): 53(ptr) Variable Function + 62(a2): 61(ptr) Variable Function + 67(s2i): 66(ptr) Variable Function + 76(s2): 66(ptr) Variable Function + 82(a8): 81(ptr) Variable Function + 85(a9): 81(ptr) Variable Function Store 9(a1) 13 Store 14(b1) 19 Store 20(a1i) 13 @@ -347,23 +453,28 @@ gl_FragCoord origin is upper left Store 27(b4) 28 Store 29(a5) 11 Store 30(c5) 31 - Store 33(a2) 34 - 41: 6(float) Load 29(a5) - 44: 6(float) Load 43(a4) - 46: 36(S1) CompositeConstruct 44 45 - 47: 37(S2) CompositeConstruct 40 41 46 - Store 39(s2i) 47 - 49: 6(float) Load 29(a5) - 50: 6(float) Load 43(a4) - 51: 36(S1) CompositeConstruct 50 45 - 52: 37(S2) CompositeConstruct 40 49 51 - Store 48(s2) 52 - 56: 6(float) Load 55(b2) - Store 54(a8) 56 - 58: 6(float) Load 29(a5) - Store 57(a9) 58 - 61: 7(fvec4) Load 60(input) - 62: 7(fvec4) Load 9(a1) - 63: 7(fvec4) FMul 61 62 - ReturnValue 63 + Store 35(single1) 37 + Store 42(single2) 46 + Store 49(single3) 52 + Store 55(single4) 60 + Store 62(a2) 63 + 69: 6(float) Load 29(a5) + 72: 6(float) Load 71(a4) + 74: 64(S1) CompositeConstruct 72 73 + 75: 65(S2) CompositeConstruct 68 69 74 + Store 67(s2i) 75 + 77: 6(float) Load 29(a5) + 78: 6(float) Load 71(a4) + 79: 64(S1) CompositeConstruct 78 73 + 80: 65(S2) CompositeConstruct 68 77 79 + Store 76(s2) 80 + 84: 6(float) Load 83(b2) + Store 82(a8) 84 + 86: 6(float) Load 29(a5) + Store 85(a9) 86 + 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 new file mode 100644 index 00000000..9b53e304 --- /dev/null +++ b/Test/baseResults/hlsl.init2.frag.out @@ -0,0 +1,197 @@ +hlsl.init2.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: Test1( (temp void) +0:3 Function Parameters: +0:? Sequence +0:5 Sequence +0:5 move second child to first child (temp structure{temp 2-component vector of float a}) +0:5 'test1' (temp structure{temp 2-component vector of float a}) +0:5 Constant: +0:5 1.000000 +0:5 2.000000 +0:9 Sequence +0:9 move second child to first child (temp structure{temp 2-component vector of float a}) +0:9 'test2' (temp structure{temp 2-component vector of float a}) +0:9 Constant: +0:9 3.000000 +0:9 4.000000 +0:17 Sequence +0:17 move second child to first child (temp float) +0:17 'test4' (temp float) +0:17 Constant: +0:17 7.000000 +0:20 Sequence +0:20 move second child to first child (temp structure{temp float a, temp float b, temp float c}) +0:20 'test5' (temp structure{temp float a, temp float b, temp float c}) +0:20 Constant: +0:20 8.000000 +0:20 9.000000 +0:20 10.000000 +0:26 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:26 Function Parameters: +0:? Sequence +0:27 Function Call: Test1( (temp void) +0:30 move second child to first child (temp 4-component vector of float) +0:30 color: direct index for structure (temp 4-component vector of float) +0:30 'ps_output' (temp structure{temp 4-component vector of float color}) +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1.000000 +0:30 1.000000 +0:30 1.000000 +0:30 1.000000 +0:31 Sequence +0:31 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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: Test1( (temp void) +0:3 Function Parameters: +0:? Sequence +0:5 Sequence +0:5 move second child to first child (temp structure{temp 2-component vector of float a}) +0:5 'test1' (temp structure{temp 2-component vector of float a}) +0:5 Constant: +0:5 1.000000 +0:5 2.000000 +0:9 Sequence +0:9 move second child to first child (temp structure{temp 2-component vector of float a}) +0:9 'test2' (temp structure{temp 2-component vector of float a}) +0:9 Constant: +0:9 3.000000 +0:9 4.000000 +0:17 Sequence +0:17 move second child to first child (temp float) +0:17 'test4' (temp float) +0:17 Constant: +0:17 7.000000 +0:20 Sequence +0:20 move second child to first child (temp structure{temp float a, temp float b, temp float c}) +0:20 'test5' (temp structure{temp float a, temp float b, temp float c}) +0:20 Constant: +0:20 8.000000 +0:20 9.000000 +0:20 10.000000 +0:26 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:26 Function Parameters: +0:? Sequence +0:27 Function Call: Test1( (temp void) +0:30 move second child to first child (temp 4-component vector of float) +0:30 color: direct index for structure (temp 4-component vector of float) +0:30 'ps_output' (temp structure{temp 4-component vector of float color}) +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1.000000 +0:30 1.000000 +0:30 1.000000 +0:30 1.000000 +0:31 Sequence +0:31 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 47 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 43 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 6 "Test1(" + Name 10 "mystruct" + MemberName 10(mystruct) 0 "a" + Name 12 "test1" + Name 17 "test2" + Name 23 "test4" + Name 25 "mystruct2" + MemberName 25(mystruct2) 0 "a" + MemberName 25(mystruct2) 1 "b" + MemberName 25(mystruct2) 2 "c" + Name 27 "test5" + 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 + 9: TypeVector 8(float) 2 + 10(mystruct): TypeStruct 9(fvec2) + 11: TypePointer Function 10(mystruct) + 13: 8(float) Constant 1065353216 + 14: 8(float) Constant 1073741824 + 15: 9(fvec2) ConstantComposite 13 14 + 16:10(mystruct) ConstantComposite 15 + 18: 8(float) Constant 1077936128 + 19: 8(float) Constant 1082130432 + 20: 9(fvec2) ConstantComposite 18 19 + 21:10(mystruct) ConstantComposite 20 + 22: TypePointer Function 8(float) + 24: 8(float) Constant 1088421888 + 25(mystruct2): TypeStruct 8(float) 8(float) 8(float) + 26: TypePointer Function 25(mystruct2) + 28: 8(float) Constant 1090519040 + 29: 8(float) Constant 1091567616 + 30: 8(float) Constant 1092616192 + 31:25(mystruct2) ConstantComposite 28 29 30 + 33: TypeVector 8(float) 4 + 34(PS_OUTPUT): TypeStruct 33(fvec4) + 35: TypePointer Function 34(PS_OUTPUT) + 37: TypeInt 32 1 + 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 + 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 + 12(test1): 11(ptr) Variable Function + 17(test2): 11(ptr) Variable Function + 23(test4): 22(ptr) Variable Function + 27(test5): 26(ptr) Variable Function + Store 12(test1) 16 + Store 17(test2) 21 + Store 23(test4) 24 + Store 27(test5) 31 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out new file mode 100644 index 00000000..b2716a4c --- /dev/null +++ b/Test/baseResults/hlsl.inoutquals.frag.out @@ -0,0 +1,272 @@ +hlsl.inoutquals.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:8 Function Definition: MyFunc(f1;f1;f1; (temp void) +0:8 Function Parameters: +0:8 'x' (in float) +0:8 'y' (out float) +0:8 'z' (inout float) +0:? Sequence +0:9 move second child to first child (temp float) +0:9 'y' (out float) +0:9 'x' (in float) +0:10 move second child to first child (temp float) +0:10 'z' (inout float) +0:10 'y' (out float) +0:11 move second child to first child (temp float) +0:11 'x' (in float) +0:11 Constant: +0:11 -1.000000 +0:15 Function Definition: main(vf4;i1; (temp 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:15 'sampleMask' (out int SampleMaskIn) +0:? Sequence +0:18 Sequence +0:18 move second child to first child (temp float) +0:18 'x' (temp float) +0:18 Constant: +0:18 7.000000 +0:18 move second child to first child (temp float) +0:18 'z' (temp float) +0:18 Constant: +0:18 3.000000 +0:19 Function Call: MyFunc(f1;f1;f1; (temp void) +0:19 'x' (temp float) +0:19 'y' (temp float) +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 Depth}) +0:21 Constant: +0:21 0 (const int) +0:? Construct vec4 (temp 4-component vector of float) +0:21 'x' (temp float) +0:21 'y' (temp float) +0:21 'z' (temp float) +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) +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 Sequence +0:24 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) +0:? 'sampleMask' (out int SampleMaskIn) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:8 Function Definition: MyFunc(f1;f1;f1; (temp void) +0:8 Function Parameters: +0:8 'x' (in float) +0:8 'y' (out float) +0:8 'z' (inout float) +0:? Sequence +0:9 move second child to first child (temp float) +0:9 'y' (out float) +0:9 'x' (in float) +0:10 move second child to first child (temp float) +0:10 'z' (inout float) +0:10 'y' (out float) +0:11 move second child to first child (temp float) +0:11 'x' (in float) +0:11 Constant: +0:11 -1.000000 +0:15 Function Definition: main(vf4;i1; (temp 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:15 'sampleMask' (out int SampleMaskIn) +0:? Sequence +0:18 Sequence +0:18 move second child to first child (temp float) +0:18 'x' (temp float) +0:18 Constant: +0:18 7.000000 +0:18 move second child to first child (temp float) +0:18 'z' (temp float) +0:18 Constant: +0:18 3.000000 +0:19 Function Call: MyFunc(f1;f1;f1; (temp void) +0:19 'x' (temp float) +0:19 'y' (temp float) +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 Depth}) +0:21 Constant: +0:21 0 (const int) +0:? Construct vec4 (temp 4-component vector of float) +0:21 'x' (temp float) +0:21 'y' (temp float) +0:21 'z' (temp float) +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) +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 Sequence +0:24 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) +0:? 'sampleMask' (out int SampleMaskIn) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 63 + + Capability Shader + Capability SampleRateShading + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 45 53 57 62 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 12 "MyFunc(f1;f1;f1;" + Name 9 "x" + Name 10 "y" + Name 11 "z" + Name 17 "x" + Name 19 "z" + Name 21 "y" + Name 22 "param" + Name 24 "param" + Name 25 "param" + Name 31 "PS_OUTPUT" + MemberName 31(PS_OUTPUT) 0 "Color" + MemberName 31(PS_OUTPUT) 1 "Depth" + Name 33 "psout" + Name 45 "inpos" + Name 53 "Color" + Name 57 "Depth" + Name 62 "sampleMask" + Decorate 45(inpos) NoPerspective + Decorate 45(inpos) BuiltIn FragCoord + Decorate 53(Color) Location 0 + Decorate 57(Depth) BuiltIn FragDepth + Decorate 62(sampleMask) BuiltIn SampleMask + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 8: TypeFunction 2 7(ptr) 7(ptr) 7(ptr) + 16: 6(float) Constant 3212836864 + 18: 6(float) Constant 1088421888 + 20: 6(float) Constant 1077936128 + 30: TypeVector 6(float) 4 + 31(PS_OUTPUT): TypeStruct 30(fvec4) 6(float) + 32: TypePointer Function 31(PS_OUTPUT) + 34: TypeInt 32 1 + 35: 34(int) Constant 0 + 39: 6(float) Constant 1065353216 + 41: TypePointer Function 30(fvec4) + 43: 34(int) Constant 1 + 44: TypePointer Input 30(fvec4) + 45(inpos): 44(ptr) Variable Input + 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 + 61: TypePointer Output 34(int) + 62(sampleMask): 61(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 17(x): 7(ptr) Variable Function + 19(z): 7(ptr) Variable Function + 21(y): 7(ptr) Variable Function + 22(param): 7(ptr) Variable Function + 24(param): 7(ptr) Variable Function + 25(param): 7(ptr) Variable Function + 33(psout): 32(ptr) Variable Function + Store 17(x) 18 + Store 19(z) 20 + 23: 6(float) Load 17(x) + Store 22(param) 23 + 26: 6(float) Load 19(z) + Store 25(param) 26 + 27: 2 FunctionCall 12(MyFunc(f1;f1;f1;) 22(param) 24(param) 25(param) + 28: 6(float) Load 24(param) + Store 21(y) 28 + 29: 6(float) Load 25(param) + Store 19(z) 29 + 36: 6(float) Load 17(x) + 37: 6(float) Load 21(y) + 38: 6(float) Load 19(z) + 40: 30(fvec4) CompositeConstruct 36 37 38 39 + 42: 41(ptr) AccessChain 33(psout) 35 + Store 42 40 + 49: 48(ptr) AccessChain 45(inpos) 47 + 50: 6(float) Load 49 + 51: 7(ptr) AccessChain 33(psout) 43 + Store 51 50 + 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 + 10(y): 7(ptr) FunctionParameter + 11(z): 7(ptr) FunctionParameter + 13: Label + 14: 6(float) Load 9(x) + Store 10(y) 14 + 15: 6(float) Load 10(y) + Store 11(z) 15 + Store 9(x) 16 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/Test/baseResults/hlsl.intrinsics.barriers.comp.out index c400fea3..5d92dd1f 100644 --- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out +++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out @@ -2,7 +2,7 @@ hlsl.intrinsics.barriers.comp Shader version: 450 local_size = (1, 1, 1) 0:? Sequence -0:14 Function Definition: ComputeShaderFunction( (global float) +0:3 Function Definition: ComputeShaderFunction( (temp float) 0:3 Function Parameters: 0:? Sequence 0:4 MemoryBarrier (global void) @@ -11,10 +11,14 @@ local_size = (1, 1, 1) 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 @@ Linked compute stage: Shader version: 450 local_size = (1, 1, 1) 0:? Sequence -0:14 Function Definition: ComputeShaderFunction( (global float) +0:3 Function Definition: ComputeShaderFunction( (temp float) 0:3 Function Parameters: 0:? Sequence 0:4 MemoryBarrier (global void) @@ -32,22 +36,27 @@ local_size = (1, 1, 1) 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 @@ local_size = (1, 1, 1) 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 @@ local_size = (1, 1, 1) 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 4c7eabbc..cd366fcb 100644 --- a/Test/baseResults/hlsl.intrinsics.comp.out +++ b/Test/baseResults/hlsl.intrinsics.comp.out @@ -2,7 +2,7 @@ hlsl.intrinsics.comp 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; (temp float) 0:17 Function Parameters: 0:17 'inF0' (in float) 0:17 'inF1' (in float) @@ -13,68 +13,68 @@ local_size = (1, 1, 1) 0:21 all (global bool) 0:21 'inF0' (in float) 0:24 AtomicAdd (global void) -0:24 'gs_ua' (global uint) -0:24 'gs_ub' (global uint) +0:24 'gs_ua' (shared uint) +0:24 'gs_ub' (shared uint) 0:25 move second child to first child (temp uint) 0:25 'out_u1' (temp uint) 0:25 AtomicAdd (temp uint) -0:25 'gs_ua' (global uint) -0:25 'gs_ub' (global uint) +0:25 'gs_ua' (shared uint) +0:25 'gs_ub' (shared uint) 0:26 AtomicAnd (global void) -0:26 'gs_ua' (global uint) -0:26 'gs_ub' (global uint) +0:26 'gs_ua' (shared uint) +0:26 'gs_ub' (shared uint) 0:27 move second child to first child (temp uint) 0:27 'out_u1' (temp uint) 0:27 AtomicAnd (temp uint) -0:27 'gs_ua' (global uint) -0:27 'gs_ub' (global uint) +0:27 'gs_ua' (shared uint) +0:27 'gs_ub' (shared uint) 0:28 move second child to first child (temp uint) 0:28 'out_u1' (temp uint) 0:28 AtomicCompSwap (temp uint) -0:28 'gs_ua' (global uint) -0:28 'gs_ub' (global uint) -0:28 'gs_uc' (global uint) +0:28 'gs_ua' (shared uint) +0:28 'gs_ub' (shared uint) +0:28 'gs_uc' (shared uint) 0:29 move second child to first child (temp uint) 0:29 'out_u1' (temp uint) 0:29 AtomicExchange (temp uint) -0:29 'gs_ua' (global uint) -0:29 'gs_ub' (global uint) +0:29 'gs_ua' (shared uint) +0:29 'gs_ub' (shared uint) 0:30 AtomicMax (global void) -0:30 'gs_ua' (global uint) -0:30 'gs_ub' (global uint) +0:30 'gs_ua' (shared uint) +0:30 'gs_ub' (shared uint) 0:31 move second child to first child (temp uint) 0:31 'out_u1' (temp uint) 0:31 AtomicMax (temp uint) -0:31 'gs_ua' (global uint) -0:31 'gs_ub' (global uint) +0:31 'gs_ua' (shared uint) +0:31 'gs_ub' (shared uint) 0:32 AtomicMin (global void) -0:32 'gs_ua' (global uint) -0:32 'gs_ub' (global uint) +0:32 'gs_ua' (shared uint) +0:32 'gs_ub' (shared uint) 0:33 move second child to first child (temp uint) 0:33 'out_u1' (temp uint) 0:33 AtomicMin (temp uint) -0:33 'gs_ua' (global uint) -0:33 'gs_ub' (global uint) +0:33 'gs_ua' (shared uint) +0:33 'gs_ub' (shared uint) 0:34 AtomicOr (global void) -0:34 'gs_ua' (global uint) -0:34 'gs_ub' (global uint) +0:34 'gs_ua' (shared uint) +0:34 'gs_ub' (shared uint) 0:35 move second child to first child (temp uint) 0:35 'out_u1' (temp uint) 0:35 AtomicOr (temp uint) -0:35 'gs_ua' (global uint) -0:35 'gs_ub' (global uint) +0:35 'gs_ua' (shared uint) +0:35 'gs_ub' (shared uint) 0:36 AtomicXor (global void) -0:36 'gs_ua' (global uint) -0:36 'gs_ub' (global uint) +0:36 'gs_ua' (shared uint) +0:36 'gs_ub' (shared uint) 0:37 move second child to first child (temp uint) 0:37 'out_u1' (temp uint) 0:37 AtomicXor (temp uint) -0:37 'gs_ua' (global uint) -0:37 'gs_ub' (global uint) +0:37 'gs_ua' (shared uint) +0:37 'gs_ub' (shared uint) 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; (temp 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 @@ local_size = (1, 1, 1) 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; (temp 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) @@ -94,69 +94,69 @@ local_size = (1, 1, 1) 0:55 all (global bool) 0:55 'inF0' (in 2-component vector of float) 0:58 AtomicAdd (global void) -0:58 'gs_ua2' (global 2-component vector of uint) -0:58 'gs_ub2' (global 2-component vector of uint) +0:58 'gs_ua2' (shared 2-component vector of uint) +0:58 'gs_ub2' (shared 2-component vector of uint) 0:59 move second child to first child (temp 2-component vector of uint) 0:59 'out_u2' (temp 2-component vector of uint) 0:59 AtomicAdd (temp 2-component vector of uint) -0:59 'gs_ua2' (global 2-component vector of uint) -0:59 'gs_ub2' (global 2-component vector of uint) +0:59 'gs_ua2' (shared 2-component vector of uint) +0:59 'gs_ub2' (shared 2-component vector of uint) 0:60 AtomicAnd (global void) -0:60 'gs_ua2' (global 2-component vector of uint) -0:60 'gs_ub2' (global 2-component vector of uint) +0:60 'gs_ua2' (shared 2-component vector of uint) +0:60 'gs_ub2' (shared 2-component vector of uint) 0:61 move second child to first child (temp 2-component vector of uint) 0:61 'out_u2' (temp 2-component vector of uint) 0:61 AtomicAnd (temp 2-component vector of uint) -0:61 'gs_ua2' (global 2-component vector of uint) -0:61 'gs_ub2' (global 2-component vector of uint) +0:61 'gs_ua2' (shared 2-component vector of uint) +0:61 'gs_ub2' (shared 2-component vector of uint) 0:62 move second child to first child (temp 2-component vector of uint) 0:62 'out_u2' (temp 2-component vector of uint) 0:62 AtomicCompSwap (temp 2-component vector of uint) -0:62 'gs_ua2' (global 2-component vector of uint) -0:62 'gs_ub2' (global 2-component vector of uint) -0:62 'gs_uc2' (global 2-component vector of uint) +0:62 'gs_ua2' (shared 2-component vector of uint) +0:62 'gs_ub2' (shared 2-component vector of uint) +0:62 'gs_uc2' (shared 2-component vector of uint) 0:63 move second child to first child (temp 2-component vector of uint) 0:63 'out_u2' (temp 2-component vector of uint) 0:63 AtomicExchange (temp 2-component vector of uint) -0:63 'gs_ua2' (global 2-component vector of uint) -0:63 'gs_ub2' (global 2-component vector of uint) +0:63 'gs_ua2' (shared 2-component vector of uint) +0:63 'gs_ub2' (shared 2-component vector of uint) 0:64 AtomicMax (global void) -0:64 'gs_ua2' (global 2-component vector of uint) -0:64 'gs_ub2' (global 2-component vector of uint) +0:64 'gs_ua2' (shared 2-component vector of uint) +0:64 'gs_ub2' (shared 2-component vector of uint) 0:65 move second child to first child (temp 2-component vector of uint) 0:65 'out_u2' (temp 2-component vector of uint) 0:65 AtomicMax (temp 2-component vector of uint) -0:65 'gs_ua2' (global 2-component vector of uint) -0:65 'gs_ub2' (global 2-component vector of uint) +0:65 'gs_ua2' (shared 2-component vector of uint) +0:65 'gs_ub2' (shared 2-component vector of uint) 0:66 AtomicMin (global void) -0:66 'gs_ua2' (global 2-component vector of uint) -0:66 'gs_ub2' (global 2-component vector of uint) +0:66 'gs_ua2' (shared 2-component vector of uint) +0:66 'gs_ub2' (shared 2-component vector of uint) 0:67 move second child to first child (temp 2-component vector of uint) 0:67 'out_u2' (temp 2-component vector of uint) 0:67 AtomicMin (temp 2-component vector of uint) -0:67 'gs_ua2' (global 2-component vector of uint) -0:67 'gs_ub2' (global 2-component vector of uint) +0:67 'gs_ua2' (shared 2-component vector of uint) +0:67 'gs_ub2' (shared 2-component vector of uint) 0:68 AtomicOr (global void) -0:68 'gs_ua2' (global 2-component vector of uint) -0:68 'gs_ub2' (global 2-component vector of uint) +0:68 'gs_ua2' (shared 2-component vector of uint) +0:68 'gs_ub2' (shared 2-component vector of uint) 0:69 move second child to first child (temp 2-component vector of uint) 0:69 'out_u2' (temp 2-component vector of uint) 0:69 AtomicOr (temp 2-component vector of uint) -0:69 'gs_ua2' (global 2-component vector of uint) -0:69 'gs_ub2' (global 2-component vector of uint) +0:69 'gs_ua2' (shared 2-component vector of uint) +0:69 'gs_ub2' (shared 2-component vector of uint) 0:70 AtomicXor (global void) -0:70 'gs_ua2' (global 2-component vector of uint) -0:70 'gs_ub2' (global 2-component vector of uint) +0:70 'gs_ua2' (shared 2-component vector of uint) +0:70 'gs_ub2' (shared 2-component vector of uint) 0:71 move second child to first child (temp 2-component vector of uint) 0:71 'out_u2' (temp 2-component vector of uint) 0:71 AtomicXor (temp 2-component vector of uint) -0:71 'gs_ua2' (global 2-component vector of uint) -0:71 'gs_ub2' (global 2-component vector of uint) +0:71 'gs_ua2' (shared 2-component vector of uint) +0:71 'gs_ub2' (shared 2-component vector of uint) 0:74 Branch: Return with expression 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; (temp 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) @@ -167,157 +167,166 @@ local_size = (1, 1, 1) 0:82 all (global bool) 0:82 'inF0' (in 3-component vector of float) 0:85 AtomicAdd (global void) -0:85 'gs_ua3' (global 3-component vector of uint) -0:85 'gs_ub3' (global 3-component vector of uint) +0:85 'gs_ua3' (shared 3-component vector of uint) +0:85 'gs_ub3' (shared 3-component vector of uint) 0:86 move second child to first child (temp 3-component vector of uint) 0:86 'out_u3' (temp 3-component vector of uint) 0:86 AtomicAdd (temp 3-component vector of uint) -0:86 'gs_ua3' (global 3-component vector of uint) -0:86 'gs_ub3' (global 3-component vector of uint) +0:86 'gs_ua3' (shared 3-component vector of uint) +0:86 'gs_ub3' (shared 3-component vector of uint) 0:87 AtomicAnd (global void) -0:87 'gs_ua3' (global 3-component vector of uint) -0:87 'gs_ub3' (global 3-component vector of uint) +0:87 'gs_ua3' (shared 3-component vector of uint) +0:87 'gs_ub3' (shared 3-component vector of uint) 0:88 move second child to first child (temp 3-component vector of uint) 0:88 'out_u3' (temp 3-component vector of uint) 0:88 AtomicAnd (temp 3-component vector of uint) -0:88 'gs_ua3' (global 3-component vector of uint) -0:88 'gs_ub3' (global 3-component vector of uint) +0:88 'gs_ua3' (shared 3-component vector of uint) +0:88 'gs_ub3' (shared 3-component vector of uint) 0:89 move second child to first child (temp 3-component vector of uint) 0:89 'out_u3' (temp 3-component vector of uint) 0:89 AtomicCompSwap (temp 3-component vector of uint) -0:89 'gs_ua3' (global 3-component vector of uint) -0:89 'gs_ub3' (global 3-component vector of uint) -0:89 'gs_uc3' (global 3-component vector of uint) +0:89 'gs_ua3' (shared 3-component vector of uint) +0:89 'gs_ub3' (shared 3-component vector of uint) +0:89 'gs_uc3' (shared 3-component vector of uint) 0:90 move second child to first child (temp 3-component vector of uint) 0:90 'out_u3' (temp 3-component vector of uint) 0:90 AtomicExchange (temp 3-component vector of uint) -0:90 'gs_ua3' (global 3-component vector of uint) -0:90 'gs_ub3' (global 3-component vector of uint) +0:90 'gs_ua3' (shared 3-component vector of uint) +0:90 'gs_ub3' (shared 3-component vector of uint) 0:91 AtomicMax (global void) -0:91 'gs_ua3' (global 3-component vector of uint) -0:91 'gs_ub3' (global 3-component vector of uint) +0:91 'gs_ua3' (shared 3-component vector of uint) +0:91 'gs_ub3' (shared 3-component vector of uint) 0:92 move second child to first child (temp 3-component vector of uint) 0:92 'out_u3' (temp 3-component vector of uint) 0:92 AtomicMax (temp 3-component vector of uint) -0:92 'gs_ua3' (global 3-component vector of uint) -0:92 'gs_ub3' (global 3-component vector of uint) +0:92 'gs_ua3' (shared 3-component vector of uint) +0:92 'gs_ub3' (shared 3-component vector of uint) 0:93 AtomicMin (global void) -0:93 'gs_ua3' (global 3-component vector of uint) -0:93 'gs_ub3' (global 3-component vector of uint) +0:93 'gs_ua3' (shared 3-component vector of uint) +0:93 'gs_ub3' (shared 3-component vector of uint) 0:94 move second child to first child (temp 3-component vector of uint) 0:94 'out_u3' (temp 3-component vector of uint) 0:94 AtomicMin (temp 3-component vector of uint) -0:94 'gs_ua3' (global 3-component vector of uint) -0:94 'gs_ub3' (global 3-component vector of uint) +0:94 'gs_ua3' (shared 3-component vector of uint) +0:94 'gs_ub3' (shared 3-component vector of uint) 0:95 AtomicOr (global void) -0:95 'gs_ua3' (global 3-component vector of uint) -0:95 'gs_ub3' (global 3-component vector of uint) +0:95 'gs_ua3' (shared 3-component vector of uint) +0:95 'gs_ub3' (shared 3-component vector of uint) 0:96 move second child to first child (temp 3-component vector of uint) 0:96 'out_u3' (temp 3-component vector of uint) 0:96 AtomicOr (temp 3-component vector of uint) -0:96 'gs_ua3' (global 3-component vector of uint) -0:96 'gs_ub3' (global 3-component vector of uint) +0:96 'gs_ua3' (shared 3-component vector of uint) +0:96 'gs_ub3' (shared 3-component vector of uint) 0:97 AtomicXor (global void) -0:97 'gs_ua3' (global 3-component vector of uint) -0:97 'gs_ub3' (global 3-component vector of uint) +0:97 'gs_ua3' (shared 3-component vector of uint) +0:97 'gs_ub3' (shared 3-component vector of uint) 0:98 move second child to first child (temp 3-component vector of uint) 0:98 'out_u3' (temp 3-component vector of uint) 0:98 AtomicXor (temp 3-component vector of uint) -0:98 'gs_ua3' (global 3-component vector of uint) -0:98 'gs_ub3' (global 3-component vector of uint) +0:98 'gs_ua3' (shared 3-component vector of uint) +0:98 'gs_ub3' (shared 3-component vector of uint) 0:101 Branch: Return with expression 0:? Constant: 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; (temp 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) +0:112 'gs_ua4' (shared 4-component vector of uint) +0:112 'gs_ub4' (shared 4-component vector of uint) 0:113 move second child to first child (temp 4-component vector of uint) 0:113 'out_u4' (temp 4-component vector of uint) 0:113 AtomicAdd (temp 4-component vector of uint) -0:113 'gs_ua4' (global 4-component vector of uint) -0:113 'gs_ub4' (global 4-component vector of uint) +0:113 'gs_ua4' (shared 4-component vector of uint) +0:113 'gs_ub4' (shared 4-component vector of uint) 0:114 AtomicAnd (global void) -0:114 'gs_ua4' (global 4-component vector of uint) -0:114 'gs_ub4' (global 4-component vector of uint) +0:114 'gs_ua4' (shared 4-component vector of uint) +0:114 'gs_ub4' (shared 4-component vector of uint) 0:115 move second child to first child (temp 4-component vector of uint) 0:115 'out_u4' (temp 4-component vector of uint) 0:115 AtomicAnd (temp 4-component vector of uint) -0:115 'gs_ua4' (global 4-component vector of uint) -0:115 'gs_ub4' (global 4-component vector of uint) +0:115 'gs_ua4' (shared 4-component vector of uint) +0:115 'gs_ub4' (shared 4-component vector of uint) 0:116 move second child to first child (temp 4-component vector of uint) 0:116 'out_u4' (temp 4-component vector of uint) 0:116 AtomicCompSwap (temp 4-component vector of uint) -0:116 'gs_ua4' (global 4-component vector of uint) -0:116 'gs_ub4' (global 4-component vector of uint) -0:116 'gs_uc4' (global 4-component vector of uint) +0:116 'gs_ua4' (shared 4-component vector of uint) +0:116 'gs_ub4' (shared 4-component vector of uint) +0:116 'gs_uc4' (shared 4-component vector of uint) 0:117 move second child to first child (temp 4-component vector of uint) 0:117 'out_u4' (temp 4-component vector of uint) 0:117 AtomicExchange (temp 4-component vector of uint) -0:117 'gs_ua4' (global 4-component vector of uint) -0:117 'gs_ub4' (global 4-component vector of uint) +0:117 'gs_ua4' (shared 4-component vector of uint) +0:117 'gs_ub4' (shared 4-component vector of uint) 0:118 AtomicMax (global void) -0:118 'gs_ua4' (global 4-component vector of uint) -0:118 'gs_ub4' (global 4-component vector of uint) +0:118 'gs_ua4' (shared 4-component vector of uint) +0:118 'gs_ub4' (shared 4-component vector of uint) 0:119 move second child to first child (temp 4-component vector of uint) 0:119 'out_u4' (temp 4-component vector of uint) 0:119 AtomicMax (temp 4-component vector of uint) -0:119 'gs_ua4' (global 4-component vector of uint) -0:119 'gs_ub4' (global 4-component vector of uint) +0:119 'gs_ua4' (shared 4-component vector of uint) +0:119 'gs_ub4' (shared 4-component vector of uint) 0:120 AtomicMin (global void) -0:120 'gs_ua4' (global 4-component vector of uint) -0:120 'gs_ub4' (global 4-component vector of uint) +0:120 'gs_ua4' (shared 4-component vector of uint) +0:120 'gs_ub4' (shared 4-component vector of uint) 0:121 move second child to first child (temp 4-component vector of uint) 0:121 'out_u4' (temp 4-component vector of uint) 0:121 AtomicMin (temp 4-component vector of uint) -0:121 'gs_ua4' (global 4-component vector of uint) -0:121 'gs_ub4' (global 4-component vector of uint) +0:121 'gs_ua4' (shared 4-component vector of uint) +0:121 'gs_ub4' (shared 4-component vector of uint) 0:122 AtomicOr (global void) -0:122 'gs_ua4' (global 4-component vector of uint) -0:122 'gs_ub4' (global 4-component vector of uint) +0:122 'gs_ua4' (shared 4-component vector of uint) +0:122 'gs_ub4' (shared 4-component vector of uint) 0:123 move second child to first child (temp 4-component vector of uint) 0:123 'out_u4' (temp 4-component vector of uint) 0:123 AtomicOr (temp 4-component vector of uint) -0:123 'gs_ua4' (global 4-component vector of uint) -0:123 'gs_ub4' (global 4-component vector of uint) +0:123 'gs_ua4' (shared 4-component vector of uint) +0:123 'gs_ub4' (shared 4-component vector of uint) 0:124 AtomicXor (global void) -0:124 'gs_ua4' (global 4-component vector of uint) -0:124 'gs_ub4' (global 4-component vector of uint) +0:124 'gs_ua4' (shared 4-component vector of uint) +0:124 'gs_ub4' (shared 4-component vector of uint) 0:125 move second child to first child (temp 4-component vector of uint) 0:125 'out_u4' (temp 4-component vector of uint) 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:125 'gs_ua4' (shared 4-component vector of uint) +0:125 'gs_ub4' (shared 4-component vector of uint) +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) -0:? 'gs_uc' (global uint) -0:? 'gs_ua2' (global 2-component vector of uint) -0:? 'gs_ub2' (global 2-component vector of uint) -0:? 'gs_uc2' (global 2-component vector of uint) -0:? 'gs_ua3' (global 3-component vector of uint) -0:? 'gs_ub3' (global 3-component vector of uint) -0:? 'gs_uc3' (global 3-component vector of uint) -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:? 'gs_ua' (shared uint) +0:? 'gs_ub' (shared uint) +0:? 'gs_uc' (shared uint) +0:? 'gs_ua2' (shared 2-component vector of uint) +0:? 'gs_ub2' (shared 2-component vector of uint) +0:? 'gs_uc2' (shared 2-component vector of uint) +0:? 'gs_ua3' (shared 3-component vector of uint) +0:? 'gs_ub3' (shared 3-component vector of uint) +0:? 'gs_uc3' (shared 3-component vector of uint) +0:? 'gs_ua4' (shared 4-component vector of uint) +0:? 'gs_ub4' (shared 4-component vector of uint) +0:? 'gs_uc4' (shared 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 @@ Linked compute stage: 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; (temp float) 0:17 Function Parameters: 0:17 'inF0' (in float) 0:17 'inF1' (in float) @@ -337,68 +346,68 @@ local_size = (1, 1, 1) 0:21 all (global bool) 0:21 'inF0' (in float) 0:24 AtomicAdd (global void) -0:24 'gs_ua' (global uint) -0:24 'gs_ub' (global uint) +0:24 'gs_ua' (shared uint) +0:24 'gs_ub' (shared uint) 0:25 move second child to first child (temp uint) 0:25 'out_u1' (temp uint) 0:25 AtomicAdd (temp uint) -0:25 'gs_ua' (global uint) -0:25 'gs_ub' (global uint) +0:25 'gs_ua' (shared uint) +0:25 'gs_ub' (shared uint) 0:26 AtomicAnd (global void) -0:26 'gs_ua' (global uint) -0:26 'gs_ub' (global uint) +0:26 'gs_ua' (shared uint) +0:26 'gs_ub' (shared uint) 0:27 move second child to first child (temp uint) 0:27 'out_u1' (temp uint) 0:27 AtomicAnd (temp uint) -0:27 'gs_ua' (global uint) -0:27 'gs_ub' (global uint) +0:27 'gs_ua' (shared uint) +0:27 'gs_ub' (shared uint) 0:28 move second child to first child (temp uint) 0:28 'out_u1' (temp uint) 0:28 AtomicCompSwap (temp uint) -0:28 'gs_ua' (global uint) -0:28 'gs_ub' (global uint) -0:28 'gs_uc' (global uint) +0:28 'gs_ua' (shared uint) +0:28 'gs_ub' (shared uint) +0:28 'gs_uc' (shared uint) 0:29 move second child to first child (temp uint) 0:29 'out_u1' (temp uint) 0:29 AtomicExchange (temp uint) -0:29 'gs_ua' (global uint) -0:29 'gs_ub' (global uint) +0:29 'gs_ua' (shared uint) +0:29 'gs_ub' (shared uint) 0:30 AtomicMax (global void) -0:30 'gs_ua' (global uint) -0:30 'gs_ub' (global uint) +0:30 'gs_ua' (shared uint) +0:30 'gs_ub' (shared uint) 0:31 move second child to first child (temp uint) 0:31 'out_u1' (temp uint) 0:31 AtomicMax (temp uint) -0:31 'gs_ua' (global uint) -0:31 'gs_ub' (global uint) +0:31 'gs_ua' (shared uint) +0:31 'gs_ub' (shared uint) 0:32 AtomicMin (global void) -0:32 'gs_ua' (global uint) -0:32 'gs_ub' (global uint) +0:32 'gs_ua' (shared uint) +0:32 'gs_ub' (shared uint) 0:33 move second child to first child (temp uint) 0:33 'out_u1' (temp uint) 0:33 AtomicMin (temp uint) -0:33 'gs_ua' (global uint) -0:33 'gs_ub' (global uint) +0:33 'gs_ua' (shared uint) +0:33 'gs_ub' (shared uint) 0:34 AtomicOr (global void) -0:34 'gs_ua' (global uint) -0:34 'gs_ub' (global uint) +0:34 'gs_ua' (shared uint) +0:34 'gs_ub' (shared uint) 0:35 move second child to first child (temp uint) 0:35 'out_u1' (temp uint) 0:35 AtomicOr (temp uint) -0:35 'gs_ua' (global uint) -0:35 'gs_ub' (global uint) +0:35 'gs_ua' (shared uint) +0:35 'gs_ub' (shared uint) 0:36 AtomicXor (global void) -0:36 'gs_ua' (global uint) -0:36 'gs_ub' (global uint) +0:36 'gs_ua' (shared uint) +0:36 'gs_ub' (shared uint) 0:37 move second child to first child (temp uint) 0:37 'out_u1' (temp uint) 0:37 AtomicXor (temp uint) -0:37 'gs_ua' (global uint) -0:37 'gs_ub' (global uint) +0:37 'gs_ua' (shared uint) +0:37 'gs_ub' (shared uint) 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; (temp 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 @@ local_size = (1, 1, 1) 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; (temp 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) @@ -418,69 +427,69 @@ local_size = (1, 1, 1) 0:55 all (global bool) 0:55 'inF0' (in 2-component vector of float) 0:58 AtomicAdd (global void) -0:58 'gs_ua2' (global 2-component vector of uint) -0:58 'gs_ub2' (global 2-component vector of uint) +0:58 'gs_ua2' (shared 2-component vector of uint) +0:58 'gs_ub2' (shared 2-component vector of uint) 0:59 move second child to first child (temp 2-component vector of uint) 0:59 'out_u2' (temp 2-component vector of uint) 0:59 AtomicAdd (temp 2-component vector of uint) -0:59 'gs_ua2' (global 2-component vector of uint) -0:59 'gs_ub2' (global 2-component vector of uint) +0:59 'gs_ua2' (shared 2-component vector of uint) +0:59 'gs_ub2' (shared 2-component vector of uint) 0:60 AtomicAnd (global void) -0:60 'gs_ua2' (global 2-component vector of uint) -0:60 'gs_ub2' (global 2-component vector of uint) +0:60 'gs_ua2' (shared 2-component vector of uint) +0:60 'gs_ub2' (shared 2-component vector of uint) 0:61 move second child to first child (temp 2-component vector of uint) 0:61 'out_u2' (temp 2-component vector of uint) 0:61 AtomicAnd (temp 2-component vector of uint) -0:61 'gs_ua2' (global 2-component vector of uint) -0:61 'gs_ub2' (global 2-component vector of uint) +0:61 'gs_ua2' (shared 2-component vector of uint) +0:61 'gs_ub2' (shared 2-component vector of uint) 0:62 move second child to first child (temp 2-component vector of uint) 0:62 'out_u2' (temp 2-component vector of uint) 0:62 AtomicCompSwap (temp 2-component vector of uint) -0:62 'gs_ua2' (global 2-component vector of uint) -0:62 'gs_ub2' (global 2-component vector of uint) -0:62 'gs_uc2' (global 2-component vector of uint) +0:62 'gs_ua2' (shared 2-component vector of uint) +0:62 'gs_ub2' (shared 2-component vector of uint) +0:62 'gs_uc2' (shared 2-component vector of uint) 0:63 move second child to first child (temp 2-component vector of uint) 0:63 'out_u2' (temp 2-component vector of uint) 0:63 AtomicExchange (temp 2-component vector of uint) -0:63 'gs_ua2' (global 2-component vector of uint) -0:63 'gs_ub2' (global 2-component vector of uint) +0:63 'gs_ua2' (shared 2-component vector of uint) +0:63 'gs_ub2' (shared 2-component vector of uint) 0:64 AtomicMax (global void) -0:64 'gs_ua2' (global 2-component vector of uint) -0:64 'gs_ub2' (global 2-component vector of uint) +0:64 'gs_ua2' (shared 2-component vector of uint) +0:64 'gs_ub2' (shared 2-component vector of uint) 0:65 move second child to first child (temp 2-component vector of uint) 0:65 'out_u2' (temp 2-component vector of uint) 0:65 AtomicMax (temp 2-component vector of uint) -0:65 'gs_ua2' (global 2-component vector of uint) -0:65 'gs_ub2' (global 2-component vector of uint) +0:65 'gs_ua2' (shared 2-component vector of uint) +0:65 'gs_ub2' (shared 2-component vector of uint) 0:66 AtomicMin (global void) -0:66 'gs_ua2' (global 2-component vector of uint) -0:66 'gs_ub2' (global 2-component vector of uint) +0:66 'gs_ua2' (shared 2-component vector of uint) +0:66 'gs_ub2' (shared 2-component vector of uint) 0:67 move second child to first child (temp 2-component vector of uint) 0:67 'out_u2' (temp 2-component vector of uint) 0:67 AtomicMin (temp 2-component vector of uint) -0:67 'gs_ua2' (global 2-component vector of uint) -0:67 'gs_ub2' (global 2-component vector of uint) +0:67 'gs_ua2' (shared 2-component vector of uint) +0:67 'gs_ub2' (shared 2-component vector of uint) 0:68 AtomicOr (global void) -0:68 'gs_ua2' (global 2-component vector of uint) -0:68 'gs_ub2' (global 2-component vector of uint) +0:68 'gs_ua2' (shared 2-component vector of uint) +0:68 'gs_ub2' (shared 2-component vector of uint) 0:69 move second child to first child (temp 2-component vector of uint) 0:69 'out_u2' (temp 2-component vector of uint) 0:69 AtomicOr (temp 2-component vector of uint) -0:69 'gs_ua2' (global 2-component vector of uint) -0:69 'gs_ub2' (global 2-component vector of uint) +0:69 'gs_ua2' (shared 2-component vector of uint) +0:69 'gs_ub2' (shared 2-component vector of uint) 0:70 AtomicXor (global void) -0:70 'gs_ua2' (global 2-component vector of uint) -0:70 'gs_ub2' (global 2-component vector of uint) +0:70 'gs_ua2' (shared 2-component vector of uint) +0:70 'gs_ub2' (shared 2-component vector of uint) 0:71 move second child to first child (temp 2-component vector of uint) 0:71 'out_u2' (temp 2-component vector of uint) 0:71 AtomicXor (temp 2-component vector of uint) -0:71 'gs_ua2' (global 2-component vector of uint) -0:71 'gs_ub2' (global 2-component vector of uint) +0:71 'gs_ua2' (shared 2-component vector of uint) +0:71 'gs_ub2' (shared 2-component vector of uint) 0:74 Branch: Return with expression 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; (temp 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) @@ -491,168 +500,176 @@ local_size = (1, 1, 1) 0:82 all (global bool) 0:82 'inF0' (in 3-component vector of float) 0:85 AtomicAdd (global void) -0:85 'gs_ua3' (global 3-component vector of uint) -0:85 'gs_ub3' (global 3-component vector of uint) +0:85 'gs_ua3' (shared 3-component vector of uint) +0:85 'gs_ub3' (shared 3-component vector of uint) 0:86 move second child to first child (temp 3-component vector of uint) 0:86 'out_u3' (temp 3-component vector of uint) 0:86 AtomicAdd (temp 3-component vector of uint) -0:86 'gs_ua3' (global 3-component vector of uint) -0:86 'gs_ub3' (global 3-component vector of uint) +0:86 'gs_ua3' (shared 3-component vector of uint) +0:86 'gs_ub3' (shared 3-component vector of uint) 0:87 AtomicAnd (global void) -0:87 'gs_ua3' (global 3-component vector of uint) -0:87 'gs_ub3' (global 3-component vector of uint) +0:87 'gs_ua3' (shared 3-component vector of uint) +0:87 'gs_ub3' (shared 3-component vector of uint) 0:88 move second child to first child (temp 3-component vector of uint) 0:88 'out_u3' (temp 3-component vector of uint) 0:88 AtomicAnd (temp 3-component vector of uint) -0:88 'gs_ua3' (global 3-component vector of uint) -0:88 'gs_ub3' (global 3-component vector of uint) +0:88 'gs_ua3' (shared 3-component vector of uint) +0:88 'gs_ub3' (shared 3-component vector of uint) 0:89 move second child to first child (temp 3-component vector of uint) 0:89 'out_u3' (temp 3-component vector of uint) 0:89 AtomicCompSwap (temp 3-component vector of uint) -0:89 'gs_ua3' (global 3-component vector of uint) -0:89 'gs_ub3' (global 3-component vector of uint) -0:89 'gs_uc3' (global 3-component vector of uint) +0:89 'gs_ua3' (shared 3-component vector of uint) +0:89 'gs_ub3' (shared 3-component vector of uint) +0:89 'gs_uc3' (shared 3-component vector of uint) 0:90 move second child to first child (temp 3-component vector of uint) 0:90 'out_u3' (temp 3-component vector of uint) 0:90 AtomicExchange (temp 3-component vector of uint) -0:90 'gs_ua3' (global 3-component vector of uint) -0:90 'gs_ub3' (global 3-component vector of uint) +0:90 'gs_ua3' (shared 3-component vector of uint) +0:90 'gs_ub3' (shared 3-component vector of uint) 0:91 AtomicMax (global void) -0:91 'gs_ua3' (global 3-component vector of uint) -0:91 'gs_ub3' (global 3-component vector of uint) +0:91 'gs_ua3' (shared 3-component vector of uint) +0:91 'gs_ub3' (shared 3-component vector of uint) 0:92 move second child to first child (temp 3-component vector of uint) 0:92 'out_u3' (temp 3-component vector of uint) 0:92 AtomicMax (temp 3-component vector of uint) -0:92 'gs_ua3' (global 3-component vector of uint) -0:92 'gs_ub3' (global 3-component vector of uint) +0:92 'gs_ua3' (shared 3-component vector of uint) +0:92 'gs_ub3' (shared 3-component vector of uint) 0:93 AtomicMin (global void) -0:93 'gs_ua3' (global 3-component vector of uint) -0:93 'gs_ub3' (global 3-component vector of uint) +0:93 'gs_ua3' (shared 3-component vector of uint) +0:93 'gs_ub3' (shared 3-component vector of uint) 0:94 move second child to first child (temp 3-component vector of uint) 0:94 'out_u3' (temp 3-component vector of uint) 0:94 AtomicMin (temp 3-component vector of uint) -0:94 'gs_ua3' (global 3-component vector of uint) -0:94 'gs_ub3' (global 3-component vector of uint) +0:94 'gs_ua3' (shared 3-component vector of uint) +0:94 'gs_ub3' (shared 3-component vector of uint) 0:95 AtomicOr (global void) -0:95 'gs_ua3' (global 3-component vector of uint) -0:95 'gs_ub3' (global 3-component vector of uint) +0:95 'gs_ua3' (shared 3-component vector of uint) +0:95 'gs_ub3' (shared 3-component vector of uint) 0:96 move second child to first child (temp 3-component vector of uint) 0:96 'out_u3' (temp 3-component vector of uint) 0:96 AtomicOr (temp 3-component vector of uint) -0:96 'gs_ua3' (global 3-component vector of uint) -0:96 'gs_ub3' (global 3-component vector of uint) +0:96 'gs_ua3' (shared 3-component vector of uint) +0:96 'gs_ub3' (shared 3-component vector of uint) 0:97 AtomicXor (global void) -0:97 'gs_ua3' (global 3-component vector of uint) -0:97 'gs_ub3' (global 3-component vector of uint) +0:97 'gs_ua3' (shared 3-component vector of uint) +0:97 'gs_ub3' (shared 3-component vector of uint) 0:98 move second child to first child (temp 3-component vector of uint) 0:98 'out_u3' (temp 3-component vector of uint) 0:98 AtomicXor (temp 3-component vector of uint) -0:98 'gs_ua3' (global 3-component vector of uint) -0:98 'gs_ub3' (global 3-component vector of uint) +0:98 'gs_ua3' (shared 3-component vector of uint) +0:98 'gs_ub3' (shared 3-component vector of uint) 0:101 Branch: Return with expression 0:? Constant: 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; (temp 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) +0:112 'gs_ua4' (shared 4-component vector of uint) +0:112 'gs_ub4' (shared 4-component vector of uint) 0:113 move second child to first child (temp 4-component vector of uint) 0:113 'out_u4' (temp 4-component vector of uint) 0:113 AtomicAdd (temp 4-component vector of uint) -0:113 'gs_ua4' (global 4-component vector of uint) -0:113 'gs_ub4' (global 4-component vector of uint) +0:113 'gs_ua4' (shared 4-component vector of uint) +0:113 'gs_ub4' (shared 4-component vector of uint) 0:114 AtomicAnd (global void) -0:114 'gs_ua4' (global 4-component vector of uint) -0:114 'gs_ub4' (global 4-component vector of uint) +0:114 'gs_ua4' (shared 4-component vector of uint) +0:114 'gs_ub4' (shared 4-component vector of uint) 0:115 move second child to first child (temp 4-component vector of uint) 0:115 'out_u4' (temp 4-component vector of uint) 0:115 AtomicAnd (temp 4-component vector of uint) -0:115 'gs_ua4' (global 4-component vector of uint) -0:115 'gs_ub4' (global 4-component vector of uint) +0:115 'gs_ua4' (shared 4-component vector of uint) +0:115 'gs_ub4' (shared 4-component vector of uint) 0:116 move second child to first child (temp 4-component vector of uint) 0:116 'out_u4' (temp 4-component vector of uint) 0:116 AtomicCompSwap (temp 4-component vector of uint) -0:116 'gs_ua4' (global 4-component vector of uint) -0:116 'gs_ub4' (global 4-component vector of uint) -0:116 'gs_uc4' (global 4-component vector of uint) +0:116 'gs_ua4' (shared 4-component vector of uint) +0:116 'gs_ub4' (shared 4-component vector of uint) +0:116 'gs_uc4' (shared 4-component vector of uint) 0:117 move second child to first child (temp 4-component vector of uint) 0:117 'out_u4' (temp 4-component vector of uint) 0:117 AtomicExchange (temp 4-component vector of uint) -0:117 'gs_ua4' (global 4-component vector of uint) -0:117 'gs_ub4' (global 4-component vector of uint) +0:117 'gs_ua4' (shared 4-component vector of uint) +0:117 'gs_ub4' (shared 4-component vector of uint) 0:118 AtomicMax (global void) -0:118 'gs_ua4' (global 4-component vector of uint) -0:118 'gs_ub4' (global 4-component vector of uint) +0:118 'gs_ua4' (shared 4-component vector of uint) +0:118 'gs_ub4' (shared 4-component vector of uint) 0:119 move second child to first child (temp 4-component vector of uint) 0:119 'out_u4' (temp 4-component vector of uint) 0:119 AtomicMax (temp 4-component vector of uint) -0:119 'gs_ua4' (global 4-component vector of uint) -0:119 'gs_ub4' (global 4-component vector of uint) +0:119 'gs_ua4' (shared 4-component vector of uint) +0:119 'gs_ub4' (shared 4-component vector of uint) 0:120 AtomicMin (global void) -0:120 'gs_ua4' (global 4-component vector of uint) -0:120 'gs_ub4' (global 4-component vector of uint) +0:120 'gs_ua4' (shared 4-component vector of uint) +0:120 'gs_ub4' (shared 4-component vector of uint) 0:121 move second child to first child (temp 4-component vector of uint) 0:121 'out_u4' (temp 4-component vector of uint) 0:121 AtomicMin (temp 4-component vector of uint) -0:121 'gs_ua4' (global 4-component vector of uint) -0:121 'gs_ub4' (global 4-component vector of uint) +0:121 'gs_ua4' (shared 4-component vector of uint) +0:121 'gs_ub4' (shared 4-component vector of uint) 0:122 AtomicOr (global void) -0:122 'gs_ua4' (global 4-component vector of uint) -0:122 'gs_ub4' (global 4-component vector of uint) +0:122 'gs_ua4' (shared 4-component vector of uint) +0:122 'gs_ub4' (shared 4-component vector of uint) 0:123 move second child to first child (temp 4-component vector of uint) 0:123 'out_u4' (temp 4-component vector of uint) 0:123 AtomicOr (temp 4-component vector of uint) -0:123 'gs_ua4' (global 4-component vector of uint) -0:123 'gs_ub4' (global 4-component vector of uint) +0:123 'gs_ua4' (shared 4-component vector of uint) +0:123 'gs_ub4' (shared 4-component vector of uint) 0:124 AtomicXor (global void) -0:124 'gs_ua4' (global 4-component vector of uint) -0:124 'gs_ub4' (global 4-component vector of uint) +0:124 'gs_ua4' (shared 4-component vector of uint) +0:124 'gs_ub4' (shared 4-component vector of uint) 0:125 move second child to first child (temp 4-component vector of uint) 0:125 'out_u4' (temp 4-component vector of uint) 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:125 'gs_ua4' (shared 4-component vector of uint) +0:125 'gs_ub4' (shared 4-component vector of uint) +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) -0:? 'gs_uc' (global uint) -0:? 'gs_ua2' (global 2-component vector of uint) -0:? 'gs_ub2' (global 2-component vector of uint) -0:? 'gs_uc2' (global 2-component vector of uint) -0:? 'gs_ua3' (global 3-component vector of uint) -0:? 'gs_ub3' (global 3-component vector of uint) -0:? 'gs_uc3' (global 3-component vector of uint) -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:? 'gs_ua' (shared uint) +0:? 'gs_ub' (shared uint) +0:? 'gs_uc' (shared uint) +0:? 'gs_ua2' (shared 2-component vector of uint) +0:? 'gs_ub2' (shared 2-component vector of uint) +0:? 'gs_uc2' (shared 2-component vector of uint) +0:? 'gs_ua3' (shared 3-component vector of uint) +0:? 'gs_ub3' (shared 3-component vector of uint) +0:? 'gs_uc3' (shared 3-component vector of uint) +0:? 'gs_ua4' (shared 4-component vector of uint) +0:? 'gs_ub4' (shared 4-component vector of uint) +0:? 'gs_uc4' (shared 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 @@ local_size = (1, 1, 1) 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 @@ -712,37 +740,44 @@ local_size = (1, 1, 1) 39: TypePointer Function 38(ivec3) 40: TypeFunction 36(fvec3) 37(ptr) 37(ptr) 37(ptr) 39(ptr) 39(ptr) 49: TypeBool - 51: TypePointer Private 8(int) - 52(gs_ua): 51(ptr) Variable Private - 53(gs_ub): 51(ptr) Variable Private + 51: TypePointer Workgroup 8(int) + 52(gs_ua): 51(ptr) Variable Workgroup + 53(gs_ub): 51(ptr) Variable Workgroup 55: 8(int) Constant 1 56: 8(int) Constant 0 - 66(gs_uc): 51(ptr) Variable Private + 66(gs_uc): 51(ptr) Variable Workgroup 87: 6(float) Constant 0 - 94: TypePointer Private 26(ivec2) - 95(gs_ua2): 94(ptr) Variable Private - 96(gs_ub2): 94(ptr) Variable Private - 107(gs_uc2): 94(ptr) Variable Private + 94: TypePointer Workgroup 26(ivec2) + 95(gs_ua2): 94(ptr) Variable Workgroup + 96(gs_ub2): 94(ptr) Variable Workgroup + 107(gs_uc2): 94(ptr) Variable Workgroup 128: 6(float) Constant 1065353216 129: 6(float) Constant 1073741824 130: 24(fvec2) ConstantComposite 128 129 - 135: TypePointer Private 38(ivec3) - 136(gs_ua3): 135(ptr) Variable Private - 137(gs_ub3): 135(ptr) Variable Private - 148(gs_uc3): 135(ptr) Variable Private + 135: TypePointer Workgroup 38(ivec3) + 136(gs_ua3): 135(ptr) Variable Workgroup + 137(gs_ub3): 135(ptr) Variable Workgroup + 148(gs_uc3): 135(ptr) Variable Workgroup 169: 6(float) Constant 1077936128 170: 36(fvec3) ConstantComposite 128 129 169 173: TypeVector 6(float) 4 174: TypePointer Input 173(fvec4) 175(inF0): 174(ptr) Variable Input 178: TypeVector 8(int) 4 - 179: TypePointer Private 178(ivec4) - 180(gs_ua4): 179(ptr) Variable Private - 181(gs_ub4): 179(ptr) Variable Private + 179: TypePointer Workgroup 178(ivec4) + 180(gs_ua4): 179(ptr) Variable Workgroup + 181(gs_ub4): 179(ptr) Variable Workgroup 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 + 193(gs_uc4): 179(ptr) Variable Workgroup + 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 @@ local_size = (1, 1, 1) 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 8bfc072f..554e5520 100644 --- a/Test/baseResults/hlsl.intrinsics.double.frag.out +++ b/Test/baseResults/hlsl.intrinsics.double.frag.out @@ -2,35 +2,47 @@ hlsl.intrinsics.double.frag 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; (temp 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 @@ Linked fragment stage: 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 f1b64114..8f8dd610 100644 --- a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out +++ b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out @@ -2,41 +2,41 @@ hlsl.intrinsics.evalfns.frag 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ Linked fragment stage: 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 7340531b..5fcb5f99 100644 --- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out +++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out @@ -9,7 +9,7 @@ ERROR: 4 compilation errors. No code generated. 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; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:? Sequence @@ -19,14 +19,14 @@ ERROR: node is still EOpNull! 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; (temp 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; (temp 2-component vector of float) 0:15 Function Parameters: 0:15 'inF0' (in 2-component vector of float) 0:? Sequence @@ -37,7 +37,7 @@ ERROR: node is still EOpNull! 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; (temp 3-component vector of float) 0:22 Function Parameters: 0:22 'inF0' (in 3-component vector of float) 0:? Sequence @@ -49,20 +49,25 @@ ERROR: node is still EOpNull! 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; (temp 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 @@ Linked fragment stage: 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; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:? Sequence @@ -81,14 +86,14 @@ ERROR: node is still EOpNull! 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; (temp 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; (temp 2-component vector of float) 0:15 Function Parameters: 0:15 'inF0' (in 2-component vector of float) 0:? Sequence @@ -99,7 +104,7 @@ ERROR: node is still EOpNull! 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; (temp 3-component vector of float) 0:22 Function Parameters: 0:22 'inF0' (in 3-component vector of float) 0:? Sequence @@ -111,19 +116,24 @@ ERROR: node is still EOpNull! 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; (temp 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 f6c41475..d5a0f998 100644 --- a/Test/baseResults/hlsl.intrinsics.frag.out +++ b/Test/baseResults/hlsl.intrinsics.frag.out @@ -2,7 +2,7 @@ hlsl.intrinsics.frag 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; (temp float) 0:17 Function Parameters: 0:17 'inF0' (in float) 0:17 'inF1' (in float) @@ -339,7 +339,7 @@ gl_FragCoord origin is upper left 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; (temp 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 @@ gl_FragCoord origin is upper left 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; (temp 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 @@ gl_FragCoord origin is upper left 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:258 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float) +0:178 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 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) @@ -970,1162 +970,1170 @@ gl_FragCoord origin is upper left 0:225 'inF1' (in 3-component vector of float) 0:225 'inF2' (in 3-component vector of float) 0:226 Sequence -0:226 move second child to first child (temp float) -0:226 'r043' (temp float) -0:226 length (global float) +0:226 move second child to first child (temp 3-component vector of float) +0:226 'r039b' (temp 3-component vector of float) +0:226 mix (global 3-component vector of float) 0:226 'inF0' (in 3-component vector of float) +0:226 'inF1' (in 3-component vector of float) +0:226 Constant: +0:226 0.300000 0:227 Sequence -0:227 move second child to first child (temp 3-component vector of float) -0:227 'r044' (temp 3-component vector of float) -0:227 log (global 3-component vector of float) +0:227 move second child to first child (temp float) +0:227 'r043' (temp float) +0:227 length (global float) 0:227 'inF0' (in 3-component vector of float) 0:228 Sequence 0:228 move second child to first child (temp 3-component vector of float) -0:228 'r045' (temp 3-component vector of float) -0:228 vector-scale (temp 3-component vector of float) -0:228 log2 (temp 3-component vector of float) -0:228 'inF0' (in 3-component vector of float) -0:228 Constant: -0:228 0.301030 +0:228 'r044' (temp 3-component vector of float) +0:228 log (global 3-component vector of float) +0:228 'inF0' (in 3-component vector of float) 0:229 Sequence 0:229 move second child to first child (temp 3-component vector of float) -0:229 'r046' (temp 3-component vector of float) -0:229 log2 (global 3-component vector of float) -0:229 'inF0' (in 3-component vector of float) +0:229 'r045' (temp 3-component vector of float) +0:229 vector-scale (temp 3-component vector of float) +0:229 log2 (temp 3-component vector of float) +0:229 'inF0' (in 3-component vector of float) +0:229 Constant: +0:229 0.301030 0:230 Sequence 0:230 move second child to first child (temp 3-component vector of float) -0:230 'r047' (temp 3-component vector of float) -0:230 max (global 3-component vector of float) +0:230 'r046' (temp 3-component vector of float) +0:230 log2 (global 3-component vector of float) 0:230 'inF0' (in 3-component vector of float) -0:230 'inF1' (in 3-component vector of float) 0:231 Sequence 0:231 move second child to first child (temp 3-component vector of float) -0:231 'r048' (temp 3-component vector of float) -0:231 min (global 3-component vector of float) +0:231 'r047' (temp 3-component vector of float) +0:231 max (global 3-component vector of float) 0:231 'inF0' (in 3-component vector of float) 0:231 'inF1' (in 3-component vector of float) 0:232 Sequence 0:232 move second child to first child (temp 3-component vector of float) -0:232 'r049' (temp 3-component vector of float) -0:232 normalize (global 3-component vector of float) +0:232 'r048' (temp 3-component vector of float) +0:232 min (global 3-component vector of float) 0:232 'inF0' (in 3-component vector of float) +0:232 'inF1' (in 3-component vector of float) 0:233 Sequence 0:233 move second child to first child (temp 3-component vector of float) -0:233 'r050' (temp 3-component vector of float) -0:233 pow (global 3-component vector of float) +0:233 'r049' (temp 3-component vector of float) +0:233 normalize (global 3-component vector of float) 0:233 'inF0' (in 3-component vector of float) -0:233 'inF1' (in 3-component vector of float) 0:234 Sequence 0:234 move second child to first child (temp 3-component vector of float) -0:234 'r051' (temp 3-component vector of float) -0:234 radians (global 3-component vector of float) +0:234 'r050' (temp 3-component vector of float) +0:234 pow (global 3-component vector of float) 0:234 'inF0' (in 3-component vector of float) +0:234 'inF1' (in 3-component vector of float) 0:235 Sequence 0:235 move second child to first child (temp 3-component vector of float) -0:235 'r052' (temp 3-component vector of float) -0:235 divide (temp 3-component vector of float) -0:235 Constant: -0:235 1.000000 +0:235 'r051' (temp 3-component vector of float) +0:235 radians (global 3-component vector of float) 0:235 'inF0' (in 3-component vector of float) 0:236 Sequence 0:236 move second child to first child (temp 3-component vector of float) -0:236 'r053' (temp 3-component vector of float) -0:236 reflect (global 3-component vector of float) +0:236 'r052' (temp 3-component vector of float) +0:236 divide (temp 3-component vector of float) +0:236 Constant: +0:236 1.000000 0:236 'inF0' (in 3-component vector of float) -0:236 'inF1' (in 3-component vector of float) 0:237 Sequence 0:237 move second child to first child (temp 3-component vector of float) -0:237 'r054' (temp 3-component vector of float) -0:237 refract (global 3-component vector of float) +0:237 'r053' (temp 3-component vector of float) +0:237 reflect (global 3-component vector of float) 0:237 'inF0' (in 3-component vector of float) 0:237 'inF1' (in 3-component vector of float) -0:237 Constant: -0:237 2.000000 0:238 Sequence -0:238 move second child to first child (temp 3-component vector of uint) -0:238 'r055' (temp 3-component vector of uint) +0:238 move second child to first child (temp 3-component vector of float) +0:238 'r054' (temp 3-component vector of float) +0:238 refract (global 3-component vector of float) +0:238 'inF0' (in 3-component vector of float) +0:238 'inF1' (in 3-component vector of float) +0:238 Constant: +0:238 2.000000 +0:239 Sequence +0:239 move second child to first child (temp 3-component vector of uint) +0:239 'r055' (temp 3-component vector of uint) 0:? bitFieldReverse (global 3-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) -0:239 Sequence -0:239 move second child to first child (temp 3-component vector of float) -0:239 'r056' (temp 3-component vector of float) -0:239 roundEven (global 3-component vector of float) -0:239 'inF0' (in 3-component vector of float) 0:240 Sequence 0:240 move second child to first child (temp 3-component vector of float) -0:240 'r057' (temp 3-component vector of float) -0:240 inverse sqrt (global 3-component vector of float) +0:240 'r056' (temp 3-component vector of float) +0:240 roundEven (global 3-component vector of float) 0:240 'inF0' (in 3-component vector of float) 0:241 Sequence 0:241 move second child to first child (temp 3-component vector of float) -0:241 'r058' (temp 3-component vector of float) -0:241 clamp (temp 3-component vector of float) +0:241 'r057' (temp 3-component vector of float) +0:241 inverse sqrt (global 3-component vector of float) 0:241 'inF0' (in 3-component vector of float) -0:241 Constant: -0:241 0.000000 -0:241 Constant: -0:241 1.000000 0:242 Sequence 0:242 move second child to first child (temp 3-component vector of float) -0:242 'r059' (temp 3-component vector of float) -0:242 Sign (global 3-component vector of float) +0:242 'r058' (temp 3-component vector of float) +0:242 clamp (temp 3-component vector of float) 0:242 'inF0' (in 3-component vector of float) +0:242 Constant: +0:242 0.000000 +0:242 Constant: +0:242 1.000000 0:243 Sequence 0:243 move second child to first child (temp 3-component vector of float) -0:243 'r060' (temp 3-component vector of float) -0:243 sine (global 3-component vector of float) +0:243 'r059' (temp 3-component vector of float) +0:243 Sign (global 3-component vector of float) 0:243 'inF0' (in 3-component vector of float) 0:244 Sequence 0:244 move second child to first child (temp 3-component vector of float) -0:244 'inF1' (in 3-component vector of float) -0:244 sine (temp 3-component vector of float) -0:244 'inF0' (in 3-component vector of float) -0:244 move second child to first child (temp 3-component vector of float) -0:244 'inF2' (in 3-component vector of float) -0:244 cosine (temp 3-component vector of float) +0:244 'r060' (temp 3-component vector of float) +0:244 sine (global 3-component vector of float) 0:244 'inF0' (in 3-component vector of float) 0:245 Sequence 0:245 move second child to first child (temp 3-component vector of float) -0:245 'r061' (temp 3-component vector of float) -0:245 hyp. sine (global 3-component vector of float) +0:245 'inF1' (in 3-component vector of float) +0:245 sine (temp 3-component vector of float) +0:245 'inF0' (in 3-component vector of float) +0:245 move second child to first child (temp 3-component vector of float) +0:245 'inF2' (in 3-component vector of float) +0:245 cosine (temp 3-component vector of float) 0:245 'inF0' (in 3-component vector of float) 0:246 Sequence 0:246 move second child to first child (temp 3-component vector of float) -0:246 'r062' (temp 3-component vector of float) -0:246 smoothstep (global 3-component vector of float) +0:246 'r061' (temp 3-component vector of float) +0:246 hyp. sine (global 3-component vector of float) 0:246 'inF0' (in 3-component vector of float) -0:246 'inF1' (in 3-component vector of float) -0:246 'inF2' (in 3-component vector of float) 0:247 Sequence 0:247 move second child to first child (temp 3-component vector of float) -0:247 'r063' (temp 3-component vector of float) -0:247 sqrt (global 3-component vector of float) +0:247 'r062' (temp 3-component vector of float) +0:247 smoothstep (global 3-component vector of float) 0:247 'inF0' (in 3-component vector of float) +0:247 'inF1' (in 3-component vector of float) +0:247 'inF2' (in 3-component vector of float) 0:248 Sequence 0:248 move second child to first child (temp 3-component vector of float) -0:248 'r064' (temp 3-component vector of float) -0:248 step (global 3-component vector of float) +0:248 'r063' (temp 3-component vector of float) +0:248 sqrt (global 3-component vector of float) 0:248 'inF0' (in 3-component vector of float) -0:248 'inF1' (in 3-component vector of float) 0:249 Sequence 0:249 move second child to first child (temp 3-component vector of float) -0:249 'r065' (temp 3-component vector of float) -0:249 tangent (global 3-component vector of float) +0:249 'r064' (temp 3-component vector of float) +0:249 step (global 3-component vector of float) 0:249 'inF0' (in 3-component vector of float) +0:249 'inF1' (in 3-component vector of float) 0:250 Sequence 0:250 move second child to first child (temp 3-component vector of float) -0:250 'r066' (temp 3-component vector of float) -0:250 hyp. tangent (global 3-component vector of float) +0:250 'r065' (temp 3-component vector of float) +0:250 tangent (global 3-component vector of float) 0:250 'inF0' (in 3-component vector of float) -0:252 Sequence -0:252 move second child to first child (temp 3-component vector of float) -0:252 'r067' (temp 3-component vector of float) -0:252 trunc (global 3-component vector of float) -0:252 'inF0' (in 3-component vector of float) -0:255 Branch: Return with expression +0:251 Sequence +0:251 move second child to first child (temp 3-component vector of float) +0:251 'r066' (temp 3-component vector of float) +0:251 hyp. tangent (global 3-component vector of float) +0:251 'inF0' (in 3-component vector of float) +0:253 Sequence +0:253 move second child to first child (temp 3-component vector of float) +0:253 'r067' (temp 3-component vector of float) +0:253 trunc (global 3-component vector of float) +0:253 'inF0' (in 3-component vector of float) +0:256 Branch: Return with expression 0:? Constant: 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:399 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float) -0:259 Function Parameters: -0:259 'inF0' (in 4-component vector of float) -0:259 'inF1' (in 4-component vector of float) -0:259 'inF2' (in 4-component vector of float) -0:259 'inU0' (in 4-component vector of uint) -0:259 'inU1' (in 4-component vector of uint) +0:260 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 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) +0:260 'inF2' (in 4-component vector of float) +0:260 'inU0' (in 4-component vector of uint) +0:260 'inU1' (in 4-component vector of uint) 0:? Sequence -0:262 Sequence -0:262 move second child to first child (temp bool) -0:262 'r000' (temp bool) -0:262 all (global bool) -0:262 'inF0' (in 4-component vector of float) 0:263 Sequence -0:263 move second child to first child (temp 4-component vector of float) -0:263 'r001' (temp 4-component vector of float) -0:263 Absolute value (global 4-component vector of float) +0:263 move second child to first child (temp bool) +0:263 'r000' (temp bool) +0:263 all (global bool) 0:263 'inF0' (in 4-component vector of float) 0:264 Sequence 0:264 move second child to first child (temp 4-component vector of float) -0:264 'r002' (temp 4-component vector of float) -0:264 arc cosine (global 4-component vector of float) +0:264 'r001' (temp 4-component vector of float) +0:264 Absolute value (global 4-component vector of float) 0:264 'inF0' (in 4-component vector of float) 0:265 Sequence -0:265 move second child to first child (temp bool) -0:265 'r003' (temp bool) -0:265 any (global bool) +0:265 move second child to first child (temp 4-component vector of float) +0:265 'r002' (temp 4-component vector of float) +0:265 arc cosine (global 4-component vector of float) 0:265 'inF0' (in 4-component vector of float) 0:266 Sequence -0:266 move second child to first child (temp 4-component vector of float) -0:266 'r004' (temp 4-component vector of float) -0:266 arc sine (global 4-component vector of float) +0:266 move second child to first child (temp bool) +0:266 'r003' (temp bool) +0:266 any (global bool) 0:266 'inF0' (in 4-component vector of float) 0:267 Sequence -0:267 move second child to first child (temp 4-component vector of int) -0:267 'r005' (temp 4-component vector of int) -0:267 floatBitsToInt (global 4-component vector of int) +0:267 move second child to first child (temp 4-component vector of float) +0:267 'r004' (temp 4-component vector of float) +0:267 arc sine (global 4-component vector of float) 0:267 'inF0' (in 4-component vector of float) 0:268 Sequence -0:268 move second child to first child (temp 4-component vector of uint) -0:268 'r006' (temp 4-component vector of uint) -0:268 floatBitsToUint (global 4-component vector of uint) +0:268 move second child to first child (temp 4-component vector of int) +0:268 'r005' (temp 4-component vector of int) +0:268 floatBitsToInt (global 4-component vector of int) 0:268 'inF0' (in 4-component vector of float) 0:269 Sequence -0:269 move second child to first child (temp 4-component vector of float) -0:269 'r007' (temp 4-component vector of float) -0:269 intBitsToFloat (global 4-component vector of float) -0:269 'inU0' (in 4-component vector of uint) -0:271 Sequence -0:271 move second child to first child (temp 4-component vector of float) -0:271 'r009' (temp 4-component vector of float) -0:271 arc tangent (global 4-component vector of float) -0:271 'inF0' (in 4-component vector of float) +0:269 move second child to first child (temp 4-component vector of uint) +0:269 'r006' (temp 4-component vector of uint) +0:269 floatBitsToUint (global 4-component vector of uint) +0:269 'inF0' (in 4-component vector of float) +0:270 Sequence +0:270 move second child to first child (temp 4-component vector of float) +0:270 'r007' (temp 4-component vector of float) +0:270 intBitsToFloat (global 4-component vector of float) +0:270 'inU0' (in 4-component vector of uint) 0:272 Sequence 0:272 move second child to first child (temp 4-component vector of float) -0:272 'r010' (temp 4-component vector of float) +0:272 'r009' (temp 4-component vector of float) 0:272 arc tangent (global 4-component vector of float) 0:272 'inF0' (in 4-component vector of float) -0:272 'inF1' (in 4-component vector of float) 0:273 Sequence 0:273 move second child to first child (temp 4-component vector of float) -0:273 'r011' (temp 4-component vector of float) -0:273 Ceiling (global 4-component vector of float) +0:273 'r010' (temp 4-component vector of float) +0:273 arc tangent (global 4-component vector of float) 0:273 'inF0' (in 4-component vector of float) +0:273 'inF1' (in 4-component vector of float) 0:274 Sequence 0:274 move second child to first child (temp 4-component vector of float) -0:274 'r012' (temp 4-component vector of float) -0:274 clamp (global 4-component vector of float) +0:274 'r011' (temp 4-component vector of float) +0:274 Ceiling (global 4-component vector of float) 0:274 'inF0' (in 4-component vector of float) -0:274 'inF1' (in 4-component vector of float) -0:274 'inF2' (in 4-component vector of float) -0:275 Test condition and select (temp void) -0:275 Condition -0:275 any (temp bool) -0:275 Compare Less Than (temp 4-component vector of bool) +0:275 Sequence +0:275 move second child to first child (temp 4-component vector of float) +0:275 'r012' (temp 4-component vector of float) +0:275 clamp (global 4-component vector of float) 0:275 'inF0' (in 4-component vector of float) -0:275 Constant: -0:275 0.000000 -0:275 0.000000 -0:275 0.000000 -0:275 0.000000 -0:275 true case -0:275 Branch: Kill -0:276 Sequence -0:276 move second child to first child (temp 4-component vector of float) -0:276 'r013' (temp 4-component vector of float) -0:276 cosine (global 4-component vector of float) +0:275 'inF1' (in 4-component vector of float) +0:275 'inF2' (in 4-component vector of float) +0:276 Test condition and select (temp void) +0:276 Condition +0:276 any (temp bool) +0:276 Compare Less Than (temp 4-component vector of bool) 0:276 'inF0' (in 4-component vector of float) +0:276 Constant: +0:276 0.000000 +0:276 0.000000 +0:276 0.000000 +0:276 0.000000 +0:276 true case +0:276 Branch: Kill 0:277 Sequence 0:277 move second child to first child (temp 4-component vector of float) -0:277 'r014' (temp 4-component vector of float) -0:277 hyp. cosine (global 4-component vector of float) +0:277 'r013' (temp 4-component vector of float) +0:277 cosine (global 4-component vector of float) 0:277 'inF0' (in 4-component vector of float) 0:278 Sequence -0:278 move second child to first child (temp 4-component vector of uint) -0:278 'r015' (temp 4-component vector of uint) +0:278 move second child to first child (temp 4-component vector of float) +0:278 'r014' (temp 4-component vector of float) +0:278 hyp. cosine (global 4-component vector of float) +0:278 'inF0' (in 4-component vector of float) +0:279 Sequence +0:279 move second child to first child (temp 4-component vector of uint) +0:279 'r015' (temp 4-component vector of uint) 0:? bitCount (global 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:? 5 (const uint) 0:? 2 (const uint) -0:279 Sequence -0:279 move second child to first child (temp 4-component vector of float) -0:279 'r016' (temp 4-component vector of float) -0:279 dPdx (global 4-component vector of float) -0:279 'inF0' (in 4-component vector of float) 0:280 Sequence 0:280 move second child to first child (temp 4-component vector of float) -0:280 'r017' (temp 4-component vector of float) -0:280 dPdxCoarse (global 4-component vector of float) +0:280 'r016' (temp 4-component vector of float) +0:280 dPdx (global 4-component vector of float) 0:280 'inF0' (in 4-component vector of float) 0:281 Sequence 0:281 move second child to first child (temp 4-component vector of float) -0:281 'r018' (temp 4-component vector of float) -0:281 dPdxFine (global 4-component vector of float) +0:281 'r017' (temp 4-component vector of float) +0:281 dPdxCoarse (global 4-component vector of float) 0:281 'inF0' (in 4-component vector of float) 0:282 Sequence 0:282 move second child to first child (temp 4-component vector of float) -0:282 'r019' (temp 4-component vector of float) -0:282 dPdy (global 4-component vector of float) +0:282 'r018' (temp 4-component vector of float) +0:282 dPdxFine (global 4-component vector of float) 0:282 'inF0' (in 4-component vector of float) 0:283 Sequence 0:283 move second child to first child (temp 4-component vector of float) -0:283 'r020' (temp 4-component vector of float) -0:283 dPdyCoarse (global 4-component vector of float) +0:283 'r019' (temp 4-component vector of float) +0:283 dPdy (global 4-component vector of float) 0:283 'inF0' (in 4-component vector of float) 0:284 Sequence 0:284 move second child to first child (temp 4-component vector of float) -0:284 'r021' (temp 4-component vector of float) -0:284 dPdyFine (global 4-component vector of float) +0:284 'r020' (temp 4-component vector of float) +0:284 dPdyCoarse (global 4-component vector of float) 0:284 'inF0' (in 4-component vector of float) 0:285 Sequence 0:285 move second child to first child (temp 4-component vector of float) -0:285 'r022' (temp 4-component vector of float) -0:285 degrees (global 4-component vector of float) +0:285 'r021' (temp 4-component vector of float) +0:285 dPdyFine (global 4-component vector of float) 0:285 'inF0' (in 4-component vector of float) 0:286 Sequence -0:286 move second child to first child (temp float) -0:286 'r023' (temp float) -0:286 distance (global float) +0:286 move second child to first child (temp 4-component vector of float) +0:286 'r022' (temp 4-component vector of float) +0:286 degrees (global 4-component vector of float) 0:286 'inF0' (in 4-component vector of float) -0:286 'inF1' (in 4-component vector of float) 0:287 Sequence 0:287 move second child to first child (temp float) -0:287 'r024' (temp float) -0:287 dot-product (global float) +0:287 'r023' (temp float) +0:287 distance (global float) 0:287 'inF0' (in 4-component vector of float) 0:287 'inF1' (in 4-component vector of float) 0:288 Sequence -0:288 move second child to first child (temp 4-component vector of float) -0:288 'r025' (temp 4-component vector of float) -0:288 Construct vec4 (temp 4-component vector of float) -0:288 Constant: -0:288 1.000000 -0:288 component-wise multiply (temp float) -0:288 direct index (temp float) -0:288 'inF0' (in 4-component vector of float) -0:288 Constant: -0:288 1 (const int) -0:288 direct index (temp float) -0:288 'inF1' (in 4-component vector of float) -0:288 Constant: -0:288 1 (const int) -0:288 direct index (temp float) -0:288 'inF0' (in 4-component vector of float) -0:288 Constant: -0:288 2 (const int) -0:288 direct index (temp float) -0:288 'inF1' (in 4-component vector of float) -0:288 Constant: -0:288 3 (const int) -0:292 Sequence -0:292 move second child to first child (temp 4-component vector of float) -0:292 'r029' (temp 4-component vector of float) -0:292 exp (global 4-component vector of float) -0:292 'inF0' (in 4-component vector of float) +0:288 move second child to first child (temp float) +0:288 'r024' (temp float) +0:288 dot-product (global float) +0:288 'inF0' (in 4-component vector of float) +0:288 'inF1' (in 4-component vector of float) +0:289 Sequence +0:289 move second child to first child (temp 4-component vector of float) +0:289 'r025' (temp 4-component vector of float) +0:289 Construct vec4 (temp 4-component vector of float) +0:289 Constant: +0:289 1.000000 +0:289 component-wise multiply (temp float) +0:289 direct index (temp float) +0:289 'inF0' (in 4-component vector of float) +0:289 Constant: +0:289 1 (const int) +0:289 direct index (temp float) +0:289 'inF1' (in 4-component vector of float) +0:289 Constant: +0:289 1 (const int) +0:289 direct index (temp float) +0:289 'inF0' (in 4-component vector of float) +0:289 Constant: +0:289 2 (const int) +0:289 direct index (temp float) +0:289 'inF1' (in 4-component vector of float) +0:289 Constant: +0:289 3 (const int) 0:293 Sequence 0:293 move second child to first child (temp 4-component vector of float) -0:293 'r030' (temp 4-component vector of float) -0:293 exp2 (global 4-component vector of float) +0:293 'r029' (temp 4-component vector of float) +0:293 exp (global 4-component vector of float) 0:293 'inF0' (in 4-component vector of float) 0:294 Sequence 0:294 move second child to first child (temp 4-component vector of float) -0:294 'r031' (temp 4-component vector of float) -0:294 face-forward (global 4-component vector of float) +0:294 'r030' (temp 4-component vector of float) +0:294 exp2 (global 4-component vector of float) 0:294 'inF0' (in 4-component vector of float) -0:294 'inF1' (in 4-component vector of float) -0:294 'inF2' (in 4-component vector of float) 0:295 Sequence -0:295 move second child to first child (temp 4-component vector of uint) -0:295 'r032' (temp 4-component vector of uint) +0:295 move second child to first child (temp 4-component vector of float) +0:295 'r031' (temp 4-component vector of float) +0:295 face-forward (global 4-component vector of float) +0:295 'inF0' (in 4-component vector of float) +0:295 'inF1' (in 4-component vector of float) +0:295 'inF2' (in 4-component vector of float) +0:296 Sequence +0:296 move second child to first child (temp 4-component vector of uint) +0:296 'r032' (temp 4-component vector of uint) 0:? findMSB (global 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:? 9 (const uint) 0:? 10 (const uint) -0:296 Sequence -0:296 move second child to first child (temp 4-component vector of uint) -0:296 'r033' (temp 4-component vector of uint) +0:297 Sequence +0:297 move second child to first child (temp 4-component vector of uint) +0:297 'r033' (temp 4-component vector of uint) 0:? findLSB (global 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:? 9 (const uint) 0:? 10 (const uint) -0:297 Sequence -0:297 move second child to first child (temp 4-component vector of float) -0:297 'r034' (temp 4-component vector of float) -0:297 Floor (global 4-component vector of float) -0:297 'inF0' (in 4-component vector of float) -0:299 Sequence -0:299 move second child to first child (temp 4-component vector of float) -0:299 'r036' (temp 4-component vector of float) -0:299 mod (global 4-component vector of float) -0:299 'inF0' (in 4-component vector of float) -0:299 'inF1' (in 4-component vector of float) +0:298 Sequence +0:298 move second child to first child (temp 4-component vector of float) +0:298 'r034' (temp 4-component vector of float) +0:298 Floor (global 4-component vector of float) +0:298 'inF0' (in 4-component vector of float) 0:300 Sequence 0:300 move second child to first child (temp 4-component vector of float) -0:300 'r037' (temp 4-component vector of float) -0:300 Fraction (global 4-component vector of float) +0:300 'r036' (temp 4-component vector of float) +0:300 mod (global 4-component vector of float) 0:300 'inF0' (in 4-component vector of float) +0:300 'inF1' (in 4-component vector of float) 0:301 Sequence 0:301 move second child to first child (temp 4-component vector of float) -0:301 'r038' (temp 4-component vector of float) -0:301 frexp (global 4-component vector of float) +0:301 'r037' (temp 4-component vector of float) +0:301 Fraction (global 4-component vector of float) 0:301 'inF0' (in 4-component vector of float) -0:301 'inF1' (in 4-component vector of float) 0:302 Sequence 0:302 move second child to first child (temp 4-component vector of float) -0:302 'r039' (temp 4-component vector of float) -0:302 fwidth (global 4-component vector of float) +0:302 'r038' (temp 4-component vector of float) +0:302 frexp (global 4-component vector of float) 0:302 'inF0' (in 4-component vector of float) +0:302 'inF1' (in 4-component vector of float) 0:303 Sequence -0:303 move second child to first child (temp 4-component vector of bool) -0:303 'r040' (temp 4-component vector of bool) -0:303 isinf (global 4-component vector of bool) +0:303 move second child to first child (temp 4-component vector of float) +0:303 'r039' (temp 4-component vector of float) +0:303 fwidth (global 4-component vector of float) 0:303 'inF0' (in 4-component vector of float) 0:304 Sequence 0:304 move second child to first child (temp 4-component vector of bool) -0:304 'r041' (temp 4-component vector of bool) -0:304 isnan (global 4-component vector of bool) +0:304 'r040' (temp 4-component vector of bool) +0:304 isinf (global 4-component vector of bool) 0:304 'inF0' (in 4-component vector of float) 0:305 Sequence -0:305 move second child to first child (temp 4-component vector of float) -0:305 'r042' (temp 4-component vector of float) -0:305 ldexp (global 4-component vector of float) +0:305 move second child to first child (temp 4-component vector of bool) +0:305 'r041' (temp 4-component vector of bool) +0:305 isnan (global 4-component vector of bool) 0:305 'inF0' (in 4-component vector of float) -0:305 'inF1' (in 4-component vector of float) 0:306 Sequence 0:306 move second child to first child (temp 4-component vector of float) -0:306 'r039a' (temp 4-component vector of float) -0:306 mix (global 4-component vector of float) +0:306 'r042' (temp 4-component vector of float) +0:306 ldexp (global 4-component vector of float) 0:306 'inF0' (in 4-component vector of float) 0:306 'inF1' (in 4-component vector of float) -0:306 'inF2' (in 4-component vector of float) 0:307 Sequence -0:307 move second child to first child (temp float) -0:307 'r043' (temp float) -0:307 length (global float) +0:307 move second child to first child (temp 4-component vector of float) +0:307 'r039a' (temp 4-component vector of float) +0:307 mix (global 4-component vector of float) 0:307 'inF0' (in 4-component vector of float) +0:307 'inF1' (in 4-component vector of float) +0:307 'inF2' (in 4-component vector of float) 0:308 Sequence -0:308 move second child to first child (temp 4-component vector of float) -0:308 'r044' (temp 4-component vector of float) -0:308 log (global 4-component vector of float) +0:308 move second child to first child (temp float) +0:308 'r043' (temp float) +0:308 length (global float) 0:308 'inF0' (in 4-component vector of float) 0:309 Sequence 0:309 move second child to first child (temp 4-component vector of float) -0:309 'r045' (temp 4-component vector of float) -0:309 vector-scale (temp 4-component vector of float) -0:309 log2 (temp 4-component vector of float) -0:309 'inF0' (in 4-component vector of float) -0:309 Constant: -0:309 0.301030 +0:309 'r044' (temp 4-component vector of float) +0:309 log (global 4-component vector of float) +0:309 'inF0' (in 4-component vector of float) 0:310 Sequence 0:310 move second child to first child (temp 4-component vector of float) -0:310 'r046' (temp 4-component vector of float) -0:310 log2 (global 4-component vector of float) -0:310 'inF0' (in 4-component vector of float) +0:310 'r045' (temp 4-component vector of float) +0:310 vector-scale (temp 4-component vector of float) +0:310 log2 (temp 4-component vector of float) +0:310 'inF0' (in 4-component vector of float) +0:310 Constant: +0:310 0.301030 0:311 Sequence 0:311 move second child to first child (temp 4-component vector of float) -0:311 'r047' (temp 4-component vector of float) -0:311 max (global 4-component vector of float) +0:311 'r046' (temp 4-component vector of float) +0:311 log2 (global 4-component vector of float) 0:311 'inF0' (in 4-component vector of float) -0:311 'inF1' (in 4-component vector of float) 0:312 Sequence 0:312 move second child to first child (temp 4-component vector of float) -0:312 'r048' (temp 4-component vector of float) -0:312 min (global 4-component vector of float) +0:312 'r047' (temp 4-component vector of float) +0:312 max (global 4-component vector of float) 0:312 'inF0' (in 4-component vector of float) 0:312 'inF1' (in 4-component vector of float) 0:313 Sequence 0:313 move second child to first child (temp 4-component vector of float) -0:313 'r049' (temp 4-component vector of float) -0:313 normalize (global 4-component vector of float) +0:313 'r048' (temp 4-component vector of float) +0:313 min (global 4-component vector of float) 0:313 'inF0' (in 4-component vector of float) +0:313 'inF1' (in 4-component vector of float) 0:314 Sequence 0:314 move second child to first child (temp 4-component vector of float) -0:314 'r050' (temp 4-component vector of float) -0:314 pow (global 4-component vector of float) +0:314 'r049' (temp 4-component vector of float) +0:314 normalize (global 4-component vector of float) 0:314 'inF0' (in 4-component vector of float) -0:314 'inF1' (in 4-component vector of float) 0:315 Sequence 0:315 move second child to first child (temp 4-component vector of float) -0:315 'r051' (temp 4-component vector of float) -0:315 radians (global 4-component vector of float) +0:315 'r050' (temp 4-component vector of float) +0:315 pow (global 4-component vector of float) 0:315 'inF0' (in 4-component vector of float) +0:315 'inF1' (in 4-component vector of float) 0:316 Sequence 0:316 move second child to first child (temp 4-component vector of float) -0:316 'r052' (temp 4-component vector of float) -0:316 divide (temp 4-component vector of float) -0:316 Constant: -0:316 1.000000 +0:316 'r051' (temp 4-component vector of float) +0:316 radians (global 4-component vector of float) 0:316 'inF0' (in 4-component vector of float) 0:317 Sequence 0:317 move second child to first child (temp 4-component vector of float) -0:317 'r053' (temp 4-component vector of float) -0:317 reflect (global 4-component vector of float) +0:317 'r052' (temp 4-component vector of float) +0:317 divide (temp 4-component vector of float) +0:317 Constant: +0:317 1.000000 0:317 'inF0' (in 4-component vector of float) -0:317 'inF1' (in 4-component vector of float) 0:318 Sequence 0:318 move second child to first child (temp 4-component vector of float) -0:318 'r054' (temp 4-component vector of float) -0:318 refract (global 4-component vector of float) +0:318 'r053' (temp 4-component vector of float) +0:318 reflect (global 4-component vector of float) 0:318 'inF0' (in 4-component vector of float) 0:318 'inF1' (in 4-component vector of float) -0:318 Constant: -0:318 2.000000 0:319 Sequence -0:319 move second child to first child (temp 4-component vector of uint) -0:319 'r055' (temp 4-component vector of uint) +0:319 move second child to first child (temp 4-component vector of float) +0:319 'r054' (temp 4-component vector of float) +0:319 refract (global 4-component vector of float) +0:319 'inF0' (in 4-component vector of float) +0:319 'inF1' (in 4-component vector of float) +0:319 Constant: +0:319 2.000000 +0:320 Sequence +0:320 move second child to first child (temp 4-component vector of uint) +0:320 'r055' (temp 4-component vector of uint) 0:? bitFieldReverse (global 4-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) 0:? 4 (const uint) -0:320 Sequence -0:320 move second child to first child (temp 4-component vector of float) -0:320 'r056' (temp 4-component vector of float) -0:320 roundEven (global 4-component vector of float) -0:320 'inF0' (in 4-component vector of float) 0:321 Sequence 0:321 move second child to first child (temp 4-component vector of float) -0:321 'r057' (temp 4-component vector of float) -0:321 inverse sqrt (global 4-component vector of float) +0:321 'r056' (temp 4-component vector of float) +0:321 roundEven (global 4-component vector of float) 0:321 'inF0' (in 4-component vector of float) 0:322 Sequence 0:322 move second child to first child (temp 4-component vector of float) -0:322 'r058' (temp 4-component vector of float) -0:322 clamp (temp 4-component vector of float) +0:322 'r057' (temp 4-component vector of float) +0:322 inverse sqrt (global 4-component vector of float) 0:322 'inF0' (in 4-component vector of float) -0:322 Constant: -0:322 0.000000 -0:322 Constant: -0:322 1.000000 0:323 Sequence 0:323 move second child to first child (temp 4-component vector of float) -0:323 'r059' (temp 4-component vector of float) -0:323 Sign (global 4-component vector of float) +0:323 'r058' (temp 4-component vector of float) +0:323 clamp (temp 4-component vector of float) 0:323 'inF0' (in 4-component vector of float) +0:323 Constant: +0:323 0.000000 +0:323 Constant: +0:323 1.000000 0:324 Sequence 0:324 move second child to first child (temp 4-component vector of float) -0:324 'r060' (temp 4-component vector of float) -0:324 sine (global 4-component vector of float) +0:324 'r059' (temp 4-component vector of float) +0:324 Sign (global 4-component vector of float) 0:324 'inF0' (in 4-component vector of float) 0:325 Sequence 0:325 move second child to first child (temp 4-component vector of float) -0:325 'inF1' (in 4-component vector of float) -0:325 sine (temp 4-component vector of float) -0:325 'inF0' (in 4-component vector of float) -0:325 move second child to first child (temp 4-component vector of float) -0:325 'inF2' (in 4-component vector of float) -0:325 cosine (temp 4-component vector of float) +0:325 'r060' (temp 4-component vector of float) +0:325 sine (global 4-component vector of float) 0:325 'inF0' (in 4-component vector of float) 0:326 Sequence 0:326 move second child to first child (temp 4-component vector of float) -0:326 'r061' (temp 4-component vector of float) -0:326 hyp. sine (global 4-component vector of float) +0:326 'inF1' (in 4-component vector of float) +0:326 sine (temp 4-component vector of float) +0:326 'inF0' (in 4-component vector of float) +0:326 move second child to first child (temp 4-component vector of float) +0:326 'inF2' (in 4-component vector of float) +0:326 cosine (temp 4-component vector of float) 0:326 'inF0' (in 4-component vector of float) 0:327 Sequence 0:327 move second child to first child (temp 4-component vector of float) -0:327 'r062' (temp 4-component vector of float) -0:327 smoothstep (global 4-component vector of float) +0:327 'r061' (temp 4-component vector of float) +0:327 hyp. sine (global 4-component vector of float) 0:327 'inF0' (in 4-component vector of float) -0:327 'inF1' (in 4-component vector of float) -0:327 'inF2' (in 4-component vector of float) 0:328 Sequence 0:328 move second child to first child (temp 4-component vector of float) -0:328 'r063' (temp 4-component vector of float) -0:328 sqrt (global 4-component vector of float) +0:328 'r062' (temp 4-component vector of float) +0:328 smoothstep (global 4-component vector of float) 0:328 'inF0' (in 4-component vector of float) +0:328 'inF1' (in 4-component vector of float) +0:328 'inF2' (in 4-component vector of float) 0:329 Sequence 0:329 move second child to first child (temp 4-component vector of float) -0:329 'r064' (temp 4-component vector of float) -0:329 step (global 4-component vector of float) +0:329 'r063' (temp 4-component vector of float) +0:329 sqrt (global 4-component vector of float) 0:329 'inF0' (in 4-component vector of float) -0:329 'inF1' (in 4-component vector of float) 0:330 Sequence 0:330 move second child to first child (temp 4-component vector of float) -0:330 'r065' (temp 4-component vector of float) -0:330 tangent (global 4-component vector of float) +0:330 'r064' (temp 4-component vector of float) +0:330 step (global 4-component vector of float) 0:330 'inF0' (in 4-component vector of float) +0:330 'inF1' (in 4-component vector of float) 0:331 Sequence 0:331 move second child to first child (temp 4-component vector of float) -0:331 'r066' (temp 4-component vector of float) -0:331 hyp. tangent (global 4-component vector of float) +0:331 'r065' (temp 4-component vector of float) +0:331 tangent (global 4-component vector of float) 0:331 'inF0' (in 4-component vector of float) -0:333 Sequence -0:333 move second child to first child (temp 4-component vector of float) -0:333 'r067' (temp 4-component vector of float) -0:333 trunc (global 4-component vector of float) -0:333 'inF0' (in 4-component vector of float) -0:336 Branch: Return with expression +0:332 Sequence +0:332 move second child to first child (temp 4-component vector of float) +0:332 'r066' (temp 4-component vector of float) +0:332 hyp. tangent (global 4-component vector of float) +0:332 'inF0' (in 4-component vector of float) +0:334 Sequence +0:334 move second child to first child (temp 4-component vector of float) +0:334 'r067' (temp 4-component vector of float) +0:334 trunc (global 4-component vector of float) +0:334 'inF0' (in 4-component vector of float) +0:337 Branch: Return with expression 0:? Constant: 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 -0:408 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float) -0:400 Function Parameters: -0:400 'inF0' (in 2X2 matrix of float) -0:400 'inF1' (in 2X2 matrix of float) -0:400 'inF2' (in 2X2 matrix of float) +0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float) +0:401 Function Parameters: +0:401 'inF0' (in 2X2 matrix of float) +0:401 'inF1' (in 2X2 matrix of float) +0:401 'inF2' (in 2X2 matrix of float) 0:? Sequence -0:402 Sequence -0:402 move second child to first child (temp bool) -0:402 'r000' (temp bool) -0:402 all (global bool) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r001' (temp 2X2 matrix of float) -0:402 Absolute value (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 arc cosine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp bool) -0:402 'r003' (temp bool) -0:402 any (global bool) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r004' (temp 2X2 matrix of float) -0:402 arc sine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r005' (temp 2X2 matrix of float) -0:402 arc tangent (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r006' (temp 2X2 matrix of float) -0:402 arc tangent (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r007' (temp 2X2 matrix of float) -0:402 Ceiling (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Test condition and select (temp void) -0:402 Condition -0:402 any (temp bool) -0:402 Compare Less Than (temp 2X2 matrix of bool) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Constant: -0:402 0.000000 -0:402 0.000000 -0:402 0.000000 -0:402 0.000000 -0:402 true case -0:402 Branch: Kill -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r008' (temp 2X2 matrix of float) -0:402 clamp (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 'inF2' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r009' (temp 2X2 matrix of float) -0:402 cosine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r010' (temp 2X2 matrix of float) -0:402 hyp. cosine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r011' (temp 2X2 matrix of float) -0:402 dPdx (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r012' (temp 2X2 matrix of float) -0:402 dPdxCoarse (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r013' (temp 2X2 matrix of float) -0:402 dPdxFine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r014' (temp 2X2 matrix of float) -0:402 dPdy (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r015' (temp 2X2 matrix of float) -0:402 dPdyCoarse (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r016' (temp 2X2 matrix of float) -0:402 dPdyFine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r017' (temp 2X2 matrix of float) -0:402 degrees (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp float) -0:402 'r018' (temp float) -0:402 determinant (global float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r019' (temp 2X2 matrix of float) -0:402 exp (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'R020' (temp 2X2 matrix of float) -0:402 exp2 (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r021' (temp 2X2 matrix of float) -0:402 Floor (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r022' (temp 2X2 matrix of float) -0:402 mod (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r023' (temp 2X2 matrix of float) -0:402 Fraction (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r024' (temp 2X2 matrix of float) -0:402 frexp (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r025' (temp 2X2 matrix of float) -0:402 fwidth (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r026' (temp 2X2 matrix of float) -0:402 ldexp (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r026a' (temp 2X2 matrix of float) -0:402 mix (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 'inF2' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r027' (temp 2X2 matrix of float) -0:402 log (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r028' (temp 2X2 matrix of float) -0:402 matrix-scale (temp 2X2 matrix of float) -0:402 log2 (temp 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Constant: -0:402 0.301030 -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r029' (temp 2X2 matrix of float) -0:402 log2 (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r030' (temp 2X2 matrix of float) -0:402 max (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r031' (temp 2X2 matrix of float) -0:402 min (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r032' (temp 2X2 matrix of float) -0:402 pow (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r033' (temp 2X2 matrix of float) -0:402 radians (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r034' (temp 2X2 matrix of float) -0:402 roundEven (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r035' (temp 2X2 matrix of float) -0:402 inverse sqrt (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r036' (temp 2X2 matrix of float) -0:402 clamp (temp 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Constant: -0:402 0.000000 -0:402 Constant: -0:402 1.000000 -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r037' (temp 2X2 matrix of float) -0:402 Sign (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r038' (temp 2X2 matrix of float) -0:402 sine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 sine (temp 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'inF2' (in 2X2 matrix of float) -0:402 cosine (temp 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r039' (temp 2X2 matrix of float) -0:402 hyp. sine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r049' (temp 2X2 matrix of float) -0:402 smoothstep (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 'inF2' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r041' (temp 2X2 matrix of float) -0:402 sqrt (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r042' (temp 2X2 matrix of float) -0:402 step (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r043' (temp 2X2 matrix of float) -0:402 tangent (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r044' (temp 2X2 matrix of float) -0:402 hyp. tangent (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 transpose (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r046' (temp 2X2 matrix of float) -0:402 trunc (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:405 Branch: Return with expression +0:403 Sequence +0:403 move second child to first child (temp bool) +0:403 'r000' (temp bool) +0:403 all (global bool) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r001' (temp 2X2 matrix of float) +0:403 Absolute value (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 arc cosine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp bool) +0:403 'r003' (temp bool) +0:403 any (global bool) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r004' (temp 2X2 matrix of float) +0:403 arc sine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r005' (temp 2X2 matrix of float) +0:403 arc tangent (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r006' (temp 2X2 matrix of float) +0:403 arc tangent (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r007' (temp 2X2 matrix of float) +0:403 Ceiling (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Test condition and select (temp void) +0:403 Condition +0:403 any (temp bool) +0:403 Compare Less Than (temp 2X2 matrix of bool) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Constant: +0:403 0.000000 +0:403 0.000000 +0:403 0.000000 +0:403 0.000000 +0:403 true case +0:403 Branch: Kill +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r008' (temp 2X2 matrix of float) +0:403 clamp (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 'inF2' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r009' (temp 2X2 matrix of float) +0:403 cosine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r010' (temp 2X2 matrix of float) +0:403 hyp. cosine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r011' (temp 2X2 matrix of float) +0:403 dPdx (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r012' (temp 2X2 matrix of float) +0:403 dPdxCoarse (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r013' (temp 2X2 matrix of float) +0:403 dPdxFine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r014' (temp 2X2 matrix of float) +0:403 dPdy (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r015' (temp 2X2 matrix of float) +0:403 dPdyCoarse (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r016' (temp 2X2 matrix of float) +0:403 dPdyFine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r017' (temp 2X2 matrix of float) +0:403 degrees (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp float) +0:403 'r018' (temp float) +0:403 determinant (global float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r019' (temp 2X2 matrix of float) +0:403 exp (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'R020' (temp 2X2 matrix of float) +0:403 exp2 (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r021' (temp 2X2 matrix of float) +0:403 Floor (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r022' (temp 2X2 matrix of float) +0:403 mod (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r023' (temp 2X2 matrix of float) +0:403 Fraction (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r024' (temp 2X2 matrix of float) +0:403 frexp (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r025' (temp 2X2 matrix of float) +0:403 fwidth (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r026' (temp 2X2 matrix of float) +0:403 ldexp (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r026a' (temp 2X2 matrix of float) +0:403 mix (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 'inF2' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r027' (temp 2X2 matrix of float) +0:403 log (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r028' (temp 2X2 matrix of float) +0:403 matrix-scale (temp 2X2 matrix of float) +0:403 log2 (temp 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Constant: +0:403 0.301030 +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r029' (temp 2X2 matrix of float) +0:403 log2 (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r030' (temp 2X2 matrix of float) +0:403 max (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r031' (temp 2X2 matrix of float) +0:403 min (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r032' (temp 2X2 matrix of float) +0:403 pow (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r033' (temp 2X2 matrix of float) +0:403 radians (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r034' (temp 2X2 matrix of float) +0:403 roundEven (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r035' (temp 2X2 matrix of float) +0:403 inverse sqrt (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r036' (temp 2X2 matrix of float) +0:403 clamp (temp 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Constant: +0:403 0.000000 +0:403 Constant: +0:403 1.000000 +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r037' (temp 2X2 matrix of float) +0:403 Sign (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r038' (temp 2X2 matrix of float) +0:403 sine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 sine (temp 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'inF2' (in 2X2 matrix of float) +0:403 cosine (temp 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r039' (temp 2X2 matrix of float) +0:403 hyp. sine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r049' (temp 2X2 matrix of float) +0:403 smoothstep (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 'inF2' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r041' (temp 2X2 matrix of float) +0:403 sqrt (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r042' (temp 2X2 matrix of float) +0:403 step (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r043' (temp 2X2 matrix of float) +0:403 tangent (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r044' (temp 2X2 matrix of float) +0:403 hyp. tangent (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 transpose (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r046' (temp 2X2 matrix of float) +0:403 trunc (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:406 Branch: Return with expression 0:? Constant: 0:? 2.000000 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:417 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float) -0:409 Function Parameters: -0:409 'inF0' (in 3X3 matrix of float) -0:409 'inF1' (in 3X3 matrix of float) -0:409 'inF2' (in 3X3 matrix of float) +0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float) +0:410 Function Parameters: +0:410 'inF0' (in 3X3 matrix of float) +0:410 'inF1' (in 3X3 matrix of float) +0:410 'inF2' (in 3X3 matrix of float) 0:? Sequence -0:411 Sequence -0:411 move second child to first child (temp bool) -0:411 'r000' (temp bool) -0:411 all (global bool) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r001' (temp 3X3 matrix of float) -0:411 Absolute value (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 arc cosine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp bool) -0:411 'r003' (temp bool) -0:411 any (global bool) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r004' (temp 3X3 matrix of float) -0:411 arc sine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r005' (temp 3X3 matrix of float) -0:411 arc tangent (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r006' (temp 3X3 matrix of float) -0:411 arc tangent (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r007' (temp 3X3 matrix of float) -0:411 Ceiling (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Test condition and select (temp void) -0:411 Condition -0:411 any (temp bool) -0:411 Compare Less Than (temp 3X3 matrix of bool) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Constant: -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 true case -0:411 Branch: Kill -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r008' (temp 3X3 matrix of float) -0:411 clamp (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 'inF2' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r009' (temp 3X3 matrix of float) -0:411 cosine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r010' (temp 3X3 matrix of float) -0:411 hyp. cosine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r011' (temp 3X3 matrix of float) -0:411 dPdx (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r012' (temp 3X3 matrix of float) -0:411 dPdxCoarse (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r013' (temp 3X3 matrix of float) -0:411 dPdxFine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r014' (temp 3X3 matrix of float) -0:411 dPdy (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r015' (temp 3X3 matrix of float) -0:411 dPdyCoarse (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r016' (temp 3X3 matrix of float) -0:411 dPdyFine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r017' (temp 3X3 matrix of float) -0:411 degrees (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp float) -0:411 'r018' (temp float) -0:411 determinant (global float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r019' (temp 3X3 matrix of float) -0:411 exp (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'R020' (temp 3X3 matrix of float) -0:411 exp2 (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r021' (temp 3X3 matrix of float) -0:411 Floor (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r022' (temp 3X3 matrix of float) -0:411 mod (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r023' (temp 3X3 matrix of float) -0:411 Fraction (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r024' (temp 3X3 matrix of float) -0:411 frexp (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r025' (temp 3X3 matrix of float) -0:411 fwidth (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r026' (temp 3X3 matrix of float) -0:411 ldexp (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r026a' (temp 3X3 matrix of float) -0:411 mix (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 'inF2' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r027' (temp 3X3 matrix of float) -0:411 log (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r028' (temp 3X3 matrix of float) -0:411 matrix-scale (temp 3X3 matrix of float) -0:411 log2 (temp 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Constant: -0:411 0.301030 -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r029' (temp 3X3 matrix of float) -0:411 log2 (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r030' (temp 3X3 matrix of float) -0:411 max (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r031' (temp 3X3 matrix of float) -0:411 min (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r032' (temp 3X3 matrix of float) -0:411 pow (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r033' (temp 3X3 matrix of float) -0:411 radians (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r034' (temp 3X3 matrix of float) -0:411 roundEven (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r035' (temp 3X3 matrix of float) -0:411 inverse sqrt (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r036' (temp 3X3 matrix of float) -0:411 clamp (temp 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Constant: -0:411 0.000000 -0:411 Constant: -0:411 1.000000 -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r037' (temp 3X3 matrix of float) -0:411 Sign (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r038' (temp 3X3 matrix of float) -0:411 sine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 sine (temp 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'inF2' (in 3X3 matrix of float) -0:411 cosine (temp 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r039' (temp 3X3 matrix of float) -0:411 hyp. sine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r049' (temp 3X3 matrix of float) -0:411 smoothstep (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 'inF2' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r041' (temp 3X3 matrix of float) -0:411 sqrt (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r042' (temp 3X3 matrix of float) -0:411 step (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r043' (temp 3X3 matrix of float) -0:411 tangent (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r044' (temp 3X3 matrix of float) -0:411 hyp. tangent (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 transpose (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r046' (temp 3X3 matrix of float) -0:411 trunc (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:414 Branch: Return with expression +0:412 Sequence +0:412 move second child to first child (temp bool) +0:412 'r000' (temp bool) +0:412 all (global bool) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r001' (temp 3X3 matrix of float) +0:412 Absolute value (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 arc cosine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp bool) +0:412 'r003' (temp bool) +0:412 any (global bool) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r004' (temp 3X3 matrix of float) +0:412 arc sine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r005' (temp 3X3 matrix of float) +0:412 arc tangent (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r006' (temp 3X3 matrix of float) +0:412 arc tangent (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r007' (temp 3X3 matrix of float) +0:412 Ceiling (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Test condition and select (temp void) +0:412 Condition +0:412 any (temp bool) +0:412 Compare Less Than (temp 3X3 matrix of bool) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Constant: +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 true case +0:412 Branch: Kill +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r008' (temp 3X3 matrix of float) +0:412 clamp (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 'inF2' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r009' (temp 3X3 matrix of float) +0:412 cosine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r010' (temp 3X3 matrix of float) +0:412 hyp. cosine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r011' (temp 3X3 matrix of float) +0:412 dPdx (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r012' (temp 3X3 matrix of float) +0:412 dPdxCoarse (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r013' (temp 3X3 matrix of float) +0:412 dPdxFine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r014' (temp 3X3 matrix of float) +0:412 dPdy (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r015' (temp 3X3 matrix of float) +0:412 dPdyCoarse (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r016' (temp 3X3 matrix of float) +0:412 dPdyFine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r017' (temp 3X3 matrix of float) +0:412 degrees (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp float) +0:412 'r018' (temp float) +0:412 determinant (global float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r019' (temp 3X3 matrix of float) +0:412 exp (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'R020' (temp 3X3 matrix of float) +0:412 exp2 (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r021' (temp 3X3 matrix of float) +0:412 Floor (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r022' (temp 3X3 matrix of float) +0:412 mod (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r023' (temp 3X3 matrix of float) +0:412 Fraction (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r024' (temp 3X3 matrix of float) +0:412 frexp (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r025' (temp 3X3 matrix of float) +0:412 fwidth (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r026' (temp 3X3 matrix of float) +0:412 ldexp (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r026a' (temp 3X3 matrix of float) +0:412 mix (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 'inF2' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r027' (temp 3X3 matrix of float) +0:412 log (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r028' (temp 3X3 matrix of float) +0:412 matrix-scale (temp 3X3 matrix of float) +0:412 log2 (temp 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Constant: +0:412 0.301030 +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r029' (temp 3X3 matrix of float) +0:412 log2 (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r030' (temp 3X3 matrix of float) +0:412 max (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r031' (temp 3X3 matrix of float) +0:412 min (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r032' (temp 3X3 matrix of float) +0:412 pow (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r033' (temp 3X3 matrix of float) +0:412 radians (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r034' (temp 3X3 matrix of float) +0:412 roundEven (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r035' (temp 3X3 matrix of float) +0:412 inverse sqrt (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r036' (temp 3X3 matrix of float) +0:412 clamp (temp 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Constant: +0:412 0.000000 +0:412 Constant: +0:412 1.000000 +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r037' (temp 3X3 matrix of float) +0:412 Sign (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r038' (temp 3X3 matrix of float) +0:412 sine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 sine (temp 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'inF2' (in 3X3 matrix of float) +0:412 cosine (temp 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r039' (temp 3X3 matrix of float) +0:412 hyp. sine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r049' (temp 3X3 matrix of float) +0:412 smoothstep (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 'inF2' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r041' (temp 3X3 matrix of float) +0:412 sqrt (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r042' (temp 3X3 matrix of float) +0:412 step (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r043' (temp 3X3 matrix of float) +0:412 tangent (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r044' (temp 3X3 matrix of float) +0:412 hyp. tangent (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 transpose (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r046' (temp 3X3 matrix of float) +0:412 trunc (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:415 Branch: Return with expression 0:? Constant: 0:? 3.000000 0:? 3.000000 @@ -2136,301 +2144,301 @@ gl_FragCoord origin is upper left 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:438 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float) -0:418 Function Parameters: -0:418 'inF0' (in 4X4 matrix of float) -0:418 'inF1' (in 4X4 matrix of float) -0:418 'inF2' (in 4X4 matrix of float) +0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float) +0:419 Function Parameters: +0:419 'inF0' (in 4X4 matrix of float) +0:419 'inF1' (in 4X4 matrix of float) +0:419 'inF2' (in 4X4 matrix of float) 0:? Sequence -0:420 Sequence -0:420 move second child to first child (temp bool) -0:420 'r000' (temp bool) -0:420 all (global bool) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r001' (temp 4X4 matrix of float) -0:420 Absolute value (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 arc cosine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp bool) -0:420 'r003' (temp bool) -0:420 any (global bool) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r004' (temp 4X4 matrix of float) -0:420 arc sine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r005' (temp 4X4 matrix of float) -0:420 arc tangent (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r006' (temp 4X4 matrix of float) -0:420 arc tangent (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r007' (temp 4X4 matrix of float) -0:420 Ceiling (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Test condition and select (temp void) -0:420 Condition -0:420 any (temp bool) -0:420 Compare Less Than (temp 4X4 matrix of bool) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Constant: -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 true case -0:420 Branch: Kill -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r008' (temp 4X4 matrix of float) -0:420 clamp (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 'inF2' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r009' (temp 4X4 matrix of float) -0:420 cosine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r010' (temp 4X4 matrix of float) -0:420 hyp. cosine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r011' (temp 4X4 matrix of float) -0:420 dPdx (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r012' (temp 4X4 matrix of float) -0:420 dPdxCoarse (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r013' (temp 4X4 matrix of float) -0:420 dPdxFine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r014' (temp 4X4 matrix of float) -0:420 dPdy (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r015' (temp 4X4 matrix of float) -0:420 dPdyCoarse (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r016' (temp 4X4 matrix of float) -0:420 dPdyFine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r017' (temp 4X4 matrix of float) -0:420 degrees (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp float) -0:420 'r018' (temp float) -0:420 determinant (global float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r019' (temp 4X4 matrix of float) -0:420 exp (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'R020' (temp 4X4 matrix of float) -0:420 exp2 (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r021' (temp 4X4 matrix of float) -0:420 Floor (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r022' (temp 4X4 matrix of float) -0:420 mod (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r023' (temp 4X4 matrix of float) -0:420 Fraction (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r024' (temp 4X4 matrix of float) -0:420 frexp (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r025' (temp 4X4 matrix of float) -0:420 fwidth (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r026' (temp 4X4 matrix of float) -0:420 ldexp (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r026a' (temp 4X4 matrix of float) -0:420 mix (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 'inF2' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r027' (temp 4X4 matrix of float) -0:420 log (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r028' (temp 4X4 matrix of float) -0:420 matrix-scale (temp 4X4 matrix of float) -0:420 log2 (temp 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Constant: -0:420 0.301030 -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r029' (temp 4X4 matrix of float) -0:420 log2 (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r030' (temp 4X4 matrix of float) -0:420 max (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r031' (temp 4X4 matrix of float) -0:420 min (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r032' (temp 4X4 matrix of float) -0:420 pow (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r033' (temp 4X4 matrix of float) -0:420 radians (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r034' (temp 4X4 matrix of float) -0:420 roundEven (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r035' (temp 4X4 matrix of float) -0:420 inverse sqrt (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r036' (temp 4X4 matrix of float) -0:420 clamp (temp 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Constant: -0:420 0.000000 -0:420 Constant: -0:420 1.000000 -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r037' (temp 4X4 matrix of float) -0:420 Sign (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r038' (temp 4X4 matrix of float) -0:420 sine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 sine (temp 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'inF2' (in 4X4 matrix of float) -0:420 cosine (temp 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r039' (temp 4X4 matrix of float) -0:420 hyp. sine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r049' (temp 4X4 matrix of float) -0:420 smoothstep (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 'inF2' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r041' (temp 4X4 matrix of float) -0:420 sqrt (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r042' (temp 4X4 matrix of float) -0:420 step (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r043' (temp 4X4 matrix of float) -0:420 tangent (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r044' (temp 4X4 matrix of float) -0:420 hyp. tangent (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 transpose (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r046' (temp 4X4 matrix of float) -0:420 trunc (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:423 Branch: Return with expression +0:421 Sequence +0:421 move second child to first child (temp bool) +0:421 'r000' (temp bool) +0:421 all (global bool) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r001' (temp 4X4 matrix of float) +0:421 Absolute value (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 arc cosine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp bool) +0:421 'r003' (temp bool) +0:421 any (global bool) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r004' (temp 4X4 matrix of float) +0:421 arc sine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r005' (temp 4X4 matrix of float) +0:421 arc tangent (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r006' (temp 4X4 matrix of float) +0:421 arc tangent (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r007' (temp 4X4 matrix of float) +0:421 Ceiling (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Test condition and select (temp void) +0:421 Condition +0:421 any (temp bool) +0:421 Compare Less Than (temp 4X4 matrix of bool) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Constant: +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 true case +0:421 Branch: Kill +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r008' (temp 4X4 matrix of float) +0:421 clamp (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 'inF2' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r009' (temp 4X4 matrix of float) +0:421 cosine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r010' (temp 4X4 matrix of float) +0:421 hyp. cosine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r011' (temp 4X4 matrix of float) +0:421 dPdx (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r012' (temp 4X4 matrix of float) +0:421 dPdxCoarse (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r013' (temp 4X4 matrix of float) +0:421 dPdxFine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r014' (temp 4X4 matrix of float) +0:421 dPdy (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r015' (temp 4X4 matrix of float) +0:421 dPdyCoarse (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r016' (temp 4X4 matrix of float) +0:421 dPdyFine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r017' (temp 4X4 matrix of float) +0:421 degrees (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp float) +0:421 'r018' (temp float) +0:421 determinant (global float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r019' (temp 4X4 matrix of float) +0:421 exp (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'R020' (temp 4X4 matrix of float) +0:421 exp2 (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r021' (temp 4X4 matrix of float) +0:421 Floor (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r022' (temp 4X4 matrix of float) +0:421 mod (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r023' (temp 4X4 matrix of float) +0:421 Fraction (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r024' (temp 4X4 matrix of float) +0:421 frexp (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r025' (temp 4X4 matrix of float) +0:421 fwidth (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r026' (temp 4X4 matrix of float) +0:421 ldexp (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r026a' (temp 4X4 matrix of float) +0:421 mix (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 'inF2' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r027' (temp 4X4 matrix of float) +0:421 log (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r028' (temp 4X4 matrix of float) +0:421 matrix-scale (temp 4X4 matrix of float) +0:421 log2 (temp 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Constant: +0:421 0.301030 +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r029' (temp 4X4 matrix of float) +0:421 log2 (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r030' (temp 4X4 matrix of float) +0:421 max (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r031' (temp 4X4 matrix of float) +0:421 min (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r032' (temp 4X4 matrix of float) +0:421 pow (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r033' (temp 4X4 matrix of float) +0:421 radians (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r034' (temp 4X4 matrix of float) +0:421 roundEven (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r035' (temp 4X4 matrix of float) +0:421 inverse sqrt (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r036' (temp 4X4 matrix of float) +0:421 clamp (temp 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Constant: +0:421 0.000000 +0:421 Constant: +0:421 1.000000 +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r037' (temp 4X4 matrix of float) +0:421 Sign (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r038' (temp 4X4 matrix of float) +0:421 sine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 sine (temp 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'inF2' (in 4X4 matrix of float) +0:421 cosine (temp 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r039' (temp 4X4 matrix of float) +0:421 hyp. sine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r049' (temp 4X4 matrix of float) +0:421 smoothstep (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 'inF2' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r041' (temp 4X4 matrix of float) +0:421 sqrt (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r042' (temp 4X4 matrix of float) +0:421 step (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r043' (temp 4X4 matrix of float) +0:421 tangent (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r044' (temp 4X4 matrix of float) +0:421 hyp. tangent (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 transpose (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r046' (temp 4X4 matrix of float) +0:421 trunc (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:424 Branch: Return with expression 0:? Constant: 0:? 4.000000 0:? 4.000000 @@ -2448,322 +2456,345 @@ gl_FragCoord origin is upper left 0:? 4.000000 0:? 4.000000 0:? 4.000000 -0:445 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void) -0:441 Function Parameters: -0:441 'inF0' (in float) -0:441 'inF1' (in float) -0:441 'inFV0' (in 2-component vector of float) -0:441 'inFV1' (in 2-component vector of float) -0:441 'inFM0' (in 2X2 matrix of float) -0:441 'inFM1' (in 2X2 matrix of float) +0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (temp void) +0:442 Function Parameters: +0:442 'inF0' (in float) +0:442 'inF1' (in float) +0:442 'inFV0' (in 2-component vector of float) +0:442 'inFV1' (in 2-component vector of float) +0:442 'inFM0' (in 2X2 matrix of float) +0:442 'inFM1' (in 2X2 matrix of float) 0:? Sequence -0:442 Sequence -0:442 move second child to first child (temp float) -0:442 'r0' (temp float) -0:442 component-wise multiply (temp float) -0:442 'inF0' (in float) -0:442 'inF1' (in float) -0:442 Sequence -0:442 move second child to first child (temp 2-component vector of float) -0:442 'r1' (temp 2-component vector of float) -0:442 vector-scale (temp 2-component vector of float) -0:442 'inFV0' (in 2-component vector of float) -0:442 'inF0' (in float) -0:442 Sequence -0:442 move second child to first child (temp 2-component vector of float) -0:442 'r2' (temp 2-component vector of float) -0:442 vector-scale (temp 2-component vector of float) -0:442 'inF0' (in float) -0:442 'inFV0' (in 2-component vector of float) -0:442 Sequence -0:442 move second child to first child (temp float) -0:442 'r3' (temp float) -0:442 dot-product (global float) -0:442 'inFV0' (in 2-component vector of float) -0:442 'inFV1' (in 2-component vector of float) -0:442 Sequence -0:442 move second child to first child (temp 2-component vector of float) -0:442 'r4' (temp 2-component vector of float) -0:442 matrix-times-vector (temp 2-component vector of float) -0:442 'inFM0' (in 2X2 matrix of float) -0:442 'inFV0' (in 2-component vector of float) -0:442 Sequence -0:442 move second child to first child (temp 2-component vector of float) -0:442 'r5' (temp 2-component vector of float) -0:442 vector-times-matrix (temp 2-component vector of float) -0:442 'inFV0' (in 2-component vector of float) -0:442 'inFM0' (in 2X2 matrix of float) -0:442 Sequence -0:442 move second child to first child (temp 2X2 matrix of float) -0:442 'r6' (temp 2X2 matrix of float) -0:442 matrix-scale (temp 2X2 matrix of float) -0:442 'inFM0' (in 2X2 matrix of float) -0:442 'inF0' (in float) -0:442 Sequence -0:442 move second child to first child (temp 2X2 matrix of float) -0:442 'r7' (temp 2X2 matrix of float) -0:442 matrix-scale (temp 2X2 matrix of float) -0:442 'inF0' (in float) -0:442 'inFM0' (in 2X2 matrix of float) -0:442 Sequence -0:442 move second child to first child (temp 2X2 matrix of float) -0:442 'r8' (temp 2X2 matrix of float) -0:442 matrix-multiply (temp 2X2 matrix of float) -0:442 'inFM0' (in 2X2 matrix of float) -0:442 'inFM1' (in 2X2 matrix of float) -0:452 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void) -0:448 Function Parameters: -0:448 'inF0' (in float) -0:448 'inF1' (in float) -0:448 'inFV0' (in 3-component vector of float) -0:448 'inFV1' (in 3-component vector of float) -0:448 'inFM0' (in 3X3 matrix of float) -0:448 'inFM1' (in 3X3 matrix of float) +0:443 Sequence +0:443 move second child to first child (temp float) +0:443 'r0' (temp float) +0:443 component-wise multiply (temp 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 '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 '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) +0:443 dot-product (global float) +0:443 'inFV0' (in 2-component vector of float) +0:443 'inFV1' (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 'r4' (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 '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 '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 'inFM1' (in 2X2 matrix of float) +0:443 'inFM0' (in 2X2 matrix of float) +0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (temp void) +0:449 Function Parameters: +0:449 'inF0' (in float) +0:449 'inF1' (in float) +0:449 'inFV0' (in 3-component vector of float) +0:449 'inFV1' (in 3-component vector of float) +0:449 'inFM0' (in 3X3 matrix of float) +0:449 'inFM1' (in 3X3 matrix of float) 0:? Sequence -0:449 Sequence -0:449 move second child to first child (temp float) -0:449 'r0' (temp float) -0:449 component-wise multiply (temp float) -0:449 'inF0' (in float) -0:449 'inF1' (in float) -0:449 Sequence -0:449 move second child to first child (temp 3-component vector of float) -0:449 'r1' (temp 3-component vector of float) -0:449 vector-scale (temp 3-component vector of float) -0:449 'inFV0' (in 3-component vector of float) -0:449 'inF0' (in float) -0:449 Sequence -0:449 move second child to first child (temp 3-component vector of float) -0:449 'r2' (temp 3-component vector of float) -0:449 vector-scale (temp 3-component vector of float) -0:449 'inF0' (in float) -0:449 'inFV0' (in 3-component vector of float) -0:449 Sequence -0:449 move second child to first child (temp float) -0:449 'r3' (temp float) -0:449 dot-product (global float) -0:449 'inFV0' (in 3-component vector of float) -0:449 'inFV1' (in 3-component vector of float) -0:449 Sequence -0:449 move second child to first child (temp 3-component vector of float) -0:449 'r4' (temp 3-component vector of float) -0:449 matrix-times-vector (temp 3-component vector of float) -0:449 'inFM0' (in 3X3 matrix of float) -0:449 'inFV0' (in 3-component vector of float) -0:449 Sequence -0:449 move second child to first child (temp 3-component vector of float) -0:449 'r5' (temp 3-component vector of float) -0:449 vector-times-matrix (temp 3-component vector of float) -0:449 'inFV0' (in 3-component vector of float) -0:449 'inFM0' (in 3X3 matrix of float) -0:449 Sequence -0:449 move second child to first child (temp 3X3 matrix of float) -0:449 'r6' (temp 3X3 matrix of float) -0:449 matrix-scale (temp 3X3 matrix of float) -0:449 'inFM0' (in 3X3 matrix of float) -0:449 'inF0' (in float) -0:449 Sequence -0:449 move second child to first child (temp 3X3 matrix of float) -0:449 'r7' (temp 3X3 matrix of float) -0:449 matrix-scale (temp 3X3 matrix of float) -0:449 'inF0' (in float) -0:449 'inFM0' (in 3X3 matrix of float) -0:449 Sequence -0:449 move second child to first child (temp 3X3 matrix of float) -0:449 'r8' (temp 3X3 matrix of float) -0:449 matrix-multiply (temp 3X3 matrix of float) -0:449 'inFM0' (in 3X3 matrix of float) -0:449 'inFM1' (in 3X3 matrix of float) -0:460 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void) -0:455 Function Parameters: -0:455 'inF0' (in float) -0:455 'inF1' (in float) -0:455 'inFV0' (in 4-component vector of float) -0:455 'inFV1' (in 4-component vector of float) -0:455 'inFM0' (in 4X4 matrix of float) -0:455 'inFM1' (in 4X4 matrix of float) +0:450 Sequence +0:450 move second child to first child (temp float) +0:450 'r0' (temp float) +0:450 component-wise multiply (temp 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 '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 '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) +0:450 dot-product (global float) +0:450 'inFV0' (in 3-component vector of float) +0:450 'inFV1' (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 'r4' (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 '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 '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 'inFM1' (in 3X3 matrix of float) +0:450 'inFM0' (in 3X3 matrix of float) +0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (temp void) +0:456 Function Parameters: +0:456 'inF0' (in float) +0:456 'inF1' (in float) +0:456 'inFV0' (in 4-component vector of float) +0:456 'inFV1' (in 4-component vector of float) +0:456 'inFM0' (in 4X4 matrix of float) +0:456 'inFM1' (in 4X4 matrix of float) 0:? Sequence -0:456 Sequence -0:456 move second child to first child (temp float) -0:456 'r0' (temp float) -0:456 component-wise multiply (temp float) -0:456 'inF0' (in float) -0:456 'inF1' (in float) -0:456 Sequence -0:456 move second child to first child (temp 4-component vector of float) -0:456 'r1' (temp 4-component vector of float) -0:456 vector-scale (temp 4-component vector of float) -0:456 'inFV0' (in 4-component vector of float) -0:456 'inF0' (in float) -0:456 Sequence -0:456 move second child to first child (temp 4-component vector of float) -0:456 'r2' (temp 4-component vector of float) -0:456 vector-scale (temp 4-component vector of float) -0:456 'inF0' (in float) -0:456 'inFV0' (in 4-component vector of float) -0:456 Sequence -0:456 move second child to first child (temp float) -0:456 'r3' (temp float) -0:456 dot-product (global float) -0:456 'inFV0' (in 4-component vector of float) -0:456 'inFV1' (in 4-component vector of float) -0:456 Sequence -0:456 move second child to first child (temp 4-component vector of float) -0:456 'r4' (temp 4-component vector of float) -0:456 matrix-times-vector (temp 4-component vector of float) -0:456 'inFM0' (in 4X4 matrix of float) -0:456 'inFV0' (in 4-component vector of float) -0:456 Sequence -0:456 move second child to first child (temp 4-component vector of float) -0:456 'r5' (temp 4-component vector of float) -0:456 vector-times-matrix (temp 4-component vector of float) -0:456 'inFV0' (in 4-component vector of float) -0:456 'inFM0' (in 4X4 matrix of float) -0:456 Sequence -0:456 move second child to first child (temp 4X4 matrix of float) -0:456 'r6' (temp 4X4 matrix of float) -0:456 matrix-scale (temp 4X4 matrix of float) -0:456 'inFM0' (in 4X4 matrix of float) -0:456 'inF0' (in float) -0:456 Sequence -0:456 move second child to first child (temp 4X4 matrix of float) -0:456 'r7' (temp 4X4 matrix of float) -0:456 matrix-scale (temp 4X4 matrix of float) -0:456 'inF0' (in float) -0:456 'inFM0' (in 4X4 matrix of float) -0:456 Sequence -0:456 move second child to first child (temp 4X4 matrix of float) -0:456 'r8' (temp 4X4 matrix of float) -0:456 matrix-multiply (temp 4X4 matrix of float) -0:456 'inFM0' (in 4X4 matrix of float) -0:456 'inFM1' (in 4X4 matrix of float) -0:484 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void) -0:465 Function Parameters: -0:465 'inF0' (in float) -0:465 'inF1' (in float) -0:465 'inFV2' (in 2-component vector of float) -0:465 'inFV3' (in 3-component vector of float) -0:465 'inFM2x3' (in 3X2 matrix of float) -0:465 'inFM3x2' (in 2X3 matrix of float) -0:465 'inFM3x3' (in 3X3 matrix of float) -0:465 'inFM3x4' (in 4X3 matrix of float) -0:465 'inFM2x4' (in 4X2 matrix of float) +0:457 Sequence +0:457 move second child to first child (temp float) +0:457 'r0' (temp float) +0:457 component-wise multiply (temp 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 '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 '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) +0:457 dot-product (global float) +0:457 'inFV0' (in 4-component vector of float) +0:457 'inFV1' (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 'r4' (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 '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 '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 'inFM1' (in 4X4 matrix of float) +0:457 'inFM0' (in 4X4 matrix of float) +0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (temp 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 2X3 matrix of float) +0:466 'inFM3x2' (in 3X2 matrix of float) +0:466 'inFM3x3' (in 3X3 matrix of float) +0:466 'inFM3x4' (in 3X4 matrix of float) +0:466 'inFM2x4' (in 2X4 matrix of float) 0:? Sequence -0:466 Sequence -0:466 move second child to first child (temp float) -0:466 'r00' (temp float) -0:466 component-wise multiply (temp float) -0:466 'inF0' (in float) -0:466 'inF1' (in float) 0:467 Sequence -0:467 move second child to first child (temp 2-component vector of float) -0:467 'r01' (temp 2-component vector of float) -0:467 vector-scale (temp 2-component vector of float) -0:467 'inFV2' (in 2-component vector of float) +0:467 move second child to first child (temp float) +0:467 'r00' (temp float) +0:467 component-wise multiply (temp float) +0:467 'inF1' (in float) 0:467 'inF0' (in float) 0:468 Sequence -0:468 move second child to first child (temp 3-component vector of float) -0:468 'r02' (temp 3-component vector of float) -0:468 vector-scale (temp 3-component vector of float) -0:468 'inFV3' (in 3-component vector of float) +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 'inF0' (in float) +0:468 'inFV2' (in 2-component vector of float) 0:469 Sequence -0:469 move second child to first child (temp 2-component vector of float) -0:469 'r03' (temp 2-component vector of float) -0:469 vector-scale (temp 2-component vector of float) +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 'inF0' (in float) -0:469 'inFV2' (in 2-component vector of float) +0:469 'inFV3' (in 3-component vector of float) 0:470 Sequence -0:470 move second child to first child (temp 3-component vector of float) -0:470 'r04' (temp 3-component vector of float) -0:470 vector-scale (temp 3-component vector of float) +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 'inFV2' (in 2-component vector of float) 0:470 'inF0' (in float) -0:470 'inFV3' (in 3-component vector of float) 0:471 Sequence -0:471 move second child to first child (temp float) -0:471 'r05' (temp float) -0:471 dot-product (global float) -0:471 'inFV2' (in 2-component vector of float) -0:471 'inFV2' (in 2-component vector of float) +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 '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 'r06' (temp float) +0:472 'r05' (temp float) 0:472 dot-product (global float) -0:472 'inFV3' (in 3-component vector of float) -0:472 'inFV3' (in 3-component vector of float) +0:472 'inFV2' (in 2-component vector of float) +0:472 'inFV2' (in 2-component vector of float) 0:473 Sequence -0:473 move second child to first child (temp 3-component vector of float) -0:473 'r07' (temp 3-component vector of float) -0:473 vector-times-matrix (temp 3-component vector of float) -0:473 'inFV2' (in 2-component vector of float) -0:473 'inFM2x3' (in 3X2 matrix of float) +0:473 move second child to first child (temp float) +0:473 'r06' (temp float) +0:473 dot-product (global float) +0:473 'inFV3' (in 3-component vector of float) +0:473 'inFV3' (in 3-component vector of float) 0:474 Sequence -0:474 move second child to first child (temp 2-component vector of float) -0:474 'r08' (temp 2-component vector of float) -0:474 vector-times-matrix (temp 2-component vector of float) -0:474 'inFV3' (in 3-component vector of float) -0:474 'inFM3x2' (in 2X3 matrix of float) +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 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:475 Sequence 0:475 move second child to first child (temp 2-component vector of float) -0:475 'r09' (temp 2-component vector of float) +0:475 'r08' (temp 2-component vector of float) 0:475 matrix-times-vector (temp 2-component vector of float) -0:475 'inFM2x3' (in 3X2 matrix of float) +0:475 'inFM3x2' (in 3X2 matrix of float) 0:475 'inFV3' (in 3-component vector of float) 0:476 Sequence -0:476 move second child to first child (temp 3-component vector of float) -0:476 'r10' (temp 3-component vector of float) -0:476 matrix-times-vector (temp 3-component vector of float) -0:476 'inFM3x2' (in 2X3 matrix of float) -0:476 'inFV2' (in 2-component vector of float) +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 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 3X2 matrix of float) -0:477 'r11' (temp 3X2 matrix of float) -0:477 matrix-scale (temp 3X2 matrix of float) -0:477 'inFM2x3' (in 3X2 matrix of float) -0:477 'inF0' (in float) +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 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 2X3 matrix of float) -0:478 'r12' (temp 2X3 matrix of float) +0:478 'r11' (temp 2X3 matrix of float) 0:478 matrix-scale (temp 2X3 matrix of float) -0:478 'inFM3x2' (in 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 2X2 matrix of float) -0:479 'r13' (temp 2X2 matrix of float) -0:479 matrix-multiply (temp 2X2 matrix of float) -0:479 'inFM2x3' (in 3X2 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 3X2 matrix of float) -0:480 'r14' (temp 3X2 matrix of float) -0:480 matrix-multiply (temp 3X2 matrix of float) -0:480 'inFM2x3' (in 3X2 matrix of float) -0:480 'inFM3x3' (in 3X3 matrix of float) +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 '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 4X2 matrix of float) -0:481 'r15' (temp 4X2 matrix of float) -0:481 matrix-multiply (temp 4X2 matrix of float) -0:481 'inFM2x3' (in 3X2 matrix of float) -0:481 'inFM3x4' (in 4X3 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 4X3 matrix of float) -0:482 'r16' (temp 4X3 matrix of float) -0:482 matrix-multiply (temp 4X3 matrix of float) -0:482 'inFM3x2' (in 2X3 matrix of float) -0:482 'inFM2x4' (in 4X2 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 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( (temp 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:492 Sequence +0:492 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) -0:? 'gs_uc' (global uint) -0:? 'gs_ua2' (global 2-component vector of uint) -0:? 'gs_ub2' (global 2-component vector of uint) -0:? 'gs_uc2' (global 2-component vector of uint) -0:? 'gs_ua3' (global 3-component vector of uint) -0:? 'gs_ub3' (global 3-component vector of uint) -0:? 'gs_uc3' (global 3-component vector of uint) -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:? 'gs_ua' (shared uint) +0:? 'gs_ub' (shared uint) +0:? 'gs_uc' (shared uint) +0:? 'gs_ua2' (shared 2-component vector of uint) +0:? 'gs_ub2' (shared 2-component vector of uint) +0:? 'gs_uc2' (shared 2-component vector of uint) +0:? 'gs_ua3' (shared 3-component vector of uint) +0:? 'gs_ub3' (shared 3-component vector of uint) +0:? 'gs_uc3' (shared 3-component vector of uint) +0:? 'gs_ua4' (shared 4-component vector of uint) +0:? 'gs_ub4' (shared 4-component vector of uint) +0:? 'gs_uc4' (shared 4-component vector of uint) +0:? 'color' (layout(location=0 ) out 4-component vector of float) Linked fragment stage: @@ -2772,7 +2803,7 @@ Linked fragment stage: 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; (temp float) 0:17 Function Parameters: 0:17 'inF0' (in float) 0:17 'inF1' (in float) @@ -3109,7 +3140,7 @@ gl_FragCoord origin is upper left 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; (temp 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) @@ -3118,7 +3149,7 @@ gl_FragCoord origin is upper left 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; (temp 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) @@ -3503,7 +3534,7 @@ gl_FragCoord origin is upper left 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:258 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (global 3-component vector of float) +0:178 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; (temp 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) @@ -3740,1162 +3771,1170 @@ gl_FragCoord origin is upper left 0:225 'inF1' (in 3-component vector of float) 0:225 'inF2' (in 3-component vector of float) 0:226 Sequence -0:226 move second child to first child (temp float) -0:226 'r043' (temp float) -0:226 length (global float) +0:226 move second child to first child (temp 3-component vector of float) +0:226 'r039b' (temp 3-component vector of float) +0:226 mix (global 3-component vector of float) 0:226 'inF0' (in 3-component vector of float) +0:226 'inF1' (in 3-component vector of float) +0:226 Constant: +0:226 0.300000 0:227 Sequence -0:227 move second child to first child (temp 3-component vector of float) -0:227 'r044' (temp 3-component vector of float) -0:227 log (global 3-component vector of float) +0:227 move second child to first child (temp float) +0:227 'r043' (temp float) +0:227 length (global float) 0:227 'inF0' (in 3-component vector of float) 0:228 Sequence 0:228 move second child to first child (temp 3-component vector of float) -0:228 'r045' (temp 3-component vector of float) -0:228 vector-scale (temp 3-component vector of float) -0:228 log2 (temp 3-component vector of float) -0:228 'inF0' (in 3-component vector of float) -0:228 Constant: -0:228 0.301030 +0:228 'r044' (temp 3-component vector of float) +0:228 log (global 3-component vector of float) +0:228 'inF0' (in 3-component vector of float) 0:229 Sequence 0:229 move second child to first child (temp 3-component vector of float) -0:229 'r046' (temp 3-component vector of float) -0:229 log2 (global 3-component vector of float) -0:229 'inF0' (in 3-component vector of float) +0:229 'r045' (temp 3-component vector of float) +0:229 vector-scale (temp 3-component vector of float) +0:229 log2 (temp 3-component vector of float) +0:229 'inF0' (in 3-component vector of float) +0:229 Constant: +0:229 0.301030 0:230 Sequence 0:230 move second child to first child (temp 3-component vector of float) -0:230 'r047' (temp 3-component vector of float) -0:230 max (global 3-component vector of float) +0:230 'r046' (temp 3-component vector of float) +0:230 log2 (global 3-component vector of float) 0:230 'inF0' (in 3-component vector of float) -0:230 'inF1' (in 3-component vector of float) 0:231 Sequence 0:231 move second child to first child (temp 3-component vector of float) -0:231 'r048' (temp 3-component vector of float) -0:231 min (global 3-component vector of float) +0:231 'r047' (temp 3-component vector of float) +0:231 max (global 3-component vector of float) 0:231 'inF0' (in 3-component vector of float) 0:231 'inF1' (in 3-component vector of float) 0:232 Sequence 0:232 move second child to first child (temp 3-component vector of float) -0:232 'r049' (temp 3-component vector of float) -0:232 normalize (global 3-component vector of float) +0:232 'r048' (temp 3-component vector of float) +0:232 min (global 3-component vector of float) 0:232 'inF0' (in 3-component vector of float) +0:232 'inF1' (in 3-component vector of float) 0:233 Sequence 0:233 move second child to first child (temp 3-component vector of float) -0:233 'r050' (temp 3-component vector of float) -0:233 pow (global 3-component vector of float) +0:233 'r049' (temp 3-component vector of float) +0:233 normalize (global 3-component vector of float) 0:233 'inF0' (in 3-component vector of float) -0:233 'inF1' (in 3-component vector of float) 0:234 Sequence 0:234 move second child to first child (temp 3-component vector of float) -0:234 'r051' (temp 3-component vector of float) -0:234 radians (global 3-component vector of float) +0:234 'r050' (temp 3-component vector of float) +0:234 pow (global 3-component vector of float) 0:234 'inF0' (in 3-component vector of float) +0:234 'inF1' (in 3-component vector of float) 0:235 Sequence 0:235 move second child to first child (temp 3-component vector of float) -0:235 'r052' (temp 3-component vector of float) -0:235 divide (temp 3-component vector of float) -0:235 Constant: -0:235 1.000000 +0:235 'r051' (temp 3-component vector of float) +0:235 radians (global 3-component vector of float) 0:235 'inF0' (in 3-component vector of float) 0:236 Sequence 0:236 move second child to first child (temp 3-component vector of float) -0:236 'r053' (temp 3-component vector of float) -0:236 reflect (global 3-component vector of float) +0:236 'r052' (temp 3-component vector of float) +0:236 divide (temp 3-component vector of float) +0:236 Constant: +0:236 1.000000 0:236 'inF0' (in 3-component vector of float) -0:236 'inF1' (in 3-component vector of float) 0:237 Sequence 0:237 move second child to first child (temp 3-component vector of float) -0:237 'r054' (temp 3-component vector of float) -0:237 refract (global 3-component vector of float) +0:237 'r053' (temp 3-component vector of float) +0:237 reflect (global 3-component vector of float) 0:237 'inF0' (in 3-component vector of float) 0:237 'inF1' (in 3-component vector of float) -0:237 Constant: -0:237 2.000000 0:238 Sequence -0:238 move second child to first child (temp 3-component vector of uint) -0:238 'r055' (temp 3-component vector of uint) +0:238 move second child to first child (temp 3-component vector of float) +0:238 'r054' (temp 3-component vector of float) +0:238 refract (global 3-component vector of float) +0:238 'inF0' (in 3-component vector of float) +0:238 'inF1' (in 3-component vector of float) +0:238 Constant: +0:238 2.000000 +0:239 Sequence +0:239 move second child to first child (temp 3-component vector of uint) +0:239 'r055' (temp 3-component vector of uint) 0:? bitFieldReverse (global 3-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) -0:239 Sequence -0:239 move second child to first child (temp 3-component vector of float) -0:239 'r056' (temp 3-component vector of float) -0:239 roundEven (global 3-component vector of float) -0:239 'inF0' (in 3-component vector of float) 0:240 Sequence 0:240 move second child to first child (temp 3-component vector of float) -0:240 'r057' (temp 3-component vector of float) -0:240 inverse sqrt (global 3-component vector of float) +0:240 'r056' (temp 3-component vector of float) +0:240 roundEven (global 3-component vector of float) 0:240 'inF0' (in 3-component vector of float) 0:241 Sequence 0:241 move second child to first child (temp 3-component vector of float) -0:241 'r058' (temp 3-component vector of float) -0:241 clamp (temp 3-component vector of float) +0:241 'r057' (temp 3-component vector of float) +0:241 inverse sqrt (global 3-component vector of float) 0:241 'inF0' (in 3-component vector of float) -0:241 Constant: -0:241 0.000000 -0:241 Constant: -0:241 1.000000 0:242 Sequence 0:242 move second child to first child (temp 3-component vector of float) -0:242 'r059' (temp 3-component vector of float) -0:242 Sign (global 3-component vector of float) +0:242 'r058' (temp 3-component vector of float) +0:242 clamp (temp 3-component vector of float) 0:242 'inF0' (in 3-component vector of float) +0:242 Constant: +0:242 0.000000 +0:242 Constant: +0:242 1.000000 0:243 Sequence 0:243 move second child to first child (temp 3-component vector of float) -0:243 'r060' (temp 3-component vector of float) -0:243 sine (global 3-component vector of float) +0:243 'r059' (temp 3-component vector of float) +0:243 Sign (global 3-component vector of float) 0:243 'inF0' (in 3-component vector of float) 0:244 Sequence 0:244 move second child to first child (temp 3-component vector of float) -0:244 'inF1' (in 3-component vector of float) -0:244 sine (temp 3-component vector of float) -0:244 'inF0' (in 3-component vector of float) -0:244 move second child to first child (temp 3-component vector of float) -0:244 'inF2' (in 3-component vector of float) -0:244 cosine (temp 3-component vector of float) +0:244 'r060' (temp 3-component vector of float) +0:244 sine (global 3-component vector of float) 0:244 'inF0' (in 3-component vector of float) 0:245 Sequence 0:245 move second child to first child (temp 3-component vector of float) -0:245 'r061' (temp 3-component vector of float) -0:245 hyp. sine (global 3-component vector of float) +0:245 'inF1' (in 3-component vector of float) +0:245 sine (temp 3-component vector of float) +0:245 'inF0' (in 3-component vector of float) +0:245 move second child to first child (temp 3-component vector of float) +0:245 'inF2' (in 3-component vector of float) +0:245 cosine (temp 3-component vector of float) 0:245 'inF0' (in 3-component vector of float) 0:246 Sequence 0:246 move second child to first child (temp 3-component vector of float) -0:246 'r062' (temp 3-component vector of float) -0:246 smoothstep (global 3-component vector of float) +0:246 'r061' (temp 3-component vector of float) +0:246 hyp. sine (global 3-component vector of float) 0:246 'inF0' (in 3-component vector of float) -0:246 'inF1' (in 3-component vector of float) -0:246 'inF2' (in 3-component vector of float) 0:247 Sequence 0:247 move second child to first child (temp 3-component vector of float) -0:247 'r063' (temp 3-component vector of float) -0:247 sqrt (global 3-component vector of float) +0:247 'r062' (temp 3-component vector of float) +0:247 smoothstep (global 3-component vector of float) 0:247 'inF0' (in 3-component vector of float) +0:247 'inF1' (in 3-component vector of float) +0:247 'inF2' (in 3-component vector of float) 0:248 Sequence 0:248 move second child to first child (temp 3-component vector of float) -0:248 'r064' (temp 3-component vector of float) -0:248 step (global 3-component vector of float) +0:248 'r063' (temp 3-component vector of float) +0:248 sqrt (global 3-component vector of float) 0:248 'inF0' (in 3-component vector of float) -0:248 'inF1' (in 3-component vector of float) 0:249 Sequence 0:249 move second child to first child (temp 3-component vector of float) -0:249 'r065' (temp 3-component vector of float) -0:249 tangent (global 3-component vector of float) +0:249 'r064' (temp 3-component vector of float) +0:249 step (global 3-component vector of float) 0:249 'inF0' (in 3-component vector of float) +0:249 'inF1' (in 3-component vector of float) 0:250 Sequence 0:250 move second child to first child (temp 3-component vector of float) -0:250 'r066' (temp 3-component vector of float) -0:250 hyp. tangent (global 3-component vector of float) +0:250 'r065' (temp 3-component vector of float) +0:250 tangent (global 3-component vector of float) 0:250 'inF0' (in 3-component vector of float) -0:252 Sequence -0:252 move second child to first child (temp 3-component vector of float) -0:252 'r067' (temp 3-component vector of float) -0:252 trunc (global 3-component vector of float) -0:252 'inF0' (in 3-component vector of float) -0:255 Branch: Return with expression +0:251 Sequence +0:251 move second child to first child (temp 3-component vector of float) +0:251 'r066' (temp 3-component vector of float) +0:251 hyp. tangent (global 3-component vector of float) +0:251 'inF0' (in 3-component vector of float) +0:253 Sequence +0:253 move second child to first child (temp 3-component vector of float) +0:253 'r067' (temp 3-component vector of float) +0:253 trunc (global 3-component vector of float) +0:253 'inF0' (in 3-component vector of float) +0:256 Branch: Return with expression 0:? Constant: 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:399 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (global 4-component vector of float) -0:259 Function Parameters: -0:259 'inF0' (in 4-component vector of float) -0:259 'inF1' (in 4-component vector of float) -0:259 'inF2' (in 4-component vector of float) -0:259 'inU0' (in 4-component vector of uint) -0:259 'inU1' (in 4-component vector of uint) +0:260 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; (temp 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) +0:260 'inF2' (in 4-component vector of float) +0:260 'inU0' (in 4-component vector of uint) +0:260 'inU1' (in 4-component vector of uint) 0:? Sequence -0:262 Sequence -0:262 move second child to first child (temp bool) -0:262 'r000' (temp bool) -0:262 all (global bool) -0:262 'inF0' (in 4-component vector of float) 0:263 Sequence -0:263 move second child to first child (temp 4-component vector of float) -0:263 'r001' (temp 4-component vector of float) -0:263 Absolute value (global 4-component vector of float) +0:263 move second child to first child (temp bool) +0:263 'r000' (temp bool) +0:263 all (global bool) 0:263 'inF0' (in 4-component vector of float) 0:264 Sequence 0:264 move second child to first child (temp 4-component vector of float) -0:264 'r002' (temp 4-component vector of float) -0:264 arc cosine (global 4-component vector of float) +0:264 'r001' (temp 4-component vector of float) +0:264 Absolute value (global 4-component vector of float) 0:264 'inF0' (in 4-component vector of float) 0:265 Sequence -0:265 move second child to first child (temp bool) -0:265 'r003' (temp bool) -0:265 any (global bool) +0:265 move second child to first child (temp 4-component vector of float) +0:265 'r002' (temp 4-component vector of float) +0:265 arc cosine (global 4-component vector of float) 0:265 'inF0' (in 4-component vector of float) 0:266 Sequence -0:266 move second child to first child (temp 4-component vector of float) -0:266 'r004' (temp 4-component vector of float) -0:266 arc sine (global 4-component vector of float) +0:266 move second child to first child (temp bool) +0:266 'r003' (temp bool) +0:266 any (global bool) 0:266 'inF0' (in 4-component vector of float) 0:267 Sequence -0:267 move second child to first child (temp 4-component vector of int) -0:267 'r005' (temp 4-component vector of int) -0:267 floatBitsToInt (global 4-component vector of int) +0:267 move second child to first child (temp 4-component vector of float) +0:267 'r004' (temp 4-component vector of float) +0:267 arc sine (global 4-component vector of float) 0:267 'inF0' (in 4-component vector of float) 0:268 Sequence -0:268 move second child to first child (temp 4-component vector of uint) -0:268 'r006' (temp 4-component vector of uint) -0:268 floatBitsToUint (global 4-component vector of uint) +0:268 move second child to first child (temp 4-component vector of int) +0:268 'r005' (temp 4-component vector of int) +0:268 floatBitsToInt (global 4-component vector of int) 0:268 'inF0' (in 4-component vector of float) 0:269 Sequence -0:269 move second child to first child (temp 4-component vector of float) -0:269 'r007' (temp 4-component vector of float) -0:269 intBitsToFloat (global 4-component vector of float) -0:269 'inU0' (in 4-component vector of uint) -0:271 Sequence -0:271 move second child to first child (temp 4-component vector of float) -0:271 'r009' (temp 4-component vector of float) -0:271 arc tangent (global 4-component vector of float) -0:271 'inF0' (in 4-component vector of float) +0:269 move second child to first child (temp 4-component vector of uint) +0:269 'r006' (temp 4-component vector of uint) +0:269 floatBitsToUint (global 4-component vector of uint) +0:269 'inF0' (in 4-component vector of float) +0:270 Sequence +0:270 move second child to first child (temp 4-component vector of float) +0:270 'r007' (temp 4-component vector of float) +0:270 intBitsToFloat (global 4-component vector of float) +0:270 'inU0' (in 4-component vector of uint) 0:272 Sequence 0:272 move second child to first child (temp 4-component vector of float) -0:272 'r010' (temp 4-component vector of float) +0:272 'r009' (temp 4-component vector of float) 0:272 arc tangent (global 4-component vector of float) 0:272 'inF0' (in 4-component vector of float) -0:272 'inF1' (in 4-component vector of float) 0:273 Sequence 0:273 move second child to first child (temp 4-component vector of float) -0:273 'r011' (temp 4-component vector of float) -0:273 Ceiling (global 4-component vector of float) +0:273 'r010' (temp 4-component vector of float) +0:273 arc tangent (global 4-component vector of float) 0:273 'inF0' (in 4-component vector of float) +0:273 'inF1' (in 4-component vector of float) 0:274 Sequence 0:274 move second child to first child (temp 4-component vector of float) -0:274 'r012' (temp 4-component vector of float) -0:274 clamp (global 4-component vector of float) +0:274 'r011' (temp 4-component vector of float) +0:274 Ceiling (global 4-component vector of float) 0:274 'inF0' (in 4-component vector of float) -0:274 'inF1' (in 4-component vector of float) -0:274 'inF2' (in 4-component vector of float) -0:275 Test condition and select (temp void) -0:275 Condition -0:275 any (temp bool) -0:275 Compare Less Than (temp 4-component vector of bool) +0:275 Sequence +0:275 move second child to first child (temp 4-component vector of float) +0:275 'r012' (temp 4-component vector of float) +0:275 clamp (global 4-component vector of float) 0:275 'inF0' (in 4-component vector of float) -0:275 Constant: -0:275 0.000000 -0:275 0.000000 -0:275 0.000000 -0:275 0.000000 -0:275 true case -0:275 Branch: Kill -0:276 Sequence -0:276 move second child to first child (temp 4-component vector of float) -0:276 'r013' (temp 4-component vector of float) -0:276 cosine (global 4-component vector of float) +0:275 'inF1' (in 4-component vector of float) +0:275 'inF2' (in 4-component vector of float) +0:276 Test condition and select (temp void) +0:276 Condition +0:276 any (temp bool) +0:276 Compare Less Than (temp 4-component vector of bool) 0:276 'inF0' (in 4-component vector of float) +0:276 Constant: +0:276 0.000000 +0:276 0.000000 +0:276 0.000000 +0:276 0.000000 +0:276 true case +0:276 Branch: Kill 0:277 Sequence 0:277 move second child to first child (temp 4-component vector of float) -0:277 'r014' (temp 4-component vector of float) -0:277 hyp. cosine (global 4-component vector of float) +0:277 'r013' (temp 4-component vector of float) +0:277 cosine (global 4-component vector of float) 0:277 'inF0' (in 4-component vector of float) 0:278 Sequence -0:278 move second child to first child (temp 4-component vector of uint) -0:278 'r015' (temp 4-component vector of uint) +0:278 move second child to first child (temp 4-component vector of float) +0:278 'r014' (temp 4-component vector of float) +0:278 hyp. cosine (global 4-component vector of float) +0:278 'inF0' (in 4-component vector of float) +0:279 Sequence +0:279 move second child to first child (temp 4-component vector of uint) +0:279 'r015' (temp 4-component vector of uint) 0:? bitCount (global 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:? 5 (const uint) 0:? 2 (const uint) -0:279 Sequence -0:279 move second child to first child (temp 4-component vector of float) -0:279 'r016' (temp 4-component vector of float) -0:279 dPdx (global 4-component vector of float) -0:279 'inF0' (in 4-component vector of float) 0:280 Sequence 0:280 move second child to first child (temp 4-component vector of float) -0:280 'r017' (temp 4-component vector of float) -0:280 dPdxCoarse (global 4-component vector of float) +0:280 'r016' (temp 4-component vector of float) +0:280 dPdx (global 4-component vector of float) 0:280 'inF0' (in 4-component vector of float) 0:281 Sequence 0:281 move second child to first child (temp 4-component vector of float) -0:281 'r018' (temp 4-component vector of float) -0:281 dPdxFine (global 4-component vector of float) +0:281 'r017' (temp 4-component vector of float) +0:281 dPdxCoarse (global 4-component vector of float) 0:281 'inF0' (in 4-component vector of float) 0:282 Sequence 0:282 move second child to first child (temp 4-component vector of float) -0:282 'r019' (temp 4-component vector of float) -0:282 dPdy (global 4-component vector of float) +0:282 'r018' (temp 4-component vector of float) +0:282 dPdxFine (global 4-component vector of float) 0:282 'inF0' (in 4-component vector of float) 0:283 Sequence 0:283 move second child to first child (temp 4-component vector of float) -0:283 'r020' (temp 4-component vector of float) -0:283 dPdyCoarse (global 4-component vector of float) +0:283 'r019' (temp 4-component vector of float) +0:283 dPdy (global 4-component vector of float) 0:283 'inF0' (in 4-component vector of float) 0:284 Sequence 0:284 move second child to first child (temp 4-component vector of float) -0:284 'r021' (temp 4-component vector of float) -0:284 dPdyFine (global 4-component vector of float) +0:284 'r020' (temp 4-component vector of float) +0:284 dPdyCoarse (global 4-component vector of float) 0:284 'inF0' (in 4-component vector of float) 0:285 Sequence 0:285 move second child to first child (temp 4-component vector of float) -0:285 'r022' (temp 4-component vector of float) -0:285 degrees (global 4-component vector of float) +0:285 'r021' (temp 4-component vector of float) +0:285 dPdyFine (global 4-component vector of float) 0:285 'inF0' (in 4-component vector of float) 0:286 Sequence -0:286 move second child to first child (temp float) -0:286 'r023' (temp float) -0:286 distance (global float) +0:286 move second child to first child (temp 4-component vector of float) +0:286 'r022' (temp 4-component vector of float) +0:286 degrees (global 4-component vector of float) 0:286 'inF0' (in 4-component vector of float) -0:286 'inF1' (in 4-component vector of float) 0:287 Sequence 0:287 move second child to first child (temp float) -0:287 'r024' (temp float) -0:287 dot-product (global float) +0:287 'r023' (temp float) +0:287 distance (global float) 0:287 'inF0' (in 4-component vector of float) 0:287 'inF1' (in 4-component vector of float) 0:288 Sequence -0:288 move second child to first child (temp 4-component vector of float) -0:288 'r025' (temp 4-component vector of float) -0:288 Construct vec4 (temp 4-component vector of float) -0:288 Constant: -0:288 1.000000 -0:288 component-wise multiply (temp float) -0:288 direct index (temp float) -0:288 'inF0' (in 4-component vector of float) -0:288 Constant: -0:288 1 (const int) -0:288 direct index (temp float) -0:288 'inF1' (in 4-component vector of float) -0:288 Constant: -0:288 1 (const int) -0:288 direct index (temp float) -0:288 'inF0' (in 4-component vector of float) -0:288 Constant: -0:288 2 (const int) -0:288 direct index (temp float) -0:288 'inF1' (in 4-component vector of float) -0:288 Constant: -0:288 3 (const int) -0:292 Sequence -0:292 move second child to first child (temp 4-component vector of float) -0:292 'r029' (temp 4-component vector of float) -0:292 exp (global 4-component vector of float) -0:292 'inF0' (in 4-component vector of float) +0:288 move second child to first child (temp float) +0:288 'r024' (temp float) +0:288 dot-product (global float) +0:288 'inF0' (in 4-component vector of float) +0:288 'inF1' (in 4-component vector of float) +0:289 Sequence +0:289 move second child to first child (temp 4-component vector of float) +0:289 'r025' (temp 4-component vector of float) +0:289 Construct vec4 (temp 4-component vector of float) +0:289 Constant: +0:289 1.000000 +0:289 component-wise multiply (temp float) +0:289 direct index (temp float) +0:289 'inF0' (in 4-component vector of float) +0:289 Constant: +0:289 1 (const int) +0:289 direct index (temp float) +0:289 'inF1' (in 4-component vector of float) +0:289 Constant: +0:289 1 (const int) +0:289 direct index (temp float) +0:289 'inF0' (in 4-component vector of float) +0:289 Constant: +0:289 2 (const int) +0:289 direct index (temp float) +0:289 'inF1' (in 4-component vector of float) +0:289 Constant: +0:289 3 (const int) 0:293 Sequence 0:293 move second child to first child (temp 4-component vector of float) -0:293 'r030' (temp 4-component vector of float) -0:293 exp2 (global 4-component vector of float) +0:293 'r029' (temp 4-component vector of float) +0:293 exp (global 4-component vector of float) 0:293 'inF0' (in 4-component vector of float) 0:294 Sequence 0:294 move second child to first child (temp 4-component vector of float) -0:294 'r031' (temp 4-component vector of float) -0:294 face-forward (global 4-component vector of float) +0:294 'r030' (temp 4-component vector of float) +0:294 exp2 (global 4-component vector of float) 0:294 'inF0' (in 4-component vector of float) -0:294 'inF1' (in 4-component vector of float) -0:294 'inF2' (in 4-component vector of float) 0:295 Sequence -0:295 move second child to first child (temp 4-component vector of uint) -0:295 'r032' (temp 4-component vector of uint) +0:295 move second child to first child (temp 4-component vector of float) +0:295 'r031' (temp 4-component vector of float) +0:295 face-forward (global 4-component vector of float) +0:295 'inF0' (in 4-component vector of float) +0:295 'inF1' (in 4-component vector of float) +0:295 'inF2' (in 4-component vector of float) +0:296 Sequence +0:296 move second child to first child (temp 4-component vector of uint) +0:296 'r032' (temp 4-component vector of uint) 0:? findMSB (global 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:? 9 (const uint) 0:? 10 (const uint) -0:296 Sequence -0:296 move second child to first child (temp 4-component vector of uint) -0:296 'r033' (temp 4-component vector of uint) +0:297 Sequence +0:297 move second child to first child (temp 4-component vector of uint) +0:297 'r033' (temp 4-component vector of uint) 0:? findLSB (global 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:? 9 (const uint) 0:? 10 (const uint) -0:297 Sequence -0:297 move second child to first child (temp 4-component vector of float) -0:297 'r034' (temp 4-component vector of float) -0:297 Floor (global 4-component vector of float) -0:297 'inF0' (in 4-component vector of float) -0:299 Sequence -0:299 move second child to first child (temp 4-component vector of float) -0:299 'r036' (temp 4-component vector of float) -0:299 mod (global 4-component vector of float) -0:299 'inF0' (in 4-component vector of float) -0:299 'inF1' (in 4-component vector of float) +0:298 Sequence +0:298 move second child to first child (temp 4-component vector of float) +0:298 'r034' (temp 4-component vector of float) +0:298 Floor (global 4-component vector of float) +0:298 'inF0' (in 4-component vector of float) 0:300 Sequence 0:300 move second child to first child (temp 4-component vector of float) -0:300 'r037' (temp 4-component vector of float) -0:300 Fraction (global 4-component vector of float) +0:300 'r036' (temp 4-component vector of float) +0:300 mod (global 4-component vector of float) 0:300 'inF0' (in 4-component vector of float) +0:300 'inF1' (in 4-component vector of float) 0:301 Sequence 0:301 move second child to first child (temp 4-component vector of float) -0:301 'r038' (temp 4-component vector of float) -0:301 frexp (global 4-component vector of float) +0:301 'r037' (temp 4-component vector of float) +0:301 Fraction (global 4-component vector of float) 0:301 'inF0' (in 4-component vector of float) -0:301 'inF1' (in 4-component vector of float) 0:302 Sequence 0:302 move second child to first child (temp 4-component vector of float) -0:302 'r039' (temp 4-component vector of float) -0:302 fwidth (global 4-component vector of float) +0:302 'r038' (temp 4-component vector of float) +0:302 frexp (global 4-component vector of float) 0:302 'inF0' (in 4-component vector of float) +0:302 'inF1' (in 4-component vector of float) 0:303 Sequence -0:303 move second child to first child (temp 4-component vector of bool) -0:303 'r040' (temp 4-component vector of bool) -0:303 isinf (global 4-component vector of bool) +0:303 move second child to first child (temp 4-component vector of float) +0:303 'r039' (temp 4-component vector of float) +0:303 fwidth (global 4-component vector of float) 0:303 'inF0' (in 4-component vector of float) 0:304 Sequence 0:304 move second child to first child (temp 4-component vector of bool) -0:304 'r041' (temp 4-component vector of bool) -0:304 isnan (global 4-component vector of bool) +0:304 'r040' (temp 4-component vector of bool) +0:304 isinf (global 4-component vector of bool) 0:304 'inF0' (in 4-component vector of float) 0:305 Sequence -0:305 move second child to first child (temp 4-component vector of float) -0:305 'r042' (temp 4-component vector of float) -0:305 ldexp (global 4-component vector of float) +0:305 move second child to first child (temp 4-component vector of bool) +0:305 'r041' (temp 4-component vector of bool) +0:305 isnan (global 4-component vector of bool) 0:305 'inF0' (in 4-component vector of float) -0:305 'inF1' (in 4-component vector of float) 0:306 Sequence 0:306 move second child to first child (temp 4-component vector of float) -0:306 'r039a' (temp 4-component vector of float) -0:306 mix (global 4-component vector of float) +0:306 'r042' (temp 4-component vector of float) +0:306 ldexp (global 4-component vector of float) 0:306 'inF0' (in 4-component vector of float) 0:306 'inF1' (in 4-component vector of float) -0:306 'inF2' (in 4-component vector of float) 0:307 Sequence -0:307 move second child to first child (temp float) -0:307 'r043' (temp float) -0:307 length (global float) +0:307 move second child to first child (temp 4-component vector of float) +0:307 'r039a' (temp 4-component vector of float) +0:307 mix (global 4-component vector of float) 0:307 'inF0' (in 4-component vector of float) +0:307 'inF1' (in 4-component vector of float) +0:307 'inF2' (in 4-component vector of float) 0:308 Sequence -0:308 move second child to first child (temp 4-component vector of float) -0:308 'r044' (temp 4-component vector of float) -0:308 log (global 4-component vector of float) +0:308 move second child to first child (temp float) +0:308 'r043' (temp float) +0:308 length (global float) 0:308 'inF0' (in 4-component vector of float) 0:309 Sequence 0:309 move second child to first child (temp 4-component vector of float) -0:309 'r045' (temp 4-component vector of float) -0:309 vector-scale (temp 4-component vector of float) -0:309 log2 (temp 4-component vector of float) -0:309 'inF0' (in 4-component vector of float) -0:309 Constant: -0:309 0.301030 +0:309 'r044' (temp 4-component vector of float) +0:309 log (global 4-component vector of float) +0:309 'inF0' (in 4-component vector of float) 0:310 Sequence 0:310 move second child to first child (temp 4-component vector of float) -0:310 'r046' (temp 4-component vector of float) -0:310 log2 (global 4-component vector of float) -0:310 'inF0' (in 4-component vector of float) +0:310 'r045' (temp 4-component vector of float) +0:310 vector-scale (temp 4-component vector of float) +0:310 log2 (temp 4-component vector of float) +0:310 'inF0' (in 4-component vector of float) +0:310 Constant: +0:310 0.301030 0:311 Sequence 0:311 move second child to first child (temp 4-component vector of float) -0:311 'r047' (temp 4-component vector of float) -0:311 max (global 4-component vector of float) +0:311 'r046' (temp 4-component vector of float) +0:311 log2 (global 4-component vector of float) 0:311 'inF0' (in 4-component vector of float) -0:311 'inF1' (in 4-component vector of float) 0:312 Sequence 0:312 move second child to first child (temp 4-component vector of float) -0:312 'r048' (temp 4-component vector of float) -0:312 min (global 4-component vector of float) +0:312 'r047' (temp 4-component vector of float) +0:312 max (global 4-component vector of float) 0:312 'inF0' (in 4-component vector of float) 0:312 'inF1' (in 4-component vector of float) 0:313 Sequence 0:313 move second child to first child (temp 4-component vector of float) -0:313 'r049' (temp 4-component vector of float) -0:313 normalize (global 4-component vector of float) +0:313 'r048' (temp 4-component vector of float) +0:313 min (global 4-component vector of float) 0:313 'inF0' (in 4-component vector of float) +0:313 'inF1' (in 4-component vector of float) 0:314 Sequence 0:314 move second child to first child (temp 4-component vector of float) -0:314 'r050' (temp 4-component vector of float) -0:314 pow (global 4-component vector of float) +0:314 'r049' (temp 4-component vector of float) +0:314 normalize (global 4-component vector of float) 0:314 'inF0' (in 4-component vector of float) -0:314 'inF1' (in 4-component vector of float) 0:315 Sequence 0:315 move second child to first child (temp 4-component vector of float) -0:315 'r051' (temp 4-component vector of float) -0:315 radians (global 4-component vector of float) +0:315 'r050' (temp 4-component vector of float) +0:315 pow (global 4-component vector of float) 0:315 'inF0' (in 4-component vector of float) +0:315 'inF1' (in 4-component vector of float) 0:316 Sequence 0:316 move second child to first child (temp 4-component vector of float) -0:316 'r052' (temp 4-component vector of float) -0:316 divide (temp 4-component vector of float) -0:316 Constant: -0:316 1.000000 +0:316 'r051' (temp 4-component vector of float) +0:316 radians (global 4-component vector of float) 0:316 'inF0' (in 4-component vector of float) 0:317 Sequence 0:317 move second child to first child (temp 4-component vector of float) -0:317 'r053' (temp 4-component vector of float) -0:317 reflect (global 4-component vector of float) +0:317 'r052' (temp 4-component vector of float) +0:317 divide (temp 4-component vector of float) +0:317 Constant: +0:317 1.000000 0:317 'inF0' (in 4-component vector of float) -0:317 'inF1' (in 4-component vector of float) 0:318 Sequence 0:318 move second child to first child (temp 4-component vector of float) -0:318 'r054' (temp 4-component vector of float) -0:318 refract (global 4-component vector of float) +0:318 'r053' (temp 4-component vector of float) +0:318 reflect (global 4-component vector of float) 0:318 'inF0' (in 4-component vector of float) 0:318 'inF1' (in 4-component vector of float) -0:318 Constant: -0:318 2.000000 0:319 Sequence -0:319 move second child to first child (temp 4-component vector of uint) -0:319 'r055' (temp 4-component vector of uint) +0:319 move second child to first child (temp 4-component vector of float) +0:319 'r054' (temp 4-component vector of float) +0:319 refract (global 4-component vector of float) +0:319 'inF0' (in 4-component vector of float) +0:319 'inF1' (in 4-component vector of float) +0:319 Constant: +0:319 2.000000 +0:320 Sequence +0:320 move second child to first child (temp 4-component vector of uint) +0:320 'r055' (temp 4-component vector of uint) 0:? bitFieldReverse (global 4-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) 0:? 4 (const uint) -0:320 Sequence -0:320 move second child to first child (temp 4-component vector of float) -0:320 'r056' (temp 4-component vector of float) -0:320 roundEven (global 4-component vector of float) -0:320 'inF0' (in 4-component vector of float) 0:321 Sequence 0:321 move second child to first child (temp 4-component vector of float) -0:321 'r057' (temp 4-component vector of float) -0:321 inverse sqrt (global 4-component vector of float) +0:321 'r056' (temp 4-component vector of float) +0:321 roundEven (global 4-component vector of float) 0:321 'inF0' (in 4-component vector of float) 0:322 Sequence 0:322 move second child to first child (temp 4-component vector of float) -0:322 'r058' (temp 4-component vector of float) -0:322 clamp (temp 4-component vector of float) +0:322 'r057' (temp 4-component vector of float) +0:322 inverse sqrt (global 4-component vector of float) 0:322 'inF0' (in 4-component vector of float) -0:322 Constant: -0:322 0.000000 -0:322 Constant: -0:322 1.000000 0:323 Sequence 0:323 move second child to first child (temp 4-component vector of float) -0:323 'r059' (temp 4-component vector of float) -0:323 Sign (global 4-component vector of float) +0:323 'r058' (temp 4-component vector of float) +0:323 clamp (temp 4-component vector of float) 0:323 'inF0' (in 4-component vector of float) +0:323 Constant: +0:323 0.000000 +0:323 Constant: +0:323 1.000000 0:324 Sequence 0:324 move second child to first child (temp 4-component vector of float) -0:324 'r060' (temp 4-component vector of float) -0:324 sine (global 4-component vector of float) +0:324 'r059' (temp 4-component vector of float) +0:324 Sign (global 4-component vector of float) 0:324 'inF0' (in 4-component vector of float) 0:325 Sequence 0:325 move second child to first child (temp 4-component vector of float) -0:325 'inF1' (in 4-component vector of float) -0:325 sine (temp 4-component vector of float) -0:325 'inF0' (in 4-component vector of float) -0:325 move second child to first child (temp 4-component vector of float) -0:325 'inF2' (in 4-component vector of float) -0:325 cosine (temp 4-component vector of float) +0:325 'r060' (temp 4-component vector of float) +0:325 sine (global 4-component vector of float) 0:325 'inF0' (in 4-component vector of float) 0:326 Sequence 0:326 move second child to first child (temp 4-component vector of float) -0:326 'r061' (temp 4-component vector of float) -0:326 hyp. sine (global 4-component vector of float) +0:326 'inF1' (in 4-component vector of float) +0:326 sine (temp 4-component vector of float) +0:326 'inF0' (in 4-component vector of float) +0:326 move second child to first child (temp 4-component vector of float) +0:326 'inF2' (in 4-component vector of float) +0:326 cosine (temp 4-component vector of float) 0:326 'inF0' (in 4-component vector of float) 0:327 Sequence 0:327 move second child to first child (temp 4-component vector of float) -0:327 'r062' (temp 4-component vector of float) -0:327 smoothstep (global 4-component vector of float) +0:327 'r061' (temp 4-component vector of float) +0:327 hyp. sine (global 4-component vector of float) 0:327 'inF0' (in 4-component vector of float) -0:327 'inF1' (in 4-component vector of float) -0:327 'inF2' (in 4-component vector of float) 0:328 Sequence 0:328 move second child to first child (temp 4-component vector of float) -0:328 'r063' (temp 4-component vector of float) -0:328 sqrt (global 4-component vector of float) +0:328 'r062' (temp 4-component vector of float) +0:328 smoothstep (global 4-component vector of float) 0:328 'inF0' (in 4-component vector of float) +0:328 'inF1' (in 4-component vector of float) +0:328 'inF2' (in 4-component vector of float) 0:329 Sequence 0:329 move second child to first child (temp 4-component vector of float) -0:329 'r064' (temp 4-component vector of float) -0:329 step (global 4-component vector of float) +0:329 'r063' (temp 4-component vector of float) +0:329 sqrt (global 4-component vector of float) 0:329 'inF0' (in 4-component vector of float) -0:329 'inF1' (in 4-component vector of float) 0:330 Sequence 0:330 move second child to first child (temp 4-component vector of float) -0:330 'r065' (temp 4-component vector of float) -0:330 tangent (global 4-component vector of float) +0:330 'r064' (temp 4-component vector of float) +0:330 step (global 4-component vector of float) 0:330 'inF0' (in 4-component vector of float) +0:330 'inF1' (in 4-component vector of float) 0:331 Sequence 0:331 move second child to first child (temp 4-component vector of float) -0:331 'r066' (temp 4-component vector of float) -0:331 hyp. tangent (global 4-component vector of float) +0:331 'r065' (temp 4-component vector of float) +0:331 tangent (global 4-component vector of float) 0:331 'inF0' (in 4-component vector of float) -0:333 Sequence -0:333 move second child to first child (temp 4-component vector of float) -0:333 'r067' (temp 4-component vector of float) -0:333 trunc (global 4-component vector of float) -0:333 'inF0' (in 4-component vector of float) -0:336 Branch: Return with expression +0:332 Sequence +0:332 move second child to first child (temp 4-component vector of float) +0:332 'r066' (temp 4-component vector of float) +0:332 hyp. tangent (global 4-component vector of float) +0:332 'inF0' (in 4-component vector of float) +0:334 Sequence +0:334 move second child to first child (temp 4-component vector of float) +0:334 'r067' (temp 4-component vector of float) +0:334 trunc (global 4-component vector of float) +0:334 'inF0' (in 4-component vector of float) +0:337 Branch: Return with expression 0:? Constant: 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 -0:408 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float) -0:400 Function Parameters: -0:400 'inF0' (in 2X2 matrix of float) -0:400 'inF1' (in 2X2 matrix of float) -0:400 'inF2' (in 2X2 matrix of float) +0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; (temp 2X2 matrix of float) +0:401 Function Parameters: +0:401 'inF0' (in 2X2 matrix of float) +0:401 'inF1' (in 2X2 matrix of float) +0:401 'inF2' (in 2X2 matrix of float) 0:? Sequence -0:402 Sequence -0:402 move second child to first child (temp bool) -0:402 'r000' (temp bool) -0:402 all (global bool) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r001' (temp 2X2 matrix of float) -0:402 Absolute value (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 arc cosine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp bool) -0:402 'r003' (temp bool) -0:402 any (global bool) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r004' (temp 2X2 matrix of float) -0:402 arc sine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r005' (temp 2X2 matrix of float) -0:402 arc tangent (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r006' (temp 2X2 matrix of float) -0:402 arc tangent (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r007' (temp 2X2 matrix of float) -0:402 Ceiling (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Test condition and select (temp void) -0:402 Condition -0:402 any (temp bool) -0:402 Compare Less Than (temp 2X2 matrix of bool) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Constant: -0:402 0.000000 -0:402 0.000000 -0:402 0.000000 -0:402 0.000000 -0:402 true case -0:402 Branch: Kill -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r008' (temp 2X2 matrix of float) -0:402 clamp (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 'inF2' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r009' (temp 2X2 matrix of float) -0:402 cosine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r010' (temp 2X2 matrix of float) -0:402 hyp. cosine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r011' (temp 2X2 matrix of float) -0:402 dPdx (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r012' (temp 2X2 matrix of float) -0:402 dPdxCoarse (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r013' (temp 2X2 matrix of float) -0:402 dPdxFine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r014' (temp 2X2 matrix of float) -0:402 dPdy (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r015' (temp 2X2 matrix of float) -0:402 dPdyCoarse (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r016' (temp 2X2 matrix of float) -0:402 dPdyFine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r017' (temp 2X2 matrix of float) -0:402 degrees (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp float) -0:402 'r018' (temp float) -0:402 determinant (global float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r019' (temp 2X2 matrix of float) -0:402 exp (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'R020' (temp 2X2 matrix of float) -0:402 exp2 (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r021' (temp 2X2 matrix of float) -0:402 Floor (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r022' (temp 2X2 matrix of float) -0:402 mod (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r023' (temp 2X2 matrix of float) -0:402 Fraction (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r024' (temp 2X2 matrix of float) -0:402 frexp (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r025' (temp 2X2 matrix of float) -0:402 fwidth (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r026' (temp 2X2 matrix of float) -0:402 ldexp (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r026a' (temp 2X2 matrix of float) -0:402 mix (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 'inF2' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r027' (temp 2X2 matrix of float) -0:402 log (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r028' (temp 2X2 matrix of float) -0:402 matrix-scale (temp 2X2 matrix of float) -0:402 log2 (temp 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Constant: -0:402 0.301030 -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r029' (temp 2X2 matrix of float) -0:402 log2 (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r030' (temp 2X2 matrix of float) -0:402 max (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r031' (temp 2X2 matrix of float) -0:402 min (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r032' (temp 2X2 matrix of float) -0:402 pow (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r033' (temp 2X2 matrix of float) -0:402 radians (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r034' (temp 2X2 matrix of float) -0:402 roundEven (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r035' (temp 2X2 matrix of float) -0:402 inverse sqrt (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r036' (temp 2X2 matrix of float) -0:402 clamp (temp 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Constant: -0:402 0.000000 -0:402 Constant: -0:402 1.000000 -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r037' (temp 2X2 matrix of float) -0:402 Sign (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r038' (temp 2X2 matrix of float) -0:402 sine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 sine (temp 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'inF2' (in 2X2 matrix of float) -0:402 cosine (temp 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r039' (temp 2X2 matrix of float) -0:402 hyp. sine (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r049' (temp 2X2 matrix of float) -0:402 smoothstep (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 'inF2' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r041' (temp 2X2 matrix of float) -0:402 sqrt (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r042' (temp 2X2 matrix of float) -0:402 step (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 'inF1' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r043' (temp 2X2 matrix of float) -0:402 tangent (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r044' (temp 2X2 matrix of float) -0:402 hyp. tangent (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 transpose (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:402 Sequence -0:402 move second child to first child (temp 2X2 matrix of float) -0:402 'r046' (temp 2X2 matrix of float) -0:402 trunc (global 2X2 matrix of float) -0:402 'inF0' (in 2X2 matrix of float) -0:405 Branch: Return with expression +0:403 Sequence +0:403 move second child to first child (temp bool) +0:403 'r000' (temp bool) +0:403 all (global bool) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r001' (temp 2X2 matrix of float) +0:403 Absolute value (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 arc cosine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp bool) +0:403 'r003' (temp bool) +0:403 any (global bool) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r004' (temp 2X2 matrix of float) +0:403 arc sine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r005' (temp 2X2 matrix of float) +0:403 arc tangent (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r006' (temp 2X2 matrix of float) +0:403 arc tangent (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r007' (temp 2X2 matrix of float) +0:403 Ceiling (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Test condition and select (temp void) +0:403 Condition +0:403 any (temp bool) +0:403 Compare Less Than (temp 2X2 matrix of bool) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Constant: +0:403 0.000000 +0:403 0.000000 +0:403 0.000000 +0:403 0.000000 +0:403 true case +0:403 Branch: Kill +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r008' (temp 2X2 matrix of float) +0:403 clamp (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 'inF2' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r009' (temp 2X2 matrix of float) +0:403 cosine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r010' (temp 2X2 matrix of float) +0:403 hyp. cosine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r011' (temp 2X2 matrix of float) +0:403 dPdx (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r012' (temp 2X2 matrix of float) +0:403 dPdxCoarse (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r013' (temp 2X2 matrix of float) +0:403 dPdxFine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r014' (temp 2X2 matrix of float) +0:403 dPdy (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r015' (temp 2X2 matrix of float) +0:403 dPdyCoarse (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r016' (temp 2X2 matrix of float) +0:403 dPdyFine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r017' (temp 2X2 matrix of float) +0:403 degrees (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp float) +0:403 'r018' (temp float) +0:403 determinant (global float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r019' (temp 2X2 matrix of float) +0:403 exp (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'R020' (temp 2X2 matrix of float) +0:403 exp2 (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r021' (temp 2X2 matrix of float) +0:403 Floor (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r022' (temp 2X2 matrix of float) +0:403 mod (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r023' (temp 2X2 matrix of float) +0:403 Fraction (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r024' (temp 2X2 matrix of float) +0:403 frexp (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r025' (temp 2X2 matrix of float) +0:403 fwidth (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r026' (temp 2X2 matrix of float) +0:403 ldexp (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r026a' (temp 2X2 matrix of float) +0:403 mix (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 'inF2' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r027' (temp 2X2 matrix of float) +0:403 log (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r028' (temp 2X2 matrix of float) +0:403 matrix-scale (temp 2X2 matrix of float) +0:403 log2 (temp 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Constant: +0:403 0.301030 +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r029' (temp 2X2 matrix of float) +0:403 log2 (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r030' (temp 2X2 matrix of float) +0:403 max (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r031' (temp 2X2 matrix of float) +0:403 min (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r032' (temp 2X2 matrix of float) +0:403 pow (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r033' (temp 2X2 matrix of float) +0:403 radians (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r034' (temp 2X2 matrix of float) +0:403 roundEven (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r035' (temp 2X2 matrix of float) +0:403 inverse sqrt (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r036' (temp 2X2 matrix of float) +0:403 clamp (temp 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Constant: +0:403 0.000000 +0:403 Constant: +0:403 1.000000 +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r037' (temp 2X2 matrix of float) +0:403 Sign (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r038' (temp 2X2 matrix of float) +0:403 sine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 sine (temp 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'inF2' (in 2X2 matrix of float) +0:403 cosine (temp 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r039' (temp 2X2 matrix of float) +0:403 hyp. sine (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r049' (temp 2X2 matrix of float) +0:403 smoothstep (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 'inF2' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r041' (temp 2X2 matrix of float) +0:403 sqrt (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r042' (temp 2X2 matrix of float) +0:403 step (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 'inF1' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r043' (temp 2X2 matrix of float) +0:403 tangent (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r044' (temp 2X2 matrix of float) +0:403 hyp. tangent (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 transpose (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:403 Sequence +0:403 move second child to first child (temp 2X2 matrix of float) +0:403 'r046' (temp 2X2 matrix of float) +0:403 trunc (global 2X2 matrix of float) +0:403 'inF0' (in 2X2 matrix of float) +0:406 Branch: Return with expression 0:? Constant: 0:? 2.000000 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:417 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float) -0:409 Function Parameters: -0:409 'inF0' (in 3X3 matrix of float) -0:409 'inF1' (in 3X3 matrix of float) -0:409 'inF2' (in 3X3 matrix of float) +0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; (temp 3X3 matrix of float) +0:410 Function Parameters: +0:410 'inF0' (in 3X3 matrix of float) +0:410 'inF1' (in 3X3 matrix of float) +0:410 'inF2' (in 3X3 matrix of float) 0:? Sequence -0:411 Sequence -0:411 move second child to first child (temp bool) -0:411 'r000' (temp bool) -0:411 all (global bool) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r001' (temp 3X3 matrix of float) -0:411 Absolute value (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 arc cosine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp bool) -0:411 'r003' (temp bool) -0:411 any (global bool) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r004' (temp 3X3 matrix of float) -0:411 arc sine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r005' (temp 3X3 matrix of float) -0:411 arc tangent (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r006' (temp 3X3 matrix of float) -0:411 arc tangent (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r007' (temp 3X3 matrix of float) -0:411 Ceiling (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Test condition and select (temp void) -0:411 Condition -0:411 any (temp bool) -0:411 Compare Less Than (temp 3X3 matrix of bool) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Constant: -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 0.000000 -0:411 true case -0:411 Branch: Kill -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r008' (temp 3X3 matrix of float) -0:411 clamp (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 'inF2' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r009' (temp 3X3 matrix of float) -0:411 cosine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r010' (temp 3X3 matrix of float) -0:411 hyp. cosine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r011' (temp 3X3 matrix of float) -0:411 dPdx (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r012' (temp 3X3 matrix of float) -0:411 dPdxCoarse (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r013' (temp 3X3 matrix of float) -0:411 dPdxFine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r014' (temp 3X3 matrix of float) -0:411 dPdy (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r015' (temp 3X3 matrix of float) -0:411 dPdyCoarse (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r016' (temp 3X3 matrix of float) -0:411 dPdyFine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r017' (temp 3X3 matrix of float) -0:411 degrees (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp float) -0:411 'r018' (temp float) -0:411 determinant (global float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r019' (temp 3X3 matrix of float) -0:411 exp (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'R020' (temp 3X3 matrix of float) -0:411 exp2 (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r021' (temp 3X3 matrix of float) -0:411 Floor (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r022' (temp 3X3 matrix of float) -0:411 mod (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r023' (temp 3X3 matrix of float) -0:411 Fraction (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r024' (temp 3X3 matrix of float) -0:411 frexp (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r025' (temp 3X3 matrix of float) -0:411 fwidth (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r026' (temp 3X3 matrix of float) -0:411 ldexp (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r026a' (temp 3X3 matrix of float) -0:411 mix (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 'inF2' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r027' (temp 3X3 matrix of float) -0:411 log (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r028' (temp 3X3 matrix of float) -0:411 matrix-scale (temp 3X3 matrix of float) -0:411 log2 (temp 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Constant: -0:411 0.301030 -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r029' (temp 3X3 matrix of float) -0:411 log2 (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r030' (temp 3X3 matrix of float) -0:411 max (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r031' (temp 3X3 matrix of float) -0:411 min (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r032' (temp 3X3 matrix of float) -0:411 pow (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r033' (temp 3X3 matrix of float) -0:411 radians (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r034' (temp 3X3 matrix of float) -0:411 roundEven (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r035' (temp 3X3 matrix of float) -0:411 inverse sqrt (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r036' (temp 3X3 matrix of float) -0:411 clamp (temp 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Constant: -0:411 0.000000 -0:411 Constant: -0:411 1.000000 -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r037' (temp 3X3 matrix of float) -0:411 Sign (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r038' (temp 3X3 matrix of float) -0:411 sine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 sine (temp 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'inF2' (in 3X3 matrix of float) -0:411 cosine (temp 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r039' (temp 3X3 matrix of float) -0:411 hyp. sine (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r049' (temp 3X3 matrix of float) -0:411 smoothstep (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 'inF2' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r041' (temp 3X3 matrix of float) -0:411 sqrt (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r042' (temp 3X3 matrix of float) -0:411 step (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 'inF1' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r043' (temp 3X3 matrix of float) -0:411 tangent (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r044' (temp 3X3 matrix of float) -0:411 hyp. tangent (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 transpose (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:411 Sequence -0:411 move second child to first child (temp 3X3 matrix of float) -0:411 'r046' (temp 3X3 matrix of float) -0:411 trunc (global 3X3 matrix of float) -0:411 'inF0' (in 3X3 matrix of float) -0:414 Branch: Return with expression +0:412 Sequence +0:412 move second child to first child (temp bool) +0:412 'r000' (temp bool) +0:412 all (global bool) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r001' (temp 3X3 matrix of float) +0:412 Absolute value (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 arc cosine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp bool) +0:412 'r003' (temp bool) +0:412 any (global bool) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r004' (temp 3X3 matrix of float) +0:412 arc sine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r005' (temp 3X3 matrix of float) +0:412 arc tangent (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r006' (temp 3X3 matrix of float) +0:412 arc tangent (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r007' (temp 3X3 matrix of float) +0:412 Ceiling (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Test condition and select (temp void) +0:412 Condition +0:412 any (temp bool) +0:412 Compare Less Than (temp 3X3 matrix of bool) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Constant: +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 0.000000 +0:412 true case +0:412 Branch: Kill +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r008' (temp 3X3 matrix of float) +0:412 clamp (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 'inF2' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r009' (temp 3X3 matrix of float) +0:412 cosine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r010' (temp 3X3 matrix of float) +0:412 hyp. cosine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r011' (temp 3X3 matrix of float) +0:412 dPdx (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r012' (temp 3X3 matrix of float) +0:412 dPdxCoarse (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r013' (temp 3X3 matrix of float) +0:412 dPdxFine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r014' (temp 3X3 matrix of float) +0:412 dPdy (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r015' (temp 3X3 matrix of float) +0:412 dPdyCoarse (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r016' (temp 3X3 matrix of float) +0:412 dPdyFine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r017' (temp 3X3 matrix of float) +0:412 degrees (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp float) +0:412 'r018' (temp float) +0:412 determinant (global float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r019' (temp 3X3 matrix of float) +0:412 exp (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'R020' (temp 3X3 matrix of float) +0:412 exp2 (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r021' (temp 3X3 matrix of float) +0:412 Floor (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r022' (temp 3X3 matrix of float) +0:412 mod (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r023' (temp 3X3 matrix of float) +0:412 Fraction (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r024' (temp 3X3 matrix of float) +0:412 frexp (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r025' (temp 3X3 matrix of float) +0:412 fwidth (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r026' (temp 3X3 matrix of float) +0:412 ldexp (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r026a' (temp 3X3 matrix of float) +0:412 mix (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 'inF2' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r027' (temp 3X3 matrix of float) +0:412 log (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r028' (temp 3X3 matrix of float) +0:412 matrix-scale (temp 3X3 matrix of float) +0:412 log2 (temp 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Constant: +0:412 0.301030 +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r029' (temp 3X3 matrix of float) +0:412 log2 (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r030' (temp 3X3 matrix of float) +0:412 max (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r031' (temp 3X3 matrix of float) +0:412 min (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r032' (temp 3X3 matrix of float) +0:412 pow (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r033' (temp 3X3 matrix of float) +0:412 radians (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r034' (temp 3X3 matrix of float) +0:412 roundEven (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r035' (temp 3X3 matrix of float) +0:412 inverse sqrt (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r036' (temp 3X3 matrix of float) +0:412 clamp (temp 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Constant: +0:412 0.000000 +0:412 Constant: +0:412 1.000000 +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r037' (temp 3X3 matrix of float) +0:412 Sign (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r038' (temp 3X3 matrix of float) +0:412 sine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 sine (temp 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'inF2' (in 3X3 matrix of float) +0:412 cosine (temp 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r039' (temp 3X3 matrix of float) +0:412 hyp. sine (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r049' (temp 3X3 matrix of float) +0:412 smoothstep (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 'inF2' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r041' (temp 3X3 matrix of float) +0:412 sqrt (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r042' (temp 3X3 matrix of float) +0:412 step (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 'inF1' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r043' (temp 3X3 matrix of float) +0:412 tangent (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r044' (temp 3X3 matrix of float) +0:412 hyp. tangent (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 transpose (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:412 Sequence +0:412 move second child to first child (temp 3X3 matrix of float) +0:412 'r046' (temp 3X3 matrix of float) +0:412 trunc (global 3X3 matrix of float) +0:412 'inF0' (in 3X3 matrix of float) +0:415 Branch: Return with expression 0:? Constant: 0:? 3.000000 0:? 3.000000 @@ -4906,301 +4945,301 @@ gl_FragCoord origin is upper left 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:438 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float) -0:418 Function Parameters: -0:418 'inF0' (in 4X4 matrix of float) -0:418 'inF1' (in 4X4 matrix of float) -0:418 'inF2' (in 4X4 matrix of float) +0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; (temp 4X4 matrix of float) +0:419 Function Parameters: +0:419 'inF0' (in 4X4 matrix of float) +0:419 'inF1' (in 4X4 matrix of float) +0:419 'inF2' (in 4X4 matrix of float) 0:? Sequence -0:420 Sequence -0:420 move second child to first child (temp bool) -0:420 'r000' (temp bool) -0:420 all (global bool) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r001' (temp 4X4 matrix of float) -0:420 Absolute value (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 arc cosine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp bool) -0:420 'r003' (temp bool) -0:420 any (global bool) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r004' (temp 4X4 matrix of float) -0:420 arc sine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r005' (temp 4X4 matrix of float) -0:420 arc tangent (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r006' (temp 4X4 matrix of float) -0:420 arc tangent (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r007' (temp 4X4 matrix of float) -0:420 Ceiling (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Test condition and select (temp void) -0:420 Condition -0:420 any (temp bool) -0:420 Compare Less Than (temp 4X4 matrix of bool) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Constant: -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 0.000000 -0:420 true case -0:420 Branch: Kill -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r008' (temp 4X4 matrix of float) -0:420 clamp (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 'inF2' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r009' (temp 4X4 matrix of float) -0:420 cosine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r010' (temp 4X4 matrix of float) -0:420 hyp. cosine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r011' (temp 4X4 matrix of float) -0:420 dPdx (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r012' (temp 4X4 matrix of float) -0:420 dPdxCoarse (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r013' (temp 4X4 matrix of float) -0:420 dPdxFine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r014' (temp 4X4 matrix of float) -0:420 dPdy (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r015' (temp 4X4 matrix of float) -0:420 dPdyCoarse (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r016' (temp 4X4 matrix of float) -0:420 dPdyFine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r017' (temp 4X4 matrix of float) -0:420 degrees (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp float) -0:420 'r018' (temp float) -0:420 determinant (global float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r019' (temp 4X4 matrix of float) -0:420 exp (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'R020' (temp 4X4 matrix of float) -0:420 exp2 (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r021' (temp 4X4 matrix of float) -0:420 Floor (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r022' (temp 4X4 matrix of float) -0:420 mod (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r023' (temp 4X4 matrix of float) -0:420 Fraction (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r024' (temp 4X4 matrix of float) -0:420 frexp (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r025' (temp 4X4 matrix of float) -0:420 fwidth (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r026' (temp 4X4 matrix of float) -0:420 ldexp (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r026a' (temp 4X4 matrix of float) -0:420 mix (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 'inF2' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r027' (temp 4X4 matrix of float) -0:420 log (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r028' (temp 4X4 matrix of float) -0:420 matrix-scale (temp 4X4 matrix of float) -0:420 log2 (temp 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Constant: -0:420 0.301030 -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r029' (temp 4X4 matrix of float) -0:420 log2 (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r030' (temp 4X4 matrix of float) -0:420 max (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r031' (temp 4X4 matrix of float) -0:420 min (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r032' (temp 4X4 matrix of float) -0:420 pow (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r033' (temp 4X4 matrix of float) -0:420 radians (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r034' (temp 4X4 matrix of float) -0:420 roundEven (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r035' (temp 4X4 matrix of float) -0:420 inverse sqrt (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r036' (temp 4X4 matrix of float) -0:420 clamp (temp 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Constant: -0:420 0.000000 -0:420 Constant: -0:420 1.000000 -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r037' (temp 4X4 matrix of float) -0:420 Sign (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r038' (temp 4X4 matrix of float) -0:420 sine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 sine (temp 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'inF2' (in 4X4 matrix of float) -0:420 cosine (temp 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r039' (temp 4X4 matrix of float) -0:420 hyp. sine (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r049' (temp 4X4 matrix of float) -0:420 smoothstep (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 'inF2' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r041' (temp 4X4 matrix of float) -0:420 sqrt (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r042' (temp 4X4 matrix of float) -0:420 step (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 'inF1' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r043' (temp 4X4 matrix of float) -0:420 tangent (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r044' (temp 4X4 matrix of float) -0:420 hyp. tangent (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 transpose (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:420 Sequence -0:420 move second child to first child (temp 4X4 matrix of float) -0:420 'r046' (temp 4X4 matrix of float) -0:420 trunc (global 4X4 matrix of float) -0:420 'inF0' (in 4X4 matrix of float) -0:423 Branch: Return with expression +0:421 Sequence +0:421 move second child to first child (temp bool) +0:421 'r000' (temp bool) +0:421 all (global bool) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r001' (temp 4X4 matrix of float) +0:421 Absolute value (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 arc cosine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp bool) +0:421 'r003' (temp bool) +0:421 any (global bool) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r004' (temp 4X4 matrix of float) +0:421 arc sine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r005' (temp 4X4 matrix of float) +0:421 arc tangent (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r006' (temp 4X4 matrix of float) +0:421 arc tangent (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r007' (temp 4X4 matrix of float) +0:421 Ceiling (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Test condition and select (temp void) +0:421 Condition +0:421 any (temp bool) +0:421 Compare Less Than (temp 4X4 matrix of bool) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Constant: +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 0.000000 +0:421 true case +0:421 Branch: Kill +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r008' (temp 4X4 matrix of float) +0:421 clamp (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 'inF2' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r009' (temp 4X4 matrix of float) +0:421 cosine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r010' (temp 4X4 matrix of float) +0:421 hyp. cosine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r011' (temp 4X4 matrix of float) +0:421 dPdx (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r012' (temp 4X4 matrix of float) +0:421 dPdxCoarse (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r013' (temp 4X4 matrix of float) +0:421 dPdxFine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r014' (temp 4X4 matrix of float) +0:421 dPdy (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r015' (temp 4X4 matrix of float) +0:421 dPdyCoarse (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r016' (temp 4X4 matrix of float) +0:421 dPdyFine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r017' (temp 4X4 matrix of float) +0:421 degrees (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp float) +0:421 'r018' (temp float) +0:421 determinant (global float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r019' (temp 4X4 matrix of float) +0:421 exp (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'R020' (temp 4X4 matrix of float) +0:421 exp2 (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r021' (temp 4X4 matrix of float) +0:421 Floor (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r022' (temp 4X4 matrix of float) +0:421 mod (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r023' (temp 4X4 matrix of float) +0:421 Fraction (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r024' (temp 4X4 matrix of float) +0:421 frexp (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r025' (temp 4X4 matrix of float) +0:421 fwidth (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r026' (temp 4X4 matrix of float) +0:421 ldexp (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r026a' (temp 4X4 matrix of float) +0:421 mix (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 'inF2' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r027' (temp 4X4 matrix of float) +0:421 log (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r028' (temp 4X4 matrix of float) +0:421 matrix-scale (temp 4X4 matrix of float) +0:421 log2 (temp 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Constant: +0:421 0.301030 +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r029' (temp 4X4 matrix of float) +0:421 log2 (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r030' (temp 4X4 matrix of float) +0:421 max (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r031' (temp 4X4 matrix of float) +0:421 min (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r032' (temp 4X4 matrix of float) +0:421 pow (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r033' (temp 4X4 matrix of float) +0:421 radians (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r034' (temp 4X4 matrix of float) +0:421 roundEven (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r035' (temp 4X4 matrix of float) +0:421 inverse sqrt (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r036' (temp 4X4 matrix of float) +0:421 clamp (temp 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Constant: +0:421 0.000000 +0:421 Constant: +0:421 1.000000 +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r037' (temp 4X4 matrix of float) +0:421 Sign (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r038' (temp 4X4 matrix of float) +0:421 sine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 sine (temp 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'inF2' (in 4X4 matrix of float) +0:421 cosine (temp 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r039' (temp 4X4 matrix of float) +0:421 hyp. sine (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r049' (temp 4X4 matrix of float) +0:421 smoothstep (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 'inF2' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r041' (temp 4X4 matrix of float) +0:421 sqrt (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r042' (temp 4X4 matrix of float) +0:421 step (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 'inF1' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r043' (temp 4X4 matrix of float) +0:421 tangent (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r044' (temp 4X4 matrix of float) +0:421 hyp. tangent (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 transpose (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:421 Sequence +0:421 move second child to first child (temp 4X4 matrix of float) +0:421 'r046' (temp 4X4 matrix of float) +0:421 trunc (global 4X4 matrix of float) +0:421 'inF0' (in 4X4 matrix of float) +0:424 Branch: Return with expression 0:? Constant: 0:? 4.000000 0:? 4.000000 @@ -5218,335 +5257,357 @@ gl_FragCoord origin is upper left 0:? 4.000000 0:? 4.000000 0:? 4.000000 -0:445 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (global void) -0:441 Function Parameters: -0:441 'inF0' (in float) -0:441 'inF1' (in float) -0:441 'inFV0' (in 2-component vector of float) -0:441 'inFV1' (in 2-component vector of float) -0:441 'inFM0' (in 2X2 matrix of float) -0:441 'inFM1' (in 2X2 matrix of float) +0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; (temp void) +0:442 Function Parameters: +0:442 'inF0' (in float) +0:442 'inF1' (in float) +0:442 'inFV0' (in 2-component vector of float) +0:442 'inFV1' (in 2-component vector of float) +0:442 'inFM0' (in 2X2 matrix of float) +0:442 'inFM1' (in 2X2 matrix of float) 0:? Sequence -0:442 Sequence -0:442 move second child to first child (temp float) -0:442 'r0' (temp float) -0:442 component-wise multiply (temp float) -0:442 'inF0' (in float) -0:442 'inF1' (in float) -0:442 Sequence -0:442 move second child to first child (temp 2-component vector of float) -0:442 'r1' (temp 2-component vector of float) -0:442 vector-scale (temp 2-component vector of float) -0:442 'inFV0' (in 2-component vector of float) -0:442 'inF0' (in float) -0:442 Sequence -0:442 move second child to first child (temp 2-component vector of float) -0:442 'r2' (temp 2-component vector of float) -0:442 vector-scale (temp 2-component vector of float) -0:442 'inF0' (in float) -0:442 'inFV0' (in 2-component vector of float) -0:442 Sequence -0:442 move second child to first child (temp float) -0:442 'r3' (temp float) -0:442 dot-product (global float) -0:442 'inFV0' (in 2-component vector of float) -0:442 'inFV1' (in 2-component vector of float) -0:442 Sequence -0:442 move second child to first child (temp 2-component vector of float) -0:442 'r4' (temp 2-component vector of float) -0:442 matrix-times-vector (temp 2-component vector of float) -0:442 'inFM0' (in 2X2 matrix of float) -0:442 'inFV0' (in 2-component vector of float) -0:442 Sequence -0:442 move second child to first child (temp 2-component vector of float) -0:442 'r5' (temp 2-component vector of float) -0:442 vector-times-matrix (temp 2-component vector of float) -0:442 'inFV0' (in 2-component vector of float) -0:442 'inFM0' (in 2X2 matrix of float) -0:442 Sequence -0:442 move second child to first child (temp 2X2 matrix of float) -0:442 'r6' (temp 2X2 matrix of float) -0:442 matrix-scale (temp 2X2 matrix of float) -0:442 'inFM0' (in 2X2 matrix of float) -0:442 'inF0' (in float) -0:442 Sequence -0:442 move second child to first child (temp 2X2 matrix of float) -0:442 'r7' (temp 2X2 matrix of float) -0:442 matrix-scale (temp 2X2 matrix of float) -0:442 'inF0' (in float) -0:442 'inFM0' (in 2X2 matrix of float) -0:442 Sequence -0:442 move second child to first child (temp 2X2 matrix of float) -0:442 'r8' (temp 2X2 matrix of float) -0:442 matrix-multiply (temp 2X2 matrix of float) -0:442 'inFM0' (in 2X2 matrix of float) -0:442 'inFM1' (in 2X2 matrix of float) -0:452 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (global void) -0:448 Function Parameters: -0:448 'inF0' (in float) -0:448 'inF1' (in float) -0:448 'inFV0' (in 3-component vector of float) -0:448 'inFV1' (in 3-component vector of float) -0:448 'inFM0' (in 3X3 matrix of float) -0:448 'inFM1' (in 3X3 matrix of float) +0:443 Sequence +0:443 move second child to first child (temp float) +0:443 'r0' (temp float) +0:443 component-wise multiply (temp 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 '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 '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) +0:443 dot-product (global float) +0:443 'inFV0' (in 2-component vector of float) +0:443 'inFV1' (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 'r4' (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 '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 '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 'inFM1' (in 2X2 matrix of float) +0:443 'inFM0' (in 2X2 matrix of float) +0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; (temp void) +0:449 Function Parameters: +0:449 'inF0' (in float) +0:449 'inF1' (in float) +0:449 'inFV0' (in 3-component vector of float) +0:449 'inFV1' (in 3-component vector of float) +0:449 'inFM0' (in 3X3 matrix of float) +0:449 'inFM1' (in 3X3 matrix of float) 0:? Sequence -0:449 Sequence -0:449 move second child to first child (temp float) -0:449 'r0' (temp float) -0:449 component-wise multiply (temp float) -0:449 'inF0' (in float) -0:449 'inF1' (in float) -0:449 Sequence -0:449 move second child to first child (temp 3-component vector of float) -0:449 'r1' (temp 3-component vector of float) -0:449 vector-scale (temp 3-component vector of float) -0:449 'inFV0' (in 3-component vector of float) -0:449 'inF0' (in float) -0:449 Sequence -0:449 move second child to first child (temp 3-component vector of float) -0:449 'r2' (temp 3-component vector of float) -0:449 vector-scale (temp 3-component vector of float) -0:449 'inF0' (in float) -0:449 'inFV0' (in 3-component vector of float) -0:449 Sequence -0:449 move second child to first child (temp float) -0:449 'r3' (temp float) -0:449 dot-product (global float) -0:449 'inFV0' (in 3-component vector of float) -0:449 'inFV1' (in 3-component vector of float) -0:449 Sequence -0:449 move second child to first child (temp 3-component vector of float) -0:449 'r4' (temp 3-component vector of float) -0:449 matrix-times-vector (temp 3-component vector of float) -0:449 'inFM0' (in 3X3 matrix of float) -0:449 'inFV0' (in 3-component vector of float) -0:449 Sequence -0:449 move second child to first child (temp 3-component vector of float) -0:449 'r5' (temp 3-component vector of float) -0:449 vector-times-matrix (temp 3-component vector of float) -0:449 'inFV0' (in 3-component vector of float) -0:449 'inFM0' (in 3X3 matrix of float) -0:449 Sequence -0:449 move second child to first child (temp 3X3 matrix of float) -0:449 'r6' (temp 3X3 matrix of float) -0:449 matrix-scale (temp 3X3 matrix of float) -0:449 'inFM0' (in 3X3 matrix of float) -0:449 'inF0' (in float) -0:449 Sequence -0:449 move second child to first child (temp 3X3 matrix of float) -0:449 'r7' (temp 3X3 matrix of float) -0:449 matrix-scale (temp 3X3 matrix of float) -0:449 'inF0' (in float) -0:449 'inFM0' (in 3X3 matrix of float) -0:449 Sequence -0:449 move second child to first child (temp 3X3 matrix of float) -0:449 'r8' (temp 3X3 matrix of float) -0:449 matrix-multiply (temp 3X3 matrix of float) -0:449 'inFM0' (in 3X3 matrix of float) -0:449 'inFM1' (in 3X3 matrix of float) -0:460 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (global void) -0:455 Function Parameters: -0:455 'inF0' (in float) -0:455 'inF1' (in float) -0:455 'inFV0' (in 4-component vector of float) -0:455 'inFV1' (in 4-component vector of float) -0:455 'inFM0' (in 4X4 matrix of float) -0:455 'inFM1' (in 4X4 matrix of float) +0:450 Sequence +0:450 move second child to first child (temp float) +0:450 'r0' (temp float) +0:450 component-wise multiply (temp 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 '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 '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) +0:450 dot-product (global float) +0:450 'inFV0' (in 3-component vector of float) +0:450 'inFV1' (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 'r4' (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 '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 '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 'inFM1' (in 3X3 matrix of float) +0:450 'inFM0' (in 3X3 matrix of float) +0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; (temp void) +0:456 Function Parameters: +0:456 'inF0' (in float) +0:456 'inF1' (in float) +0:456 'inFV0' (in 4-component vector of float) +0:456 'inFV1' (in 4-component vector of float) +0:456 'inFM0' (in 4X4 matrix of float) +0:456 'inFM1' (in 4X4 matrix of float) 0:? Sequence -0:456 Sequence -0:456 move second child to first child (temp float) -0:456 'r0' (temp float) -0:456 component-wise multiply (temp float) -0:456 'inF0' (in float) -0:456 'inF1' (in float) -0:456 Sequence -0:456 move second child to first child (temp 4-component vector of float) -0:456 'r1' (temp 4-component vector of float) -0:456 vector-scale (temp 4-component vector of float) -0:456 'inFV0' (in 4-component vector of float) -0:456 'inF0' (in float) -0:456 Sequence -0:456 move second child to first child (temp 4-component vector of float) -0:456 'r2' (temp 4-component vector of float) -0:456 vector-scale (temp 4-component vector of float) -0:456 'inF0' (in float) -0:456 'inFV0' (in 4-component vector of float) -0:456 Sequence -0:456 move second child to first child (temp float) -0:456 'r3' (temp float) -0:456 dot-product (global float) -0:456 'inFV0' (in 4-component vector of float) -0:456 'inFV1' (in 4-component vector of float) -0:456 Sequence -0:456 move second child to first child (temp 4-component vector of float) -0:456 'r4' (temp 4-component vector of float) -0:456 matrix-times-vector (temp 4-component vector of float) -0:456 'inFM0' (in 4X4 matrix of float) -0:456 'inFV0' (in 4-component vector of float) -0:456 Sequence -0:456 move second child to first child (temp 4-component vector of float) -0:456 'r5' (temp 4-component vector of float) -0:456 vector-times-matrix (temp 4-component vector of float) -0:456 'inFV0' (in 4-component vector of float) -0:456 'inFM0' (in 4X4 matrix of float) -0:456 Sequence -0:456 move second child to first child (temp 4X4 matrix of float) -0:456 'r6' (temp 4X4 matrix of float) -0:456 matrix-scale (temp 4X4 matrix of float) -0:456 'inFM0' (in 4X4 matrix of float) -0:456 'inF0' (in float) -0:456 Sequence -0:456 move second child to first child (temp 4X4 matrix of float) -0:456 'r7' (temp 4X4 matrix of float) -0:456 matrix-scale (temp 4X4 matrix of float) -0:456 'inF0' (in float) -0:456 'inFM0' (in 4X4 matrix of float) -0:456 Sequence -0:456 move second child to first child (temp 4X4 matrix of float) -0:456 'r8' (temp 4X4 matrix of float) -0:456 matrix-multiply (temp 4X4 matrix of float) -0:456 'inFM0' (in 4X4 matrix of float) -0:456 'inFM1' (in 4X4 matrix of float) -0:484 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf32;mf23;mf33;mf43;mf42; (global void) -0:465 Function Parameters: -0:465 'inF0' (in float) -0:465 'inF1' (in float) -0:465 'inFV2' (in 2-component vector of float) -0:465 'inFV3' (in 3-component vector of float) -0:465 'inFM2x3' (in 3X2 matrix of float) -0:465 'inFM3x2' (in 2X3 matrix of float) -0:465 'inFM3x3' (in 3X3 matrix of float) -0:465 'inFM3x4' (in 4X3 matrix of float) -0:465 'inFM2x4' (in 4X2 matrix of float) +0:457 Sequence +0:457 move second child to first child (temp float) +0:457 'r0' (temp float) +0:457 component-wise multiply (temp 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 '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 '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) +0:457 dot-product (global float) +0:457 'inFV0' (in 4-component vector of float) +0:457 'inFV1' (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 'r4' (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 '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 '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 'inFM1' (in 4X4 matrix of float) +0:457 'inFM0' (in 4X4 matrix of float) +0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; (temp 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 2X3 matrix of float) +0:466 'inFM3x2' (in 3X2 matrix of float) +0:466 'inFM3x3' (in 3X3 matrix of float) +0:466 'inFM3x4' (in 3X4 matrix of float) +0:466 'inFM2x4' (in 2X4 matrix of float) 0:? Sequence -0:466 Sequence -0:466 move second child to first child (temp float) -0:466 'r00' (temp float) -0:466 component-wise multiply (temp float) -0:466 'inF0' (in float) -0:466 'inF1' (in float) 0:467 Sequence -0:467 move second child to first child (temp 2-component vector of float) -0:467 'r01' (temp 2-component vector of float) -0:467 vector-scale (temp 2-component vector of float) -0:467 'inFV2' (in 2-component vector of float) +0:467 move second child to first child (temp float) +0:467 'r00' (temp float) +0:467 component-wise multiply (temp float) +0:467 'inF1' (in float) 0:467 'inF0' (in float) 0:468 Sequence -0:468 move second child to first child (temp 3-component vector of float) -0:468 'r02' (temp 3-component vector of float) -0:468 vector-scale (temp 3-component vector of float) -0:468 'inFV3' (in 3-component vector of float) +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 'inF0' (in float) +0:468 'inFV2' (in 2-component vector of float) 0:469 Sequence -0:469 move second child to first child (temp 2-component vector of float) -0:469 'r03' (temp 2-component vector of float) -0:469 vector-scale (temp 2-component vector of float) +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 'inF0' (in float) -0:469 'inFV2' (in 2-component vector of float) +0:469 'inFV3' (in 3-component vector of float) 0:470 Sequence -0:470 move second child to first child (temp 3-component vector of float) -0:470 'r04' (temp 3-component vector of float) -0:470 vector-scale (temp 3-component vector of float) +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 'inFV2' (in 2-component vector of float) 0:470 'inF0' (in float) -0:470 'inFV3' (in 3-component vector of float) 0:471 Sequence -0:471 move second child to first child (temp float) -0:471 'r05' (temp float) -0:471 dot-product (global float) -0:471 'inFV2' (in 2-component vector of float) -0:471 'inFV2' (in 2-component vector of float) +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 '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 'r06' (temp float) +0:472 'r05' (temp float) 0:472 dot-product (global float) -0:472 'inFV3' (in 3-component vector of float) -0:472 'inFV3' (in 3-component vector of float) +0:472 'inFV2' (in 2-component vector of float) +0:472 'inFV2' (in 2-component vector of float) 0:473 Sequence -0:473 move second child to first child (temp 3-component vector of float) -0:473 'r07' (temp 3-component vector of float) -0:473 vector-times-matrix (temp 3-component vector of float) -0:473 'inFV2' (in 2-component vector of float) -0:473 'inFM2x3' (in 3X2 matrix of float) +0:473 move second child to first child (temp float) +0:473 'r06' (temp float) +0:473 dot-product (global float) +0:473 'inFV3' (in 3-component vector of float) +0:473 'inFV3' (in 3-component vector of float) 0:474 Sequence -0:474 move second child to first child (temp 2-component vector of float) -0:474 'r08' (temp 2-component vector of float) -0:474 vector-times-matrix (temp 2-component vector of float) -0:474 'inFV3' (in 3-component vector of float) -0:474 'inFM3x2' (in 2X3 matrix of float) +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 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:475 Sequence 0:475 move second child to first child (temp 2-component vector of float) -0:475 'r09' (temp 2-component vector of float) +0:475 'r08' (temp 2-component vector of float) 0:475 matrix-times-vector (temp 2-component vector of float) -0:475 'inFM2x3' (in 3X2 matrix of float) +0:475 'inFM3x2' (in 3X2 matrix of float) 0:475 'inFV3' (in 3-component vector of float) 0:476 Sequence -0:476 move second child to first child (temp 3-component vector of float) -0:476 'r10' (temp 3-component vector of float) -0:476 matrix-times-vector (temp 3-component vector of float) -0:476 'inFM3x2' (in 2X3 matrix of float) -0:476 'inFV2' (in 2-component vector of float) +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 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 3X2 matrix of float) -0:477 'r11' (temp 3X2 matrix of float) -0:477 matrix-scale (temp 3X2 matrix of float) -0:477 'inFM2x3' (in 3X2 matrix of float) -0:477 'inF0' (in float) +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 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 2X3 matrix of float) -0:478 'r12' (temp 2X3 matrix of float) +0:478 'r11' (temp 2X3 matrix of float) 0:478 matrix-scale (temp 2X3 matrix of float) -0:478 'inFM3x2' (in 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 2X2 matrix of float) -0:479 'r13' (temp 2X2 matrix of float) -0:479 matrix-multiply (temp 2X2 matrix of float) -0:479 'inFM2x3' (in 3X2 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 3X2 matrix of float) -0:480 'r14' (temp 3X2 matrix of float) -0:480 matrix-multiply (temp 3X2 matrix of float) -0:480 'inFM2x3' (in 3X2 matrix of float) -0:480 'inFM3x3' (in 3X3 matrix of float) +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 '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 4X2 matrix of float) -0:481 'r15' (temp 4X2 matrix of float) -0:481 matrix-multiply (temp 4X2 matrix of float) -0:481 'inFM2x3' (in 3X2 matrix of float) -0:481 'inFM3x4' (in 4X3 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 4X3 matrix of float) -0:482 'r16' (temp 4X3 matrix of float) -0:482 matrix-multiply (temp 4X3 matrix of float) -0:482 'inFM3x2' (in 2X3 matrix of float) -0:482 'inFM2x4' (in 4X2 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 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( (temp 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:492 Sequence +0:492 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) -0:? 'gs_uc' (global uint) -0:? 'gs_ua2' (global 2-component vector of uint) -0:? 'gs_ub2' (global 2-component vector of uint) -0:? 'gs_uc2' (global 2-component vector of uint) -0:? 'gs_ua3' (global 3-component vector of uint) -0:? 'gs_ub3' (global 3-component vector of uint) -0:? 'gs_uc3' (global 3-component vector of uint) -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:? 'gs_ua' (shared uint) +0:? 'gs_ub' (shared uint) +0:? 'gs_uc' (shared uint) +0:? 'gs_ua2' (shared 2-component vector of uint) +0:? 'gs_ub2' (shared 2-component vector of uint) +0:? 'gs_uc2' (shared 2-component vector of uint) +0:? 'gs_ua3' (shared 3-component vector of uint) +0:? 'gs_ub3' (shared 3-component vector of uint) +0:? 'gs_uc3' (shared 3-component vector of uint) +0:? 'gs_ua4' (shared 4-component vector of uint) +0:? 'gs_ub4' (shared 4-component vector of uint) +0:? 'gs_uc4' (shared 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 1806 +// Id's are bound by 1825 Capability Shader Capability DerivativeControl 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 804 831 839 848 + 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" @@ -5569,501 +5630,509 @@ gl_FragCoord origin is upper left 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 "r043" - Name 710 "r044" - Name 713 "r045" - Name 717 "r046" - Name 720 "r047" - Name 724 "r048" - Name 728 "r049" - Name 731 "r050" - Name 735 "r051" - Name 738 "r052" - Name 742 "r053" - Name 746 "r054" - Name 750 "r055" - Name 753 "r056" - Name 756 "r057" - Name 759 "r058" - Name 764 "r059" - Name 767 "r060" - Name 774 "r061" - Name 777 "r062" - Name 782 "r063" - Name 785 "r064" - Name 789 "r065" - Name 792 "r066" - Name 795 "r067" - Name 802 "r000" - Name 804 "inF0" - Name 807 "r001" - Name 810 "r002" - Name 813 "r003" - Name 816 "r004" - Name 821 "r005" - Name 826 "r006" - Name 829 "r007" - Name 831 "inU0" - Name 834 "r009" - Name 837 "r010" - Name 839 "inF1" - Name 842 "r011" - Name 845 "r012" - Name 848 "inF2" - Name 859 "r013" - Name 862 "r014" - Name 865 "r015" - Name 868 "r016" - Name 871 "r017" - Name 874 "r018" - Name 877 "r019" - Name 880 "r020" - Name 883 "r021" - Name 886 "r022" - Name 889 "r023" - Name 893 "r024" - Name 897 "r025" - Name 909 "r029" - Name 912 "r030" - Name 915 "r031" - Name 920 "r032" - Name 925 "r033" - Name 927 "r034" - Name 930 "r036" - Name 934 "r037" - Name 937 "r038" - Name 939 "ResType" - Name 943 "r039" - Name 947 "r040" - Name 950 "r041" - Name 953 "r042" - Name 957 "r039a" - Name 962 "r043" - Name 965 "r044" - Name 968 "r045" - Name 972 "r046" - Name 975 "r047" - Name 979 "r048" - Name 983 "r049" - Name 986 "r050" - Name 990 "r051" - Name 993 "r052" - Name 997 "r053" - Name 1001 "r054" - Name 1005 "r055" - Name 1008 "r056" - Name 1011 "r057" - Name 1014 "r058" - Name 1019 "r059" - Name 1022 "r060" - Name 1029 "r061" - Name 1032 "r062" - Name 1037 "r063" - Name 1040 "r064" - Name 1044 "r065" - Name 1047 "r066" - Name 1050 "r067" - Name 1056 "r000" - Name 1059 "r001" - Name 1064 "r003" - Name 1067 "r004" - Name 1070 "r005" - Name 1073 "r006" - Name 1077 "r007" - Name 1088 "r008" - Name 1093 "r009" - Name 1096 "r010" - Name 1099 "r011" - Name 1102 "r012" - Name 1105 "r013" - Name 1108 "r014" - Name 1111 "r015" - Name 1114 "r016" - Name 1117 "r017" - Name 1120 "r018" - Name 1123 "r019" - Name 1126 "R020" - Name 1129 "r021" - Name 1132 "r022" - Name 1142 "r023" - Name 1145 "r024" - Name 1147 "ResType" - Name 1151 "r025" - Name 1154 "r026" - Name 1158 "r026a" - Name 1163 "r027" - Name 1166 "r028" - Name 1170 "r029" - Name 1173 "r030" - Name 1177 "r031" - Name 1181 "r032" - Name 1185 "r033" - Name 1188 "r034" - Name 1191 "r035" - Name 1194 "r036" - Name 1199 "r037" - Name 1202 "r038" - Name 1209 "r039" - Name 1212 "r049" - Name 1217 "r041" - Name 1220 "r042" - Name 1224 "r043" - Name 1227 "r044" - Name 1232 "r046" - Name 1239 "r000" - Name 1242 "r001" - Name 1247 "r003" - Name 1250 "r004" - Name 1253 "r005" - Name 1256 "r006" - Name 1260 "r007" - Name 1271 "r008" - Name 1276 "r009" - Name 1279 "r010" - Name 1282 "r011" - Name 1285 "r012" - Name 1288 "r013" - Name 1291 "r014" - Name 1294 "r015" - Name 1297 "r016" - Name 1300 "r017" - Name 1303 "r018" - Name 1306 "r019" - Name 1309 "R020" - Name 1312 "r021" - Name 1315 "r022" - Name 1328 "r023" - Name 1331 "r024" - Name 1333 "ResType" - Name 1337 "r025" - Name 1340 "r026" - Name 1344 "r026a" - Name 1349 "r027" - Name 1352 "r028" - Name 1356 "r029" - Name 1359 "r030" - Name 1363 "r031" - Name 1367 "r032" - Name 1371 "r033" - Name 1374 "r034" - Name 1377 "r035" - Name 1380 "r036" - Name 1385 "r037" - Name 1388 "r038" - Name 1395 "r039" - Name 1398 "r049" - Name 1403 "r041" - Name 1406 "r042" - Name 1410 "r043" - Name 1413 "r044" - Name 1418 "r046" - Name 1425 "r000" - Name 1428 "r001" - Name 1433 "r003" - Name 1436 "r004" - Name 1439 "r005" - Name 1442 "r006" - Name 1446 "r007" - Name 1457 "r008" - Name 1462 "r009" - Name 1465 "r010" - Name 1468 "r011" - Name 1471 "r012" - Name 1474 "r013" - Name 1477 "r014" - Name 1480 "r015" - Name 1483 "r016" - Name 1486 "r017" - Name 1489 "r018" - Name 1492 "r019" - Name 1495 "R020" - Name 1498 "r021" - Name 1501 "r022" - Name 1517 "r023" - Name 1520 "r024" - Name 1522 "ResType" - Name 1526 "r025" - Name 1529 "r026" - Name 1533 "r026a" - Name 1538 "r027" - Name 1541 "r028" - Name 1545 "r029" - Name 1548 "r030" - Name 1552 "r031" - Name 1556 "r032" - Name 1560 "r033" - Name 1563 "r034" - Name 1566 "r035" - Name 1569 "r036" - Name 1574 "r037" - Name 1577 "r038" - Name 1584 "r039" - Name 1587 "r049" - Name 1592 "r041" - Name 1595 "r042" - Name 1599 "r043" - Name 1602 "r044" - Name 1607 "r046" - Name 1614 "r0" - Name 1618 "r1" - Name 1622 "r2" - Name 1626 "r3" - Name 1630 "r4" - Name 1634 "r5" - Name 1638 "r6" - Name 1642 "r7" - Name 1646 "r8" - Name 1650 "r0" - Name 1654 "r1" - Name 1658 "r2" - Name 1662 "r3" - Name 1666 "r4" - Name 1670 "r5" - Name 1674 "r6" - Name 1678 "r7" - Name 1682 "r8" - Name 1686 "r0" - Name 1690 "r1" - Name 1694 "r2" - Name 1698 "r3" - Name 1702 "r4" - Name 1706 "r5" - Name 1710 "r6" - Name 1714 "r7" - Name 1718 "r8" - Name 1722 "r00" - Name 1726 "r01" - Name 1730 "r02" - Name 1734 "r03" - Name 1738 "r04" - Name 1742 "r05" - Name 1746 "r06" - Name 1750 "r07" - Name 1754 "r08" - Name 1758 "r09" - Name 1762 "r10" - Name 1766 "r11" - Name 1770 "r12" - Name 1774 "r13" - Name 1778 "r14" - Name 1782 "r15" - Name 1786 "r16" - Name 1791 "gs_ua" - Name 1792 "gs_ub" - Name 1793 "gs_uc" - Name 1795 "gs_ua2" - Name 1796 "gs_ub2" - Name 1797 "gs_uc2" - Name 1799 "gs_ua3" - Name 1800 "gs_ub3" - Name 1801 "gs_uc3" - Name 1803 "gs_ua4" - Name 1804 "gs_ub4" - Name 1805 "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 @@ -6082,423 +6151,130 @@ gl_FragCoord origin is upper left 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) - 751: 38(ivec3) ConstantComposite 512 278 383 - 798: 6(float) Constant 1077936128 - 799: 36(fvec3) ConstantComposite 274 509 798 - 803: TypePointer Input 64(fvec4) - 804(inF0): 803(ptr) Variable Input - 819: TypeVector 138(int) 4 - 820: TypePointer Function 819(ivec4) - 824: TypeVector 8(int) 4 - 825: TypePointer Function 824(ivec4) - 830: TypePointer Input 824(ivec4) - 831(inU0): 830(ptr) Variable Input - 839(inF1): 803(ptr) Variable Input - 848(inF2): 803(ptr) Variable Input - 852: 64(fvec4) ConstantComposite 165 165 165 165 - 853: TypeVector 121(bool) 4 - 866: 824(ivec4) ConstantComposite 177 383 619 278 - 898: TypePointer Input 6(float) - 921: 8(int) Constant 9 - 922: 8(int) Constant 10 - 923: 824(ivec4) ConstantComposite 177 427 921 922 - 939(ResType): TypeStruct 64(fvec4) 819(ivec4) - 946: TypePointer Function 853(bvec4) - 1006: 824(ivec4) ConstantComposite 512 278 383 667 - 1053: 6(float) Constant 1082130432 - 1054: 64(fvec4) ConstantComposite 274 509 798 1053 - 1081: 48 ConstantComposite 369 369 - 1082: TypeMatrix 370(bvec2) 2 - 1147(ResType): TypeStruct 48 342(ivec2) - 1235: 24(fvec2) ConstantComposite 509 509 - 1236: 48 ConstantComposite 1235 1235 - 1264: 56 ConstantComposite 605 605 605 - 1265: TypeMatrix 606(bvec3) 3 - 1333(ResType): TypeStruct 56 578(ivec3) - 1421: 36(fvec3) ConstantComposite 798 798 798 - 1422: 56 ConstantComposite 1421 1421 1421 - 1450: 65 ConstantComposite 852 852 852 852 - 1451: TypeMatrix 853(bvec4) 4 - 1522(ResType): TypeStruct 65 819(ivec4) - 1610: 64(fvec4) ConstantComposite 1053 1053 1053 1053 - 1611: 65 ConstantComposite 1610 1610 1610 1610 - 1790: TypePointer Private 8(int) - 1791(gs_ua): 1790(ptr) Variable Private - 1792(gs_ub): 1790(ptr) Variable Private - 1793(gs_uc): 1790(ptr) Variable Private - 1794: TypePointer Private 26(ivec2) - 1795(gs_ua2): 1794(ptr) Variable Private - 1796(gs_ub2): 1794(ptr) Variable Private - 1797(gs_uc2): 1794(ptr) Variable Private - 1798: TypePointer Private 38(ivec3) - 1799(gs_ua3): 1798(ptr) Variable Private - 1800(gs_ub3): 1798(ptr) Variable Private - 1801(gs_uc3): 1798(ptr) Variable Private - 1802: TypePointer Private 824(ivec4) - 1803(gs_ua4): 1802(ptr) Variable Private - 1804(gs_ub4): 1802(ptr) Variable Private - 1805(gs_uc4): 1802(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 Workgroup 8(int) + 1810(gs_ua): 1809(ptr) Variable Workgroup + 1811(gs_ub): 1809(ptr) Variable Workgroup + 1812(gs_uc): 1809(ptr) Variable Workgroup + 1813: TypePointer Workgroup 26(ivec2) + 1814(gs_ua2): 1813(ptr) Variable Workgroup + 1815(gs_ub2): 1813(ptr) Variable Workgroup + 1816(gs_uc2): 1813(ptr) Variable Workgroup + 1817: TypePointer Workgroup 38(ivec3) + 1818(gs_ua3): 1817(ptr) Variable Workgroup + 1819(gs_ub3): 1817(ptr) Variable Workgroup + 1820(gs_uc3): 1817(ptr) Variable Workgroup + 1821: TypePointer Workgroup 50(ivec4) + 1822(gs_ua4): 1821(ptr) Variable Workgroup + 1823(gs_ub4): 1821(ptr) Variable Workgroup + 1824(gs_uc4): 1821(ptr) Variable Workgroup + 4(main): 2 Function None 3 5: Label - 802(r000): 122(ptr) Variable Function - 807(r001): 91(ptr) Variable Function - 810(r002): 91(ptr) Variable Function - 813(r003): 122(ptr) Variable Function - 816(r004): 91(ptr) Variable Function - 821(r005): 820(ptr) Variable Function - 826(r006): 825(ptr) Variable Function - 829(r007): 91(ptr) Variable Function - 834(r009): 91(ptr) Variable Function - 837(r010): 91(ptr) Variable Function - 842(r011): 91(ptr) Variable Function - 845(r012): 91(ptr) Variable Function - 859(r013): 91(ptr) Variable Function - 862(r014): 91(ptr) Variable Function - 865(r015): 825(ptr) Variable Function - 868(r016): 91(ptr) Variable Function - 871(r017): 91(ptr) Variable Function - 874(r018): 91(ptr) Variable Function - 877(r019): 91(ptr) Variable Function - 880(r020): 91(ptr) Variable Function - 883(r021): 91(ptr) Variable Function - 886(r022): 91(ptr) Variable Function - 889(r023): 7(ptr) Variable Function - 893(r024): 7(ptr) Variable Function - 897(r025): 91(ptr) Variable Function - 909(r029): 91(ptr) Variable Function - 912(r030): 91(ptr) Variable Function - 915(r031): 91(ptr) Variable Function - 920(r032): 825(ptr) Variable Function - 925(r033): 825(ptr) Variable Function - 927(r034): 91(ptr) Variable Function - 930(r036): 91(ptr) Variable Function - 934(r037): 91(ptr) Variable Function - 937(r038): 91(ptr) Variable Function - 943(r039): 91(ptr) Variable Function - 947(r040): 946(ptr) Variable Function - 950(r041): 946(ptr) Variable Function - 953(r042): 91(ptr) Variable Function - 957(r039a): 91(ptr) Variable Function - 962(r043): 7(ptr) Variable Function - 965(r044): 91(ptr) Variable Function - 968(r045): 91(ptr) Variable Function - 972(r046): 91(ptr) Variable Function - 975(r047): 91(ptr) Variable Function - 979(r048): 91(ptr) Variable Function - 983(r049): 91(ptr) Variable Function - 986(r050): 91(ptr) Variable Function - 990(r051): 91(ptr) Variable Function - 993(r052): 91(ptr) Variable Function - 997(r053): 91(ptr) Variable Function - 1001(r054): 91(ptr) Variable Function - 1005(r055): 825(ptr) Variable Function - 1008(r056): 91(ptr) Variable Function - 1011(r057): 91(ptr) Variable Function - 1014(r058): 91(ptr) Variable Function - 1019(r059): 91(ptr) Variable Function - 1022(r060): 91(ptr) Variable Function - 1029(r061): 91(ptr) Variable Function - 1032(r062): 91(ptr) Variable Function - 1037(r063): 91(ptr) Variable Function - 1040(r064): 91(ptr) Variable Function - 1044(r065): 91(ptr) Variable Function - 1047(r066): 91(ptr) Variable Function - 1050(r067): 91(ptr) Variable Function - 805: 64(fvec4) Load 804(inF0) - 806: 121(bool) All 805 - Store 802(r000) 806 - 808: 64(fvec4) Load 804(inF0) - 809: 64(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 808 - Store 807(r001) 809 - 811: 64(fvec4) Load 804(inF0) - 812: 64(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 811 - Store 810(r002) 812 - 814: 64(fvec4) Load 804(inF0) - 815: 121(bool) Any 814 - Store 813(r003) 815 - 817: 64(fvec4) Load 804(inF0) - 818: 64(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 817 - Store 816(r004) 818 - 822: 64(fvec4) Load 804(inF0) - 823: 819(ivec4) Bitcast 822 - Store 821(r005) 823 - 827: 64(fvec4) Load 804(inF0) - 828: 824(ivec4) Bitcast 827 - Store 826(r006) 828 - 832: 824(ivec4) Load 831(inU0) - 833: 64(fvec4) Bitcast 832 - Store 829(r007) 833 - 835: 64(fvec4) Load 804(inF0) - 836: 64(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 835 - Store 834(r009) 836 - 838: 64(fvec4) Load 804(inF0) - 840: 64(fvec4) Load 839(inF1) - 841: 64(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 838 840 - Store 837(r010) 841 - 843: 64(fvec4) Load 804(inF0) - 844: 64(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 843 - Store 842(r011) 844 - 846: 64(fvec4) Load 804(inF0) - 847: 64(fvec4) Load 839(inF1) - 849: 64(fvec4) Load 848(inF2) - 850: 64(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 846 847 849 - Store 845(r012) 850 - 851: 64(fvec4) Load 804(inF0) - 854: 853(bvec4) FOrdLessThan 851 852 - 855: 121(bool) Any 854 - SelectionMerge 857 None - BranchConditional 855 856 857 - 856: Label - Kill - 857: Label - 860: 64(fvec4) Load 804(inF0) - 861: 64(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 860 - Store 859(r013) 861 - 863: 64(fvec4) Load 804(inF0) - 864: 64(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 863 - Store 862(r014) 864 - 867: 824(ivec4) BitCount 866 - Store 865(r015) 867 - 869: 64(fvec4) Load 804(inF0) - 870: 64(fvec4) DPdx 869 - Store 868(r016) 870 - 872: 64(fvec4) Load 804(inF0) - 873: 64(fvec4) DPdxCoarse 872 - Store 871(r017) 873 - 875: 64(fvec4) Load 804(inF0) - 876: 64(fvec4) DPdxFine 875 - Store 874(r018) 876 - 878: 64(fvec4) Load 804(inF0) - 879: 64(fvec4) DPdy 878 - Store 877(r019) 879 - 881: 64(fvec4) Load 804(inF0) - 882: 64(fvec4) DPdyCoarse 881 - Store 880(r020) 882 - 884: 64(fvec4) Load 804(inF0) - 885: 64(fvec4) DPdyFine 884 - Store 883(r021) 885 - 887: 64(fvec4) Load 804(inF0) - 888: 64(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 887 - Store 886(r022) 888 - 890: 64(fvec4) Load 804(inF0) - 891: 64(fvec4) Load 839(inF1) - 892: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 890 891 - Store 889(r023) 892 - 894: 64(fvec4) Load 804(inF0) - 895: 64(fvec4) Load 839(inF1) - 896: 6(float) Dot 894 895 - Store 893(r024) 896 - 899: 898(ptr) AccessChain 804(inF0) 512 - 900: 6(float) Load 899 - 901: 898(ptr) AccessChain 839(inF1) 512 - 902: 6(float) Load 901 - 903: 6(float) FMul 900 902 - 904: 898(ptr) AccessChain 804(inF0) 278 - 905: 6(float) Load 904 - 906: 898(ptr) AccessChain 839(inF1) 383 - 907: 6(float) Load 906 - 908: 64(fvec4) CompositeConstruct 274 903 905 907 - Store 897(r025) 908 - 910: 64(fvec4) Load 804(inF0) - 911: 64(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 910 - Store 909(r029) 911 - 913: 64(fvec4) Load 804(inF0) - 914: 64(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 913 - Store 912(r030) 914 - 916: 64(fvec4) Load 804(inF0) - 917: 64(fvec4) Load 839(inF1) - 918: 64(fvec4) Load 848(inF2) - 919: 64(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 916 917 918 - Store 915(r031) 919 - 924: 824(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 923 - Store 920(r032) 924 - 926: 824(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 923 - Store 925(r033) 926 - 928: 64(fvec4) Load 804(inF0) - 929: 64(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 928 - Store 927(r034) 929 - 931: 64(fvec4) Load 804(inF0) - 932: 64(fvec4) Load 839(inF1) - 933: 64(fvec4) FMod 931 932 - Store 930(r036) 933 - 935: 64(fvec4) Load 804(inF0) - 936: 64(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 935 - Store 934(r037) 936 - 938: 64(fvec4) Load 804(inF0) - 940:939(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 938 - 941: 819(ivec4) CompositeExtract 940 1 - Store 839(inF1) 941 - 942: 64(fvec4) CompositeExtract 940 0 - Store 937(r038) 942 - 944: 64(fvec4) Load 804(inF0) - 945: 64(fvec4) Fwidth 944 - Store 943(r039) 945 - 948: 64(fvec4) Load 804(inF0) - 949: 853(bvec4) IsInf 948 - Store 947(r040) 949 - 951: 64(fvec4) Load 804(inF0) - 952: 853(bvec4) IsNan 951 - Store 950(r041) 952 - 954: 64(fvec4) Load 804(inF0) - 955: 64(fvec4) Load 839(inF1) - 956: 64(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 954 955 - Store 953(r042) 956 - 958: 64(fvec4) Load 804(inF0) - 959: 64(fvec4) Load 839(inF1) - 960: 64(fvec4) Load 848(inF2) - 961: 64(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 958 959 960 - Store 957(r039a) 961 - 963: 64(fvec4) Load 804(inF0) - 964: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 963 - Store 962(r043) 964 - 966: 64(fvec4) Load 804(inF0) - 967: 64(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 966 - Store 965(r044) 967 - 969: 64(fvec4) Load 804(inF0) - 970: 64(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 969 - 971: 64(fvec4) VectorTimesScalar 970 253 - Store 968(r045) 971 - 973: 64(fvec4) Load 804(inF0) - 974: 64(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 973 - Store 972(r046) 974 - 976: 64(fvec4) Load 804(inF0) - 977: 64(fvec4) Load 839(inF1) - 978: 64(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 976 977 - Store 975(r047) 978 - 980: 64(fvec4) Load 804(inF0) - 981: 64(fvec4) Load 839(inF1) - 982: 64(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 980 981 - Store 979(r048) 982 - 984: 64(fvec4) Load 804(inF0) - 985: 64(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 984 - Store 983(r049) 985 - 987: 64(fvec4) Load 804(inF0) - 988: 64(fvec4) Load 839(inF1) - 989: 64(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 987 988 - Store 986(r050) 989 - 991: 64(fvec4) Load 804(inF0) - 992: 64(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 991 - Store 990(r051) 992 - 994: 64(fvec4) Load 804(inF0) - 995: 64(fvec4) CompositeConstruct 274 274 274 274 - 996: 64(fvec4) FDiv 995 994 - Store 993(r052) 996 - 998: 64(fvec4) Load 804(inF0) - 999: 64(fvec4) Load 839(inF1) - 1000: 64(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 998 999 - Store 997(r053) 1000 - 1002: 64(fvec4) Load 804(inF0) - 1003: 64(fvec4) Load 839(inF1) - 1004: 64(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1002 1003 509 - Store 1001(r054) 1004 - 1007: 824(ivec4) BitReverse 1006 - Store 1005(r055) 1007 - 1009: 64(fvec4) Load 804(inF0) - 1010: 64(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1009 - Store 1008(r056) 1010 - 1012: 64(fvec4) Load 804(inF0) - 1013: 64(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1012 - Store 1011(r057) 1013 - 1015: 64(fvec4) Load 804(inF0) - 1016: 64(fvec4) CompositeConstruct 165 165 165 165 - 1017: 64(fvec4) CompositeConstruct 274 274 274 274 - 1018: 64(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1015 1016 1017 - Store 1014(r058) 1018 - 1020: 64(fvec4) Load 804(inF0) - 1021: 64(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1020 - Store 1019(r059) 1021 - 1023: 64(fvec4) Load 804(inF0) - 1024: 64(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1023 - Store 1022(r060) 1024 - 1025: 64(fvec4) Load 804(inF0) - 1026: 64(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1025 - Store 839(inF1) 1026 - 1027: 64(fvec4) Load 804(inF0) - 1028: 64(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1027 - Store 848(inF2) 1028 - 1030: 64(fvec4) Load 804(inF0) - 1031: 64(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1030 - Store 1029(r061) 1031 - 1033: 64(fvec4) Load 804(inF0) - 1034: 64(fvec4) Load 839(inF1) - 1035: 64(fvec4) Load 848(inF2) - 1036: 64(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1033 1034 1035 - Store 1032(r062) 1036 - 1038: 64(fvec4) Load 804(inF0) - 1039: 64(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1038 - Store 1037(r063) 1039 - 1041: 64(fvec4) Load 804(inF0) - 1042: 64(fvec4) Load 839(inF1) - 1043: 64(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1041 1042 - Store 1040(r064) 1043 - 1045: 64(fvec4) Load 804(inF0) - 1046: 64(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1045 - Store 1044(r065) 1046 - 1048: 64(fvec4) Load 804(inF0) - 1049: 64(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1048 - Store 1047(r066) 1049 - 1051: 64(fvec4) Load 804(inF0) - 1052: 64(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1051 - Store 1050(r067) 1052 - ReturnValue 1054 + 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 @@ -6507,266 +6283,266 @@ gl_FragCoord origin is upper left 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 @@ -6775,295 +6551,295 @@ gl_FragCoord origin is upper left 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 @@ -7072,1272 +6848,1587 @@ gl_FragCoord origin is upper left 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(r043): 7(ptr) Variable Function - 710(r044): 37(ptr) Variable Function - 713(r045): 37(ptr) Variable Function - 717(r046): 37(ptr) Variable Function - 720(r047): 37(ptr) Variable Function - 724(r048): 37(ptr) Variable Function - 728(r049): 37(ptr) Variable Function - 731(r050): 37(ptr) Variable Function - 735(r051): 37(ptr) Variable Function - 738(r052): 37(ptr) Variable Function - 742(r053): 37(ptr) Variable Function - 746(r054): 37(ptr) Variable Function - 750(r055): 39(ptr) Variable Function - 753(r056): 37(ptr) Variable Function - 756(r057): 37(ptr) Variable Function - 759(r058): 37(ptr) Variable Function - 764(r059): 37(ptr) Variable Function - 767(r060): 37(ptr) Variable Function - 774(r061): 37(ptr) Variable Function - 777(r062): 37(ptr) Variable Function - 782(r063): 37(ptr) Variable Function - 785(r064): 37(ptr) Variable Function - 789(r065): 37(ptr) Variable Function - 792(r066): 37(ptr) Variable Function - 795(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: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 708 - Store 707(r043) 709 - 711: 36(fvec3) Load 41(inF0) - 712: 36(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 711 - Store 710(r044) 712 - 714: 36(fvec3) Load 41(inF0) - 715: 36(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 714 - 716: 36(fvec3) VectorTimesScalar 715 253 - Store 713(r045) 716 + 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) ExtInst 1(GLSL.std.450) 30(Log2) 718 - Store 717(r046) 719 - 721: 36(fvec3) Load 41(inF0) - 722: 36(fvec3) Load 42(inF1) - 723: 36(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 721 722 - Store 720(r047) 723 - 725: 36(fvec3) Load 41(inF0) - 726: 36(fvec3) Load 42(inF1) - 727: 36(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 725 726 - Store 724(r048) 727 - 729: 36(fvec3) Load 41(inF0) - 730: 36(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 729 - Store 728(r049) 730 - 732: 36(fvec3) Load 41(inF0) - 733: 36(fvec3) Load 42(inF1) - 734: 36(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 732 733 - Store 731(r050) 734 - 736: 36(fvec3) Load 41(inF0) - 737: 36(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 736 - Store 735(r051) 737 - 739: 36(fvec3) Load 41(inF0) - 740: 36(fvec3) CompositeConstruct 274 274 274 - 741: 36(fvec3) FDiv 740 739 - Store 738(r052) 741 - 743: 36(fvec3) Load 41(inF0) - 744: 36(fvec3) Load 42(inF1) - 745: 36(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 743 744 - Store 742(r053) 745 - 747: 36(fvec3) Load 41(inF0) - 748: 36(fvec3) Load 42(inF1) - 749: 36(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 747 748 509 - Store 746(r054) 749 - 752: 38(ivec3) BitReverse 751 - Store 750(r055) 752 - 754: 36(fvec3) Load 41(inF0) - 755: 36(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 754 - Store 753(r056) 755 - 757: 36(fvec3) Load 41(inF0) - 758: 36(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 757 - Store 756(r057) 758 - 760: 36(fvec3) Load 41(inF0) - 761: 36(fvec3) CompositeConstruct 165 165 165 - 762: 36(fvec3) CompositeConstruct 274 274 274 - 763: 36(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 760 761 762 - Store 759(r058) 763 - 765: 36(fvec3) Load 41(inF0) - 766: 36(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 765 - Store 764(r059) 766 - 768: 36(fvec3) Load 41(inF0) - 769: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 768 - Store 767(r060) 769 + 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: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 724 + Store 723(r043) 725 + 727: 36(fvec3) Load 41(inF0) + 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) 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) 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) 13(Sin) 770 - Store 42(inF1) 771 - 772: 36(fvec3) Load 41(inF0) - 773: 36(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 772 - Store 43(inF2) 773 - 775: 36(fvec3) Load 41(inF0) - 776: 36(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 775 - Store 774(r061) 776 - 778: 36(fvec3) Load 41(inF0) - 779: 36(fvec3) Load 42(inF1) - 780: 36(fvec3) Load 43(inF2) - 781: 36(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 778 779 780 - Store 777(r062) 781 - 783: 36(fvec3) Load 41(inF0) - 784: 36(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 783 - Store 782(r063) 784 + 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) 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) 6(FSign) 781 + Store 780(r059) 782 + 784: 36(fvec3) Load 41(inF0) + 785: 36(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 784 + Store 783(r060) 785 786: 36(fvec3) Load 41(inF0) - 787: 36(fvec3) Load 42(inF1) - 788: 36(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 786 787 - Store 785(r064) 788 - 790: 36(fvec3) Load 41(inF0) - 791: 36(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 790 - Store 789(r065) 791 - 793: 36(fvec3) Load 41(inF0) - 794: 36(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 793 - Store 792(r066) 794 - 796: 36(fvec3) Load 41(inF0) - 797: 36(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 796 - Store 795(r067) 797 - ReturnValue 799 + 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) 31(Sqrt) 799 + Store 798(r063) 800 + 802: 36(fvec3) Load 41(inF0) + 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 - 1056(r000): 122(ptr) Variable Function - 1059(r001): 49(ptr) Variable Function - 1064(r003): 122(ptr) Variable Function - 1067(r004): 49(ptr) Variable Function - 1070(r005): 49(ptr) Variable Function - 1073(r006): 49(ptr) Variable Function - 1077(r007): 49(ptr) Variable Function - 1088(r008): 49(ptr) Variable Function - 1093(r009): 49(ptr) Variable Function - 1096(r010): 49(ptr) Variable Function - 1099(r011): 49(ptr) Variable Function - 1102(r012): 49(ptr) Variable Function - 1105(r013): 49(ptr) Variable Function - 1108(r014): 49(ptr) Variable Function - 1111(r015): 49(ptr) Variable Function - 1114(r016): 49(ptr) Variable Function - 1117(r017): 49(ptr) Variable Function - 1120(r018): 7(ptr) Variable Function - 1123(r019): 49(ptr) Variable Function - 1126(R020): 49(ptr) Variable Function - 1129(r021): 49(ptr) Variable Function - 1132(r022): 49(ptr) Variable Function - 1142(r023): 49(ptr) Variable Function - 1145(r024): 49(ptr) Variable Function - 1151(r025): 49(ptr) Variable Function - 1154(r026): 49(ptr) Variable Function - 1158(r026a): 49(ptr) Variable Function - 1163(r027): 49(ptr) Variable Function - 1166(r028): 49(ptr) Variable Function - 1170(r029): 49(ptr) Variable Function - 1173(r030): 49(ptr) Variable Function - 1177(r031): 49(ptr) Variable Function - 1181(r032): 49(ptr) Variable Function - 1185(r033): 49(ptr) Variable Function - 1188(r034): 49(ptr) Variable Function - 1191(r035): 49(ptr) Variable Function - 1194(r036): 49(ptr) Variable Function - 1199(r037): 49(ptr) Variable Function - 1202(r038): 49(ptr) Variable Function - 1209(r039): 49(ptr) Variable Function - 1212(r049): 49(ptr) Variable Function - 1217(r041): 49(ptr) Variable Function - 1220(r042): 49(ptr) Variable Function - 1224(r043): 49(ptr) Variable Function - 1227(r044): 49(ptr) Variable Function - 1232(r046): 49(ptr) Variable Function - 1057: 48 Load 51(inF0) - 1058: 121(bool) All 1057 - Store 1056(r000) 1058 - 1060: 48 Load 51(inF0) - 1061: 48 ExtInst 1(GLSL.std.450) 4(FAbs) 1060 - Store 1059(r001) 1061 - 1062: 48 Load 51(inF0) - 1063: 48 ExtInst 1(GLSL.std.450) 17(Acos) 1062 - 1065: 48 Load 51(inF0) - 1066: 121(bool) Any 1065 - Store 1064(r003) 1066 - 1068: 48 Load 51(inF0) - 1069: 48 ExtInst 1(GLSL.std.450) 16(Asin) 1068 - Store 1067(r004) 1069 - 1071: 48 Load 51(inF0) - 1072: 48 ExtInst 1(GLSL.std.450) 18(Atan) 1071 - Store 1070(r005) 1072 - 1074: 48 Load 51(inF0) - 1075: 48 Load 52(inF1) - 1076: 48 ExtInst 1(GLSL.std.450) 25(Atan2) 1074 1075 - Store 1073(r006) 1076 - 1078: 48 Load 51(inF0) - 1079: 48 ExtInst 1(GLSL.std.450) 9(Ceil) 1078 - Store 1077(r007) 1079 - 1080: 48 Load 51(inF0) - 1083: 1082 FOrdLessThan 1080 1081 - 1084: 121(bool) Any 1083 - SelectionMerge 1086 None - BranchConditional 1084 1085 1086 - 1085: 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 - 1086: Label - 1089: 48 Load 51(inF0) - 1090: 48 Load 52(inF1) - 1091: 48 Load 53(inF2) - 1092: 48 ExtInst 1(GLSL.std.450) 43(FClamp) 1089 1090 1091 - Store 1088(r008) 1092 - 1094: 48 Load 51(inF0) - 1095: 48 ExtInst 1(GLSL.std.450) 14(Cos) 1094 - Store 1093(r009) 1095 - 1097: 48 Load 51(inF0) - 1098: 48 ExtInst 1(GLSL.std.450) 20(Cosh) 1097 - Store 1096(r010) 1098 - 1100: 48 Load 51(inF0) - 1101: 48 DPdx 1100 - Store 1099(r011) 1101 - 1103: 48 Load 51(inF0) - 1104: 48 DPdxCoarse 1103 - Store 1102(r012) 1104 - 1106: 48 Load 51(inF0) - 1107: 48 DPdxFine 1106 - Store 1105(r013) 1107 - 1109: 48 Load 51(inF0) - 1110: 48 DPdy 1109 - Store 1108(r014) 1110 - 1112: 48 Load 51(inF0) - 1113: 48 DPdyCoarse 1112 - Store 1111(r015) 1113 - 1115: 48 Load 51(inF0) - 1116: 48 DPdyFine 1115 - Store 1114(r016) 1116 - 1118: 48 Load 51(inF0) - 1119: 48 ExtInst 1(GLSL.std.450) 12(Degrees) 1118 - Store 1117(r017) 1119 - 1121: 48 Load 51(inF0) - 1122: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1121 - Store 1120(r018) 1122 - 1124: 48 Load 51(inF0) - 1125: 48 ExtInst 1(GLSL.std.450) 27(Exp) 1124 - Store 1123(r019) 1125 - 1127: 48 Load 51(inF0) - 1128: 48 ExtInst 1(GLSL.std.450) 29(Exp2) 1127 - Store 1126(R020) 1128 - 1130: 48 Load 51(inF0) - 1131: 48 ExtInst 1(GLSL.std.450) 8(Floor) 1130 - Store 1129(r021) 1131 - 1133: 48 Load 51(inF0) - 1134: 48 Load 52(inF1) - 1135: 24(fvec2) CompositeExtract 1133 0 - 1136: 24(fvec2) CompositeExtract 1134 0 - 1137: 24(fvec2) FMod 1135 1136 - 1138: 24(fvec2) CompositeExtract 1133 1 - 1139: 24(fvec2) CompositeExtract 1134 1 - 1140: 24(fvec2) FMod 1138 1139 - 1141: 48 CompositeConstruct 1137 1140 - Store 1132(r022) 1141 - 1143: 48 Load 51(inF0) - 1144: 48 ExtInst 1(GLSL.std.450) 10(Fract) 1143 - Store 1142(r023) 1144 - 1146: 48 Load 51(inF0) - 1148:1147(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1146 - 1149: 342(ivec2) CompositeExtract 1148 1 - Store 52(inF1) 1149 - 1150: 48 CompositeExtract 1148 0 - Store 1145(r024) 1150 - 1152: 48 Load 51(inF0) - 1153: 48 Fwidth 1152 - Store 1151(r025) 1153 - 1155: 48 Load 51(inF0) - 1156: 48 Load 52(inF1) - 1157: 48 ExtInst 1(GLSL.std.450) 53(Ldexp) 1155 1156 - Store 1154(r026) 1157 - 1159: 48 Load 51(inF0) - 1160: 48 Load 52(inF1) - 1161: 48 Load 53(inF2) - 1162: 48 ExtInst 1(GLSL.std.450) 46(FMix) 1159 1160 1161 - Store 1158(r026a) 1162 - 1164: 48 Load 51(inF0) - 1165: 48 ExtInst 1(GLSL.std.450) 28(Log) 1164 - Store 1163(r027) 1165 - 1167: 48 Load 51(inF0) - 1168: 48 ExtInst 1(GLSL.std.450) 30(Log2) 1167 - 1169: 48 MatrixTimesScalar 1168 253 - Store 1166(r028) 1169 - 1171: 48 Load 51(inF0) - 1172: 48 ExtInst 1(GLSL.std.450) 30(Log2) 1171 - Store 1170(r029) 1172 - 1174: 48 Load 51(inF0) - 1175: 48 Load 52(inF1) - 1176: 48 ExtInst 1(GLSL.std.450) 40(FMax) 1174 1175 - Store 1173(r030) 1176 - 1178: 48 Load 51(inF0) - 1179: 48 Load 52(inF1) - 1180: 48 ExtInst 1(GLSL.std.450) 37(FMin) 1178 1179 - Store 1177(r031) 1180 - 1182: 48 Load 51(inF0) - 1183: 48 Load 52(inF1) - 1184: 48 ExtInst 1(GLSL.std.450) 26(Pow) 1182 1183 - Store 1181(r032) 1184 - 1186: 48 Load 51(inF0) - 1187: 48 ExtInst 1(GLSL.std.450) 11(Radians) 1186 - Store 1185(r033) 1187 - 1189: 48 Load 51(inF0) - 1190: 48 ExtInst 1(GLSL.std.450) 2(RoundEven) 1189 - Store 1188(r034) 1190 - 1192: 48 Load 51(inF0) - 1193: 48 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1192 - Store 1191(r035) 1193 - 1195: 48 Load 51(inF0) - 1196: 24(fvec2) CompositeConstruct 165 165 - 1197: 24(fvec2) CompositeConstruct 274 274 - 1198: 48 ExtInst 1(GLSL.std.450) 43(FClamp) 1195 1196 1197 - Store 1194(r036) 1198 - 1200: 48 Load 51(inF0) - 1201: 48 ExtInst 1(GLSL.std.450) 6(FSign) 1200 - Store 1199(r037) 1201 - 1203: 48 Load 51(inF0) - 1204: 48 ExtInst 1(GLSL.std.450) 13(Sin) 1203 - Store 1202(r038) 1204 - 1205: 48 Load 51(inF0) - 1206: 48 ExtInst 1(GLSL.std.450) 13(Sin) 1205 - Store 52(inF1) 1206 - 1207: 48 Load 51(inF0) - 1208: 48 ExtInst 1(GLSL.std.450) 14(Cos) 1207 - Store 53(inF2) 1208 - 1210: 48 Load 51(inF0) - 1211: 48 ExtInst 1(GLSL.std.450) 19(Sinh) 1210 - Store 1209(r039) 1211 - 1213: 48 Load 51(inF0) - 1214: 48 Load 52(inF1) - 1215: 48 Load 53(inF2) - 1216: 48 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1213 1214 1215 - Store 1212(r049) 1216 - 1218: 48 Load 51(inF0) - 1219: 48 ExtInst 1(GLSL.std.450) 31(Sqrt) 1218 - Store 1217(r041) 1219 - 1221: 48 Load 51(inF0) - 1222: 48 Load 52(inF1) - 1223: 48 ExtInst 1(GLSL.std.450) 48(Step) 1221 1222 - Store 1220(r042) 1223 - 1225: 48 Load 51(inF0) - 1226: 48 ExtInst 1(GLSL.std.450) 15(Tan) 1225 - Store 1224(r043) 1226 - 1228: 48 Load 51(inF0) - 1229: 48 ExtInst 1(GLSL.std.450) 21(Tanh) 1228 - Store 1227(r044) 1229 - 1230: 48 Load 51(inF0) - 1231: 48 Transpose 1230 - 1233: 48 Load 51(inF0) - 1234: 48 ExtInst 1(GLSL.std.450) 3(Trunc) 1233 - Store 1232(r046) 1234 - ReturnValue 1236 + 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 - 1239(r000): 122(ptr) Variable Function - 1242(r001): 57(ptr) Variable Function - 1247(r003): 122(ptr) Variable Function - 1250(r004): 57(ptr) Variable Function - 1253(r005): 57(ptr) Variable Function - 1256(r006): 57(ptr) Variable Function - 1260(r007): 57(ptr) Variable Function - 1271(r008): 57(ptr) Variable Function - 1276(r009): 57(ptr) Variable Function - 1279(r010): 57(ptr) Variable Function - 1282(r011): 57(ptr) Variable Function - 1285(r012): 57(ptr) Variable Function - 1288(r013): 57(ptr) Variable Function - 1291(r014): 57(ptr) Variable Function - 1294(r015): 57(ptr) Variable Function - 1297(r016): 57(ptr) Variable Function - 1300(r017): 57(ptr) Variable Function - 1303(r018): 7(ptr) Variable Function - 1306(r019): 57(ptr) Variable Function - 1309(R020): 57(ptr) Variable Function - 1312(r021): 57(ptr) Variable Function - 1315(r022): 57(ptr) Variable Function - 1328(r023): 57(ptr) Variable Function - 1331(r024): 57(ptr) Variable Function - 1337(r025): 57(ptr) Variable Function - 1340(r026): 57(ptr) Variable Function - 1344(r026a): 57(ptr) Variable Function - 1349(r027): 57(ptr) Variable Function - 1352(r028): 57(ptr) Variable Function - 1356(r029): 57(ptr) Variable Function - 1359(r030): 57(ptr) Variable Function - 1363(r031): 57(ptr) Variable Function - 1367(r032): 57(ptr) Variable Function - 1371(r033): 57(ptr) Variable Function - 1374(r034): 57(ptr) Variable Function - 1377(r035): 57(ptr) Variable Function - 1380(r036): 57(ptr) Variable Function - 1385(r037): 57(ptr) Variable Function - 1388(r038): 57(ptr) Variable Function - 1395(r039): 57(ptr) Variable Function - 1398(r049): 57(ptr) Variable Function - 1403(r041): 57(ptr) Variable Function - 1406(r042): 57(ptr) Variable Function - 1410(r043): 57(ptr) Variable Function - 1413(r044): 57(ptr) Variable Function - 1418(r046): 57(ptr) Variable Function - 1240: 56 Load 59(inF0) - 1241: 121(bool) All 1240 - Store 1239(r000) 1241 - 1243: 56 Load 59(inF0) - 1244: 56 ExtInst 1(GLSL.std.450) 4(FAbs) 1243 - Store 1242(r001) 1244 - 1245: 56 Load 59(inF0) - 1246: 56 ExtInst 1(GLSL.std.450) 17(Acos) 1245 - 1248: 56 Load 59(inF0) - 1249: 121(bool) Any 1248 - Store 1247(r003) 1249 - 1251: 56 Load 59(inF0) - 1252: 56 ExtInst 1(GLSL.std.450) 16(Asin) 1251 - Store 1250(r004) 1252 - 1254: 56 Load 59(inF0) - 1255: 56 ExtInst 1(GLSL.std.450) 18(Atan) 1254 - Store 1253(r005) 1255 - 1257: 56 Load 59(inF0) - 1258: 56 Load 60(inF1) - 1259: 56 ExtInst 1(GLSL.std.450) 25(Atan2) 1257 1258 - Store 1256(r006) 1259 - 1261: 56 Load 59(inF0) - 1262: 56 ExtInst 1(GLSL.std.450) 9(Ceil) 1261 - Store 1260(r007) 1262 - 1263: 56 Load 59(inF0) - 1266: 1265 FOrdLessThan 1263 1264 - 1267: 121(bool) Any 1266 - SelectionMerge 1269 None - BranchConditional 1267 1268 1269 - 1268: 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 - 1269: Label - 1272: 56 Load 59(inF0) - 1273: 56 Load 60(inF1) - 1274: 56 Load 61(inF2) - 1275: 56 ExtInst 1(GLSL.std.450) 43(FClamp) 1272 1273 1274 - Store 1271(r008) 1275 - 1277: 56 Load 59(inF0) - 1278: 56 ExtInst 1(GLSL.std.450) 14(Cos) 1277 - Store 1276(r009) 1278 - 1280: 56 Load 59(inF0) - 1281: 56 ExtInst 1(GLSL.std.450) 20(Cosh) 1280 - Store 1279(r010) 1281 - 1283: 56 Load 59(inF0) - 1284: 56 DPdx 1283 - Store 1282(r011) 1284 - 1286: 56 Load 59(inF0) - 1287: 56 DPdxCoarse 1286 - Store 1285(r012) 1287 - 1289: 56 Load 59(inF0) - 1290: 56 DPdxFine 1289 - Store 1288(r013) 1290 - 1292: 56 Load 59(inF0) - 1293: 56 DPdy 1292 - Store 1291(r014) 1293 - 1295: 56 Load 59(inF0) - 1296: 56 DPdyCoarse 1295 - Store 1294(r015) 1296 - 1298: 56 Load 59(inF0) - 1299: 56 DPdyFine 1298 - Store 1297(r016) 1299 - 1301: 56 Load 59(inF0) - 1302: 56 ExtInst 1(GLSL.std.450) 12(Degrees) 1301 - Store 1300(r017) 1302 - 1304: 56 Load 59(inF0) - 1305: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1304 - Store 1303(r018) 1305 - 1307: 56 Load 59(inF0) - 1308: 56 ExtInst 1(GLSL.std.450) 27(Exp) 1307 - Store 1306(r019) 1308 - 1310: 56 Load 59(inF0) - 1311: 56 ExtInst 1(GLSL.std.450) 29(Exp2) 1310 - Store 1309(R020) 1311 - 1313: 56 Load 59(inF0) - 1314: 56 ExtInst 1(GLSL.std.450) 8(Floor) 1313 - Store 1312(r021) 1314 - 1316: 56 Load 59(inF0) - 1317: 56 Load 60(inF1) - 1318: 36(fvec3) CompositeExtract 1316 0 - 1319: 36(fvec3) CompositeExtract 1317 0 - 1320: 36(fvec3) FMod 1318 1319 - 1321: 36(fvec3) CompositeExtract 1316 1 - 1322: 36(fvec3) CompositeExtract 1317 1 - 1323: 36(fvec3) FMod 1321 1322 - 1324: 36(fvec3) CompositeExtract 1316 2 - 1325: 36(fvec3) CompositeExtract 1317 2 - 1326: 36(fvec3) FMod 1324 1325 - 1327: 56 CompositeConstruct 1320 1323 1326 - Store 1315(r022) 1327 - 1329: 56 Load 59(inF0) - 1330: 56 ExtInst 1(GLSL.std.450) 10(Fract) 1329 - Store 1328(r023) 1330 - 1332: 56 Load 59(inF0) - 1334:1333(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1332 - 1335: 578(ivec3) CompositeExtract 1334 1 - Store 60(inF1) 1335 - 1336: 56 CompositeExtract 1334 0 - Store 1331(r024) 1336 - 1338: 56 Load 59(inF0) - 1339: 56 Fwidth 1338 - Store 1337(r025) 1339 - 1341: 56 Load 59(inF0) - 1342: 56 Load 60(inF1) - 1343: 56 ExtInst 1(GLSL.std.450) 53(Ldexp) 1341 1342 - Store 1340(r026) 1343 - 1345: 56 Load 59(inF0) - 1346: 56 Load 60(inF1) - 1347: 56 Load 61(inF2) - 1348: 56 ExtInst 1(GLSL.std.450) 46(FMix) 1345 1346 1347 - Store 1344(r026a) 1348 - 1350: 56 Load 59(inF0) - 1351: 56 ExtInst 1(GLSL.std.450) 28(Log) 1350 - Store 1349(r027) 1351 - 1353: 56 Load 59(inF0) - 1354: 56 ExtInst 1(GLSL.std.450) 30(Log2) 1353 - 1355: 56 MatrixTimesScalar 1354 253 - Store 1352(r028) 1355 - 1357: 56 Load 59(inF0) - 1358: 56 ExtInst 1(GLSL.std.450) 30(Log2) 1357 - Store 1356(r029) 1358 - 1360: 56 Load 59(inF0) - 1361: 56 Load 60(inF1) - 1362: 56 ExtInst 1(GLSL.std.450) 40(FMax) 1360 1361 - Store 1359(r030) 1362 - 1364: 56 Load 59(inF0) - 1365: 56 Load 60(inF1) - 1366: 56 ExtInst 1(GLSL.std.450) 37(FMin) 1364 1365 - Store 1363(r031) 1366 - 1368: 56 Load 59(inF0) - 1369: 56 Load 60(inF1) - 1370: 56 ExtInst 1(GLSL.std.450) 26(Pow) 1368 1369 - Store 1367(r032) 1370 - 1372: 56 Load 59(inF0) - 1373: 56 ExtInst 1(GLSL.std.450) 11(Radians) 1372 - Store 1371(r033) 1373 - 1375: 56 Load 59(inF0) - 1376: 56 ExtInst 1(GLSL.std.450) 2(RoundEven) 1375 - Store 1374(r034) 1376 - 1378: 56 Load 59(inF0) - 1379: 56 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1378 - Store 1377(r035) 1379 - 1381: 56 Load 59(inF0) - 1382: 36(fvec3) CompositeConstruct 165 165 165 - 1383: 36(fvec3) CompositeConstruct 274 274 274 - 1384: 56 ExtInst 1(GLSL.std.450) 43(FClamp) 1381 1382 1383 - Store 1380(r036) 1384 - 1386: 56 Load 59(inF0) - 1387: 56 ExtInst 1(GLSL.std.450) 6(FSign) 1386 - Store 1385(r037) 1387 - 1389: 56 Load 59(inF0) - 1390: 56 ExtInst 1(GLSL.std.450) 13(Sin) 1389 - Store 1388(r038) 1390 - 1391: 56 Load 59(inF0) - 1392: 56 ExtInst 1(GLSL.std.450) 13(Sin) 1391 - Store 60(inF1) 1392 - 1393: 56 Load 59(inF0) - 1394: 56 ExtInst 1(GLSL.std.450) 14(Cos) 1393 - Store 61(inF2) 1394 - 1396: 56 Load 59(inF0) - 1397: 56 ExtInst 1(GLSL.std.450) 19(Sinh) 1396 - Store 1395(r039) 1397 - 1399: 56 Load 59(inF0) - 1400: 56 Load 60(inF1) - 1401: 56 Load 61(inF2) - 1402: 56 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1399 1400 1401 - Store 1398(r049) 1402 - 1404: 56 Load 59(inF0) - 1405: 56 ExtInst 1(GLSL.std.450) 31(Sqrt) 1404 - Store 1403(r041) 1405 - 1407: 56 Load 59(inF0) - 1408: 56 Load 60(inF1) - 1409: 56 ExtInst 1(GLSL.std.450) 48(Step) 1407 1408 - Store 1406(r042) 1409 - 1411: 56 Load 59(inF0) - 1412: 56 ExtInst 1(GLSL.std.450) 15(Tan) 1411 - Store 1410(r043) 1412 - 1414: 56 Load 59(inF0) - 1415: 56 ExtInst 1(GLSL.std.450) 21(Tanh) 1414 - Store 1413(r044) 1415 - 1416: 56 Load 59(inF0) - 1417: 56 Transpose 1416 - 1419: 56 Load 59(inF0) - 1420: 56 ExtInst 1(GLSL.std.450) 3(Trunc) 1419 - Store 1418(r046) 1420 - ReturnValue 1422 + 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 - 1425(r000): 122(ptr) Variable Function - 1428(r001): 66(ptr) Variable Function - 1433(r003): 122(ptr) Variable Function - 1436(r004): 66(ptr) Variable Function - 1439(r005): 66(ptr) Variable Function - 1442(r006): 66(ptr) Variable Function - 1446(r007): 66(ptr) Variable Function - 1457(r008): 66(ptr) Variable Function - 1462(r009): 66(ptr) Variable Function - 1465(r010): 66(ptr) Variable Function - 1468(r011): 66(ptr) Variable Function - 1471(r012): 66(ptr) Variable Function - 1474(r013): 66(ptr) Variable Function - 1477(r014): 66(ptr) Variable Function - 1480(r015): 66(ptr) Variable Function - 1483(r016): 66(ptr) Variable Function - 1486(r017): 66(ptr) Variable Function - 1489(r018): 7(ptr) Variable Function - 1492(r019): 66(ptr) Variable Function - 1495(R020): 66(ptr) Variable Function - 1498(r021): 66(ptr) Variable Function - 1501(r022): 66(ptr) Variable Function - 1517(r023): 66(ptr) Variable Function - 1520(r024): 66(ptr) Variable Function - 1526(r025): 66(ptr) Variable Function - 1529(r026): 66(ptr) Variable Function - 1533(r026a): 66(ptr) Variable Function - 1538(r027): 66(ptr) Variable Function - 1541(r028): 66(ptr) Variable Function - 1545(r029): 66(ptr) Variable Function - 1548(r030): 66(ptr) Variable Function - 1552(r031): 66(ptr) Variable Function - 1556(r032): 66(ptr) Variable Function - 1560(r033): 66(ptr) Variable Function - 1563(r034): 66(ptr) Variable Function - 1566(r035): 66(ptr) Variable Function - 1569(r036): 66(ptr) Variable Function - 1574(r037): 66(ptr) Variable Function - 1577(r038): 66(ptr) Variable Function - 1584(r039): 66(ptr) Variable Function - 1587(r049): 66(ptr) Variable Function - 1592(r041): 66(ptr) Variable Function - 1595(r042): 66(ptr) Variable Function - 1599(r043): 66(ptr) Variable Function - 1602(r044): 66(ptr) Variable Function - 1607(r046): 66(ptr) Variable Function - 1426: 65 Load 68(inF0) - 1427: 121(bool) All 1426 - Store 1425(r000) 1427 - 1429: 65 Load 68(inF0) - 1430: 65 ExtInst 1(GLSL.std.450) 4(FAbs) 1429 - Store 1428(r001) 1430 - 1431: 65 Load 68(inF0) - 1432: 65 ExtInst 1(GLSL.std.450) 17(Acos) 1431 - 1434: 65 Load 68(inF0) - 1435: 121(bool) Any 1434 - Store 1433(r003) 1435 - 1437: 65 Load 68(inF0) - 1438: 65 ExtInst 1(GLSL.std.450) 16(Asin) 1437 - Store 1436(r004) 1438 - 1440: 65 Load 68(inF0) - 1441: 65 ExtInst 1(GLSL.std.450) 18(Atan) 1440 - Store 1439(r005) 1441 - 1443: 65 Load 68(inF0) - 1444: 65 Load 69(inF1) - 1445: 65 ExtInst 1(GLSL.std.450) 25(Atan2) 1443 1444 - Store 1442(r006) 1445 - 1447: 65 Load 68(inF0) - 1448: 65 ExtInst 1(GLSL.std.450) 9(Ceil) 1447 - Store 1446(r007) 1448 - 1449: 65 Load 68(inF0) - 1452: 1451 FOrdLessThan 1449 1450 - 1453: 121(bool) Any 1452 - SelectionMerge 1455 None - BranchConditional 1453 1454 1455 - 1454: 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 - 1455: Label - 1458: 65 Load 68(inF0) - 1459: 65 Load 69(inF1) - 1460: 65 Load 70(inF2) - 1461: 65 ExtInst 1(GLSL.std.450) 43(FClamp) 1458 1459 1460 - Store 1457(r008) 1461 - 1463: 65 Load 68(inF0) - 1464: 65 ExtInst 1(GLSL.std.450) 14(Cos) 1463 - Store 1462(r009) 1464 - 1466: 65 Load 68(inF0) - 1467: 65 ExtInst 1(GLSL.std.450) 20(Cosh) 1466 - Store 1465(r010) 1467 - 1469: 65 Load 68(inF0) - 1470: 65 DPdx 1469 - Store 1468(r011) 1470 - 1472: 65 Load 68(inF0) - 1473: 65 DPdxCoarse 1472 - Store 1471(r012) 1473 - 1475: 65 Load 68(inF0) - 1476: 65 DPdxFine 1475 - Store 1474(r013) 1476 - 1478: 65 Load 68(inF0) - 1479: 65 DPdy 1478 - Store 1477(r014) 1479 - 1481: 65 Load 68(inF0) - 1482: 65 DPdyCoarse 1481 - Store 1480(r015) 1482 - 1484: 65 Load 68(inF0) - 1485: 65 DPdyFine 1484 - Store 1483(r016) 1485 - 1487: 65 Load 68(inF0) - 1488: 65 ExtInst 1(GLSL.std.450) 12(Degrees) 1487 - Store 1486(r017) 1488 - 1490: 65 Load 68(inF0) - 1491: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1490 - Store 1489(r018) 1491 - 1493: 65 Load 68(inF0) - 1494: 65 ExtInst 1(GLSL.std.450) 27(Exp) 1493 - Store 1492(r019) 1494 - 1496: 65 Load 68(inF0) - 1497: 65 ExtInst 1(GLSL.std.450) 29(Exp2) 1496 - Store 1495(R020) 1497 - 1499: 65 Load 68(inF0) - 1500: 65 ExtInst 1(GLSL.std.450) 8(Floor) 1499 - Store 1498(r021) 1500 - 1502: 65 Load 68(inF0) - 1503: 65 Load 69(inF1) - 1504: 64(fvec4) CompositeExtract 1502 0 - 1505: 64(fvec4) CompositeExtract 1503 0 - 1506: 64(fvec4) FMod 1504 1505 - 1507: 64(fvec4) CompositeExtract 1502 1 - 1508: 64(fvec4) CompositeExtract 1503 1 - 1509: 64(fvec4) FMod 1507 1508 - 1510: 64(fvec4) CompositeExtract 1502 2 - 1511: 64(fvec4) CompositeExtract 1503 2 - 1512: 64(fvec4) FMod 1510 1511 - 1513: 64(fvec4) CompositeExtract 1502 3 - 1514: 64(fvec4) CompositeExtract 1503 3 - 1515: 64(fvec4) FMod 1513 1514 - 1516: 65 CompositeConstruct 1506 1509 1512 1515 - Store 1501(r022) 1516 - 1518: 65 Load 68(inF0) - 1519: 65 ExtInst 1(GLSL.std.450) 10(Fract) 1518 - Store 1517(r023) 1519 - 1521: 65 Load 68(inF0) - 1523:1522(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 1521 - 1524: 819(ivec4) CompositeExtract 1523 1 - Store 69(inF1) 1524 - 1525: 65 CompositeExtract 1523 0 - Store 1520(r024) 1525 - 1527: 65 Load 68(inF0) - 1528: 65 Fwidth 1527 - Store 1526(r025) 1528 - 1530: 65 Load 68(inF0) - 1531: 65 Load 69(inF1) - 1532: 65 ExtInst 1(GLSL.std.450) 53(Ldexp) 1530 1531 - Store 1529(r026) 1532 - 1534: 65 Load 68(inF0) - 1535: 65 Load 69(inF1) - 1536: 65 Load 70(inF2) - 1537: 65 ExtInst 1(GLSL.std.450) 46(FMix) 1534 1535 1536 - Store 1533(r026a) 1537 - 1539: 65 Load 68(inF0) - 1540: 65 ExtInst 1(GLSL.std.450) 28(Log) 1539 - Store 1538(r027) 1540 - 1542: 65 Load 68(inF0) - 1543: 65 ExtInst 1(GLSL.std.450) 30(Log2) 1542 - 1544: 65 MatrixTimesScalar 1543 253 - Store 1541(r028) 1544 - 1546: 65 Load 68(inF0) - 1547: 65 ExtInst 1(GLSL.std.450) 30(Log2) 1546 - Store 1545(r029) 1547 - 1549: 65 Load 68(inF0) - 1550: 65 Load 69(inF1) - 1551: 65 ExtInst 1(GLSL.std.450) 40(FMax) 1549 1550 - Store 1548(r030) 1551 - 1553: 65 Load 68(inF0) - 1554: 65 Load 69(inF1) - 1555: 65 ExtInst 1(GLSL.std.450) 37(FMin) 1553 1554 - Store 1552(r031) 1555 - 1557: 65 Load 68(inF0) - 1558: 65 Load 69(inF1) - 1559: 65 ExtInst 1(GLSL.std.450) 26(Pow) 1557 1558 - Store 1556(r032) 1559 - 1561: 65 Load 68(inF0) - 1562: 65 ExtInst 1(GLSL.std.450) 11(Radians) 1561 - Store 1560(r033) 1562 - 1564: 65 Load 68(inF0) - 1565: 65 ExtInst 1(GLSL.std.450) 2(RoundEven) 1564 - Store 1563(r034) 1565 - 1567: 65 Load 68(inF0) - 1568: 65 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1567 - Store 1566(r035) 1568 - 1570: 65 Load 68(inF0) - 1571: 64(fvec4) CompositeConstruct 165 165 165 165 - 1572: 64(fvec4) CompositeConstruct 274 274 274 274 - 1573: 65 ExtInst 1(GLSL.std.450) 43(FClamp) 1570 1571 1572 - Store 1569(r036) 1573 - 1575: 65 Load 68(inF0) - 1576: 65 ExtInst 1(GLSL.std.450) 6(FSign) 1575 - Store 1574(r037) 1576 - 1578: 65 Load 68(inF0) - 1579: 65 ExtInst 1(GLSL.std.450) 13(Sin) 1578 - Store 1577(r038) 1579 - 1580: 65 Load 68(inF0) - 1581: 65 ExtInst 1(GLSL.std.450) 13(Sin) 1580 - Store 69(inF1) 1581 - 1582: 65 Load 68(inF0) - 1583: 65 ExtInst 1(GLSL.std.450) 14(Cos) 1582 - Store 70(inF2) 1583 - 1585: 65 Load 68(inF0) - 1586: 65 ExtInst 1(GLSL.std.450) 19(Sinh) 1585 - Store 1584(r039) 1586 - 1588: 65 Load 68(inF0) - 1589: 65 Load 69(inF1) - 1590: 65 Load 70(inF2) - 1591: 65 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1588 1589 1590 - Store 1587(r049) 1591 - 1593: 65 Load 68(inF0) - 1594: 65 ExtInst 1(GLSL.std.450) 31(Sqrt) 1593 - Store 1592(r041) 1594 - 1596: 65 Load 68(inF0) - 1597: 65 Load 69(inF1) - 1598: 65 ExtInst 1(GLSL.std.450) 48(Step) 1596 1597 - Store 1595(r042) 1598 - 1600: 65 Load 68(inF0) - 1601: 65 ExtInst 1(GLSL.std.450) 15(Tan) 1600 - Store 1599(r043) 1601 - 1603: 65 Load 68(inF0) - 1604: 65 ExtInst 1(GLSL.std.450) 21(Tanh) 1603 - Store 1602(r044) 1604 - 1605: 65 Load 68(inF0) - 1606: 65 Transpose 1605 - 1608: 65 Load 68(inF0) - 1609: 65 ExtInst 1(GLSL.std.450) 3(Trunc) 1608 - Store 1607(r046) 1609 - ReturnValue 1611 + 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 - 1614(r0): 7(ptr) Variable Function - 1618(r1): 25(ptr) Variable Function - 1622(r2): 25(ptr) Variable Function - 1626(r3): 7(ptr) Variable Function - 1630(r4): 25(ptr) Variable Function - 1634(r5): 25(ptr) Variable Function - 1638(r6): 49(ptr) Variable Function - 1642(r7): 49(ptr) Variable Function - 1646(r8): 49(ptr) Variable Function - 1615: 6(float) Load 74(inF0) - 1616: 6(float) Load 75(inF1) - 1617: 6(float) FMul 1615 1616 - Store 1614(r0) 1617 - 1619: 24(fvec2) Load 76(inFV0) - 1620: 6(float) Load 74(inF0) - 1621: 24(fvec2) VectorTimesScalar 1619 1620 - Store 1618(r1) 1621 - 1623: 6(float) Load 74(inF0) - 1624: 24(fvec2) Load 76(inFV0) - 1625: 24(fvec2) VectorTimesScalar 1624 1623 - Store 1622(r2) 1625 - 1627: 24(fvec2) Load 76(inFV0) - 1628: 24(fvec2) Load 77(inFV1) - 1629: 6(float) Dot 1627 1628 - Store 1626(r3) 1629 - 1631: 48 Load 78(inFM0) - 1632: 24(fvec2) Load 76(inFV0) - 1633: 24(fvec2) MatrixTimesVector 1631 1632 - Store 1630(r4) 1633 - 1635: 24(fvec2) Load 76(inFV0) - 1636: 48 Load 78(inFM0) - 1637: 24(fvec2) VectorTimesMatrix 1635 1636 - Store 1634(r5) 1637 - 1639: 48 Load 78(inFM0) - 1640: 6(float) Load 74(inF0) - 1641: 48 MatrixTimesScalar 1639 1640 - Store 1638(r6) 1641 - 1643: 6(float) Load 74(inF0) - 1644: 48 Load 78(inFM0) - 1645: 48 MatrixTimesScalar 1644 1643 - Store 1642(r7) 1645 - 1647: 48 Load 78(inFM0) - 1648: 48 Load 79(inFM1) - 1649: 48 MatrixTimesMatrix 1647 1648 - Store 1646(r8) 1649 +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 - 1650(r0): 7(ptr) Variable Function - 1654(r1): 37(ptr) Variable Function - 1658(r2): 37(ptr) Variable Function - 1662(r3): 7(ptr) Variable Function - 1666(r4): 37(ptr) Variable Function - 1670(r5): 37(ptr) Variable Function - 1674(r6): 57(ptr) Variable Function - 1678(r7): 57(ptr) Variable Function - 1682(r8): 57(ptr) Variable Function - 1651: 6(float) Load 83(inF0) - 1652: 6(float) Load 84(inF1) - 1653: 6(float) FMul 1651 1652 - Store 1650(r0) 1653 - 1655: 36(fvec3) Load 85(inFV0) - 1656: 6(float) Load 83(inF0) - 1657: 36(fvec3) VectorTimesScalar 1655 1656 - Store 1654(r1) 1657 - 1659: 6(float) Load 83(inF0) - 1660: 36(fvec3) Load 85(inFV0) - 1661: 36(fvec3) VectorTimesScalar 1660 1659 - Store 1658(r2) 1661 - 1663: 36(fvec3) Load 85(inFV0) - 1664: 36(fvec3) Load 86(inFV1) - 1665: 6(float) Dot 1663 1664 - Store 1662(r3) 1665 - 1667: 56 Load 87(inFM0) - 1668: 36(fvec3) Load 85(inFV0) - 1669: 36(fvec3) MatrixTimesVector 1667 1668 - Store 1666(r4) 1669 - 1671: 36(fvec3) Load 85(inFV0) - 1672: 56 Load 87(inFM0) - 1673: 36(fvec3) VectorTimesMatrix 1671 1672 - Store 1670(r5) 1673 - 1675: 56 Load 87(inFM0) - 1676: 6(float) Load 83(inF0) - 1677: 56 MatrixTimesScalar 1675 1676 - Store 1674(r6) 1677 - 1679: 6(float) Load 83(inF0) - 1680: 56 Load 87(inFM0) - 1681: 56 MatrixTimesScalar 1680 1679 - Store 1678(r7) 1681 - 1683: 56 Load 87(inFM0) - 1684: 56 Load 88(inFM1) - 1685: 56 MatrixTimesMatrix 1683 1684 - Store 1682(r8) 1685 +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 - 1686(r0): 7(ptr) Variable Function - 1690(r1): 91(ptr) Variable Function - 1694(r2): 91(ptr) Variable Function - 1698(r3): 7(ptr) Variable Function - 1702(r4): 91(ptr) Variable Function - 1706(r5): 91(ptr) Variable Function - 1710(r6): 66(ptr) Variable Function - 1714(r7): 66(ptr) Variable Function - 1718(r8): 66(ptr) Variable Function - 1687: 6(float) Load 93(inF0) - 1688: 6(float) Load 94(inF1) - 1689: 6(float) FMul 1687 1688 - Store 1686(r0) 1689 - 1691: 64(fvec4) Load 95(inFV0) - 1692: 6(float) Load 93(inF0) - 1693: 64(fvec4) VectorTimesScalar 1691 1692 - Store 1690(r1) 1693 - 1695: 6(float) Load 93(inF0) - 1696: 64(fvec4) Load 95(inFV0) - 1697: 64(fvec4) VectorTimesScalar 1696 1695 - Store 1694(r2) 1697 - 1699: 64(fvec4) Load 95(inFV0) - 1700: 64(fvec4) Load 96(inFV1) - 1701: 6(float) Dot 1699 1700 - Store 1698(r3) 1701 - 1703: 65 Load 97(inFM0) - 1704: 64(fvec4) Load 95(inFV0) - 1705: 64(fvec4) MatrixTimesVector 1703 1704 - Store 1702(r4) 1705 - 1707: 64(fvec4) Load 95(inFV0) - 1708: 65 Load 97(inFM0) - 1709: 64(fvec4) VectorTimesMatrix 1707 1708 - Store 1706(r5) 1709 - 1711: 65 Load 97(inFM0) - 1712: 6(float) Load 93(inF0) - 1713: 65 MatrixTimesScalar 1711 1712 - Store 1710(r6) 1713 - 1715: 6(float) Load 93(inF0) - 1716: 65 Load 97(inFM0) - 1717: 65 MatrixTimesScalar 1716 1715 - Store 1714(r7) 1717 - 1719: 65 Load 97(inFM0) - 1720: 65 Load 98(inFM1) - 1721: 65 MatrixTimesMatrix 1719 1720 - Store 1718(r8) 1721 +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 - 1722(r00): 7(ptr) Variable Function - 1726(r01): 25(ptr) Variable Function - 1730(r02): 37(ptr) Variable Function - 1734(r03): 25(ptr) Variable Function - 1738(r04): 37(ptr) Variable Function - 1742(r05): 7(ptr) Variable Function - 1746(r06): 7(ptr) Variable Function - 1750(r07): 37(ptr) Variable Function - 1754(r08): 25(ptr) Variable Function - 1758(r09): 25(ptr) Variable Function - 1762(r10): 37(ptr) Variable Function - 1766(r11): 102(ptr) Variable Function - 1770(r12): 104(ptr) Variable Function - 1774(r13): 49(ptr) Variable Function - 1778(r14): 102(ptr) Variable Function - 1782(r15): 108(ptr) Variable Function - 1786(r16): 106(ptr) Variable Function - 1723: 6(float) Load 110(inF0) - 1724: 6(float) Load 111(inF1) - 1725: 6(float) FMul 1723 1724 - Store 1722(r00) 1725 - 1727: 24(fvec2) Load 112(inFV2) - 1728: 6(float) Load 110(inF0) - 1729: 24(fvec2) VectorTimesScalar 1727 1728 - Store 1726(r01) 1729 - 1731: 36(fvec3) Load 113(inFV3) - 1732: 6(float) Load 110(inF0) - 1733: 36(fvec3) VectorTimesScalar 1731 1732 - Store 1730(r02) 1733 - 1735: 6(float) Load 110(inF0) - 1736: 24(fvec2) Load 112(inFV2) +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(r03) 1737 - 1739: 6(float) Load 110(inF0) - 1740: 36(fvec3) Load 113(inFV3) + Store 1734(r01) 1737 + 1739: 6(float) Load 120(inF0) + 1740: 36(fvec3) Load 123(inFV3) 1741: 36(fvec3) VectorTimesScalar 1740 1739 - Store 1738(r04) 1741 - 1743: 24(fvec2) Load 112(inFV2) - 1744: 24(fvec2) Load 112(inFV2) - 1745: 6(float) Dot 1743 1744 - Store 1742(r05) 1745 - 1747: 36(fvec3) Load 113(inFV3) - 1748: 36(fvec3) Load 113(inFV3) - 1749: 6(float) Dot 1747 1748 - Store 1746(r06) 1749 - 1751: 24(fvec2) Load 112(inFV2) - 1752: 101 Load 114(inFM2x3) - 1753: 36(fvec3) VectorTimesMatrix 1751 1752 - Store 1750(r07) 1753 - 1755: 36(fvec3) Load 113(inFV3) - 1756: 103 Load 115(inFM3x2) - 1757: 24(fvec2) VectorTimesMatrix 1755 1756 - Store 1754(r08) 1757 - 1759: 101 Load 114(inFM2x3) - 1760: 36(fvec3) Load 113(inFV3) - 1761: 24(fvec2) MatrixTimesVector 1759 1760 - Store 1758(r09) 1761 - 1763: 103 Load 115(inFM3x2) - 1764: 24(fvec2) Load 112(inFV2) - 1765: 36(fvec3) MatrixTimesVector 1763 1764 - Store 1762(r10) 1765 - 1767: 101 Load 114(inFM2x3) - 1768: 6(float) Load 110(inF0) - 1769: 101 MatrixTimesScalar 1767 1768 - Store 1766(r11) 1769 - 1771: 103 Load 115(inFM3x2) - 1772: 6(float) Load 110(inF0) - 1773: 103 MatrixTimesScalar 1771 1772 - Store 1770(r12) 1773 - 1775: 101 Load 114(inFM2x3) - 1776: 103 Load 115(inFM3x2) - 1777: 48 MatrixTimesMatrix 1775 1776 - Store 1774(r13) 1777 - 1779: 101 Load 114(inFM2x3) - 1780: 56 Load 116(inFM3x3) - 1781: 101 MatrixTimesMatrix 1779 1780 - Store 1778(r14) 1781 - 1783: 101 Load 114(inFM2x3) - 1784: 105 Load 117(inFM3x4) - 1785: 107 MatrixTimesMatrix 1783 1784 - Store 1782(r15) 1785 - 1787: 103 Load 115(inFM3x2) - 1788: 107 Load 118(inFM2x4) - 1789: 105 MatrixTimesMatrix 1787 1788 - Store 1786(r16) 1789 + 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 fe6f93c9..6b393048 100644 --- a/Test/baseResults/hlsl.intrinsics.lit.frag.out +++ b/Test/baseResults/hlsl.intrinsics.lit.frag.out @@ -2,11 +2,11 @@ hlsl.intrinsics.lit.frag 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ Linked fragment stage: 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 043fa82e..44dedf77 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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 @@ Linked compute stage: 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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 829b6998..29ee0095 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: 'normalize' : no matching overloaded function found 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; (temp 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; (temp 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 @@ ERROR: node is still EOpNull! 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; (temp 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; (temp 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 @@ ERROR: node is still EOpNull! 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 @@ ERROR: node is still EOpNull! 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; (temp 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; (temp 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 @@ ERROR: node is still EOpNull! 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; (temp 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 @@ ERROR: node is still EOpNull! 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; (temp 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 @@ ERROR: node is still EOpNull! 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 @@ Linked fragment stage: 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; (temp 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; (temp 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 @@ ERROR: node is still EOpNull! 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; (temp 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; (temp 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 @@ ERROR: node is still EOpNull! 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 @@ ERROR: node is still EOpNull! 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; (temp 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; (temp 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 @@ ERROR: node is still EOpNull! 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; (temp 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 @@ ERROR: node is still EOpNull! 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; (temp 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 @@ ERROR: node is still EOpNull! 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 0e974a1f..72b6fbcc 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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 @@ ERROR: node is still EOpNull! 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; (temp 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 @@ ERROR: node is still EOpNull! 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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 @@ ERROR: node is still EOpNull! 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; (temp 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 @@ ERROR: node is still EOpNull! 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 926501e0..811a752d 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; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:2 'inF1' (in float) @@ -142,7 +142,7 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp void) 0:377 Function Parameters: 0:377 'inF0' (in float) 0:377 'inF1' (in float) @@ -1101,20 +1101,20 @@ Shader version: 450 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 @@ Shader version: 450 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; (temp void) 0:384 Function Parameters: 0:384 'inF0' (in float) 0:384 'inF1' (in float) @@ -1164,20 +1164,20 @@ Shader version: 450 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 @@ Shader version: 450 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; (temp void) 0:391 Function Parameters: 0:391 'inF0' (in float) 0:391 'inF1' (in float) @@ -1227,20 +1227,20 @@ Shader version: 450 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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 @@ Linked vertex stage: 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; (temp float) 0:2 Function Parameters: 0:2 'inF0' (in float) 0:2 'inF1' (in float) @@ -1540,7 +1540,7 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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; (temp void) 0:377 Function Parameters: 0:377 'inF0' (in float) 0:377 'inF1' (in float) @@ -2499,20 +2499,20 @@ Shader version: 450 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 @@ Shader version: 450 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; (temp void) 0:384 Function Parameters: 0:384 'inF0' (in float) 0:384 'inF1' (in float) @@ -2562,20 +2562,20 @@ Shader version: 450 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 @@ Shader version: 450 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; (temp void) 0:391 Function Parameters: 0:391 'inF0' (in float) 0:391 'inF1' (in float) @@ -2625,20 +2625,20 @@ Shader version: 450 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 @@ Shader version: 450 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; (temp 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 @@ Shader version: 450 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 @@ Shader version: 450 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 @@ Shader version: 450 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 @@ Shader version: 450 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 @@ Shader version: 450 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 @@ Shader version: 450 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 @@ Shader version: 450 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 @@ Shader version: 450 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 @@ Shader version: 450 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 00000000..e8fab995 --- /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; (temp 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(row_major std430 offset=16 ) buffer 4-component vector of float) +0:17 'anon@0' (layout(set=3 binding=5 row_major std430 ) buffer block{layout(row_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(row_major std430 offset=0 ) buffer 4-component vector of float) +0:17 'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_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(row_major std430 offset=16 ) buffer 4-component vector of float) +0:17 'anon@2' (layout(set=4 binding=7 row_major std430 ) buffer block{layout(row_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 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1}) +0:? 'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_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 row_major std430 ) buffer block{layout(row_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; (temp 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(row_major std430 offset=16 ) buffer 4-component vector of float) +0:17 'anon@0' (layout(set=3 binding=5 row_major std430 ) buffer block{layout(row_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(row_major std430 offset=0 ) buffer 4-component vector of float) +0:17 'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_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(row_major std430 offset=16 ) buffer 4-component vector of float) +0:17 'anon@2' (layout(set=4 binding=7 row_major std430 ) buffer block{layout(row_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 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v1}) +0:? 'anon@1' (layout(row_major std430 push_constant ) buffer block{layout(row_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 row_major std430 ) buffer block{layout(row_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 "tbufName" + MemberName 14(tbufName) 0 "v1" + Name 16 "" + Name 23 "tbufName2" + MemberName 23(tbufName2) 0 "v5" + Name 25 "" + Name 30 "tbufName2" + MemberName 30(tbufName2) 0 "v1PostLayout" + Name 32 "" + MemberDecorate 14(tbufName) 0 Offset 16 + Decorate 14(tbufName) BufferBlock + Decorate 16 DescriptorSet 3 + Decorate 16 Binding 5 + MemberDecorate 23(tbufName2) 0 Offset 0 + Decorate 23(tbufName2) BufferBlock + MemberDecorate 30(tbufName2) 0 Offset 16 + Decorate 30(tbufName2) 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(tbufName): TypeStruct 7(fvec4) + 15: TypePointer Uniform 14(tbufName) + 16: 15(ptr) Variable Uniform + 17: TypeInt 32 1 + 18: 17(int) Constant 0 + 19: TypePointer Uniform 7(fvec4) + 23(tbufName2): TypeStruct 7(fvec4) + 24: TypePointer PushConstant 23(tbufName2) + 25: 24(ptr) Variable PushConstant + 26: TypePointer PushConstant 7(fvec4) + 30(tbufName2): TypeStruct 7(fvec4) + 31: TypePointer Uniform 30(tbufName2) + 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 new file mode 100644 index 00000000..9c1b4ad9 --- /dev/null +++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out @@ -0,0 +1,526 @@ +hlsl.load.2dms.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:32 textureFetch (temp 4-component vector of float) +0:32 'g_tTex2dmsf4' (uniform texture2DMS) +0:32 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:32 Constant: +0:32 1 (const uint) +0:32 Constant: +0:32 3 (const int) +0:33 textureFetch (temp 4-component vector of int) +0:33 'g_tTex2dmsi4' (uniform itexture2DMS) +0:33 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:33 Constant: +0:33 1 (const uint) +0:33 Constant: +0:33 3 (const int) +0:34 textureFetch (temp 4-component vector of uint) +0:34 'g_tTex2dmsu4' (uniform utexture2DMS) +0:34 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:34 Constant: +0:34 1 (const uint) +0:34 Constant: +0:34 3 (const int) +0:37 textureFetchOffset (temp 4-component vector of float) +0:37 'g_tTex2dmsf4' (uniform texture2DMS) +0:37 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:37 Constant: +0:37 1 (const uint) +0:37 Constant: +0:37 3 (const int) +0:37 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:37 Constant: +0:37 5 (const uint) +0:38 textureFetchOffset (temp 4-component vector of int) +0:38 'g_tTex2dmsi4' (uniform itexture2DMS) +0:38 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:38 Constant: +0:38 1 (const uint) +0:38 Constant: +0:38 3 (const int) +0:38 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:38 Constant: +0:38 5 (const uint) +0:39 textureFetchOffset (temp 4-component vector of uint) +0:39 'g_tTex2dmsu4' (uniform utexture2DMS) +0:39 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:39 Constant: +0:39 1 (const uint) +0:39 Constant: +0:39 3 (const int) +0:39 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:39 Constant: +0:39 5 (const uint) +0:42 textureFetch (temp 4-component vector of float) +0:42 'g_tTex2dmsf4a' (uniform texture2DMSArray) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 2 (const uint) +0:42 Constant: +0:42 3 (const int) +0:43 textureFetch (temp 4-component vector of int) +0:43 'g_tTex2dmsi4a' (uniform itexture2DMSArray) +0:43 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:43 Constant: +0:43 2 (const uint) +0:43 Constant: +0:43 3 (const int) +0:44 textureFetch (temp 4-component vector of uint) +0:44 'g_tTex2dmsu4a' (uniform utexture2DMSArray) +0:44 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 2 (const uint) +0:44 Constant: +0:44 3 (const int) +0:47 textureFetchOffset (temp 4-component vector of float) +0:47 'g_tTex2dmsf4a' (uniform texture2DMSArray) +0:47 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 2 (const uint) +0:47 Constant: +0:47 3 (const int) +0:47 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 5 (const uint) +0:48 textureFetchOffset (temp 4-component vector of int) +0:48 'g_tTex2dmsi4a' (uniform itexture2DMSArray) +0:48 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 2 (const uint) +0:48 Constant: +0:48 3 (const int) +0:48 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 5 (const uint) +0:49 textureFetchOffset (temp 4-component vector of uint) +0:49 'g_tTex2dmsu4a' (uniform utexture2DMSArray) +0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 2 (const uint) +0:49 Constant: +0:49 3 (const int) +0:49 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 5 (const uint) +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 Depth}) +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 1.000000 +0:51 1.000000 +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) +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 Sequence +0:54 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) +0:? 'g_tTex2dmsi4' (uniform itexture2DMS) +0:? 'g_tTex2dmsu4' (uniform utexture2DMS) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:32 textureFetch (temp 4-component vector of float) +0:32 'g_tTex2dmsf4' (uniform texture2DMS) +0:32 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:32 Constant: +0:32 1 (const uint) +0:32 Constant: +0:32 3 (const int) +0:33 textureFetch (temp 4-component vector of int) +0:33 'g_tTex2dmsi4' (uniform itexture2DMS) +0:33 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:33 Constant: +0:33 1 (const uint) +0:33 Constant: +0:33 3 (const int) +0:34 textureFetch (temp 4-component vector of uint) +0:34 'g_tTex2dmsu4' (uniform utexture2DMS) +0:34 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:34 Constant: +0:34 1 (const uint) +0:34 Constant: +0:34 3 (const int) +0:37 textureFetchOffset (temp 4-component vector of float) +0:37 'g_tTex2dmsf4' (uniform texture2DMS) +0:37 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:37 Constant: +0:37 1 (const uint) +0:37 Constant: +0:37 3 (const int) +0:37 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:37 Constant: +0:37 5 (const uint) +0:38 textureFetchOffset (temp 4-component vector of int) +0:38 'g_tTex2dmsi4' (uniform itexture2DMS) +0:38 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:38 Constant: +0:38 1 (const uint) +0:38 Constant: +0:38 3 (const int) +0:38 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:38 Constant: +0:38 5 (const uint) +0:39 textureFetchOffset (temp 4-component vector of uint) +0:39 'g_tTex2dmsu4' (uniform utexture2DMS) +0:39 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:39 Constant: +0:39 1 (const uint) +0:39 Constant: +0:39 3 (const int) +0:39 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:39 Constant: +0:39 5 (const uint) +0:42 textureFetch (temp 4-component vector of float) +0:42 'g_tTex2dmsf4a' (uniform texture2DMSArray) +0:42 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 2 (const uint) +0:42 Constant: +0:42 3 (const int) +0:43 textureFetch (temp 4-component vector of int) +0:43 'g_tTex2dmsi4a' (uniform itexture2DMSArray) +0:43 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:43 Constant: +0:43 2 (const uint) +0:43 Constant: +0:43 3 (const int) +0:44 textureFetch (temp 4-component vector of uint) +0:44 'g_tTex2dmsu4a' (uniform utexture2DMSArray) +0:44 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 2 (const uint) +0:44 Constant: +0:44 3 (const int) +0:47 textureFetchOffset (temp 4-component vector of float) +0:47 'g_tTex2dmsf4a' (uniform texture2DMSArray) +0:47 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 2 (const uint) +0:47 Constant: +0:47 3 (const int) +0:47 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:47 Constant: +0:47 5 (const uint) +0:48 textureFetchOffset (temp 4-component vector of int) +0:48 'g_tTex2dmsi4a' (uniform itexture2DMSArray) +0:48 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 2 (const uint) +0:48 Constant: +0:48 3 (const int) +0:48 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:48 Constant: +0:48 5 (const uint) +0:49 textureFetchOffset (temp 4-component vector of uint) +0:49 'g_tTex2dmsu4a' (uniform utexture2DMSArray) +0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 2 (const uint) +0:49 Constant: +0:49 3 (const int) +0:49 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 5 (const uint) +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 Depth}) +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 1.000000 +0:51 1.000000 +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) +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 Sequence +0:54 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) +0:? 'g_tTex2dmsi4' (uniform itexture2DMS) +0:? 'g_tTex2dmsu4' (uniform utexture2DMS) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 123 + + Capability Shader + Capability ImageGatherExtended + Capability ImageMSArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 112 116 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tTex2dmsf4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 27 "g_tTex2dmsi4" + Name 35 "g_tTex2dmsu4" + Name 62 "g_tTex2dmsf4a" + Name 71 "g_tTex2dmsi4a" + Name 78 "g_tTex2dmsu4a" + Name 101 "PS_OUTPUT" + MemberName 101(PS_OUTPUT) 0 "Color" + MemberName 101(PS_OUTPUT) 1 "Depth" + Name 103 "psout" + Name 112 "Color" + Name 116 "Depth" + Name 122 "g_sSamp" + Decorate 9(g_tTex2dmsf4) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 27(g_tTex2dmsi4) DescriptorSet 0 + Decorate 35(g_tTex2dmsu4) DescriptorSet 0 + Decorate 62(g_tTex2dmsf4a) DescriptorSet 0 + Decorate 71(g_tTex2dmsi4a) DescriptorSet 0 + Decorate 78(g_tTex2dmsu4a) DescriptorSet 0 + Decorate 112(Color) Location 0 + Decorate 116(Depth) BuiltIn FragDepth + Decorate 122(g_sSamp) DescriptorSet 0 + Decorate 122(g_sSamp) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) 2D multi-sampled sampled format:Unknown + 8: TypePointer UniformConstant 7 + 9(g_tTex2dmsf4): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 1 + 19: TypePointer Uniform 12(ivec2) + 22: 11(int) Constant 3 + 23: TypeVector 6(float) 4 + 25: TypeImage 11(int) 2D multi-sampled sampled format:Unknown + 26: TypePointer UniformConstant 25 +27(g_tTex2dmsi4): 26(ptr) Variable UniformConstant + 32: TypeInt 32 0 + 33: TypeImage 32(int) 2D multi-sampled sampled format:Unknown + 34: TypePointer UniformConstant 33 +35(g_tTex2dmsu4): 34(ptr) Variable UniformConstant + 39: TypeVector 32(int) 4 + 44: 11(int) Constant 5 + 60: TypeImage 6(float) 2D array multi-sampled sampled format:Unknown + 61: TypePointer UniformConstant 60 +62(g_tTex2dmsf4a): 61(ptr) Variable UniformConstant + 64: 11(int) Constant 2 + 65: TypePointer Uniform 13(ivec3) + 69: TypeImage 11(int) 2D array multi-sampled sampled format:Unknown + 70: TypePointer UniformConstant 69 +71(g_tTex2dmsi4a): 70(ptr) Variable UniformConstant + 76: TypeImage 32(int) 2D array multi-sampled sampled format:Unknown + 77: TypePointer UniformConstant 76 +78(g_tTex2dmsu4a): 77(ptr) Variable UniformConstant + 101(PS_OUTPUT): TypeStruct 23(fvec4) 6(float) + 102: TypePointer Function 101(PS_OUTPUT) + 104: 11(int) Constant 0 + 105: 6(float) Constant 1065353216 + 106: 23(fvec4) ConstantComposite 105 105 105 105 + 107: TypePointer Function 23(fvec4) + 109: TypePointer Function 6(float) + 111: TypePointer Output 23(fvec4) + 112(Color): 111(ptr) Variable Output + 115: TypePointer Output 6(float) + 116(Depth): 115(ptr) Variable Output + 120: TypeSampler + 121: TypePointer UniformConstant 120 + 122(g_sSamp): 121(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 103(psout): 102(ptr) Variable Function + 10: 7 Load 9(g_tTex2dmsf4) + 20: 19(ptr) AccessChain 17 18 + 21: 12(ivec2) Load 20 + 24: 23(fvec4) ImageFetch 10 21 Sample 22 + 28: 25 Load 27(g_tTex2dmsi4) + 29: 19(ptr) AccessChain 17 18 + 30: 12(ivec2) Load 29 + 31: 14(ivec4) ImageFetch 28 30 Sample 22 + 36: 33 Load 35(g_tTex2dmsu4) + 37: 19(ptr) AccessChain 17 18 + 38: 12(ivec2) Load 37 + 40: 39(ivec4) ImageFetch 36 38 Sample 22 + 41: 7 Load 9(g_tTex2dmsf4) + 42: 19(ptr) AccessChain 17 18 + 43: 12(ivec2) Load 42 + 45: 19(ptr) AccessChain 17 44 + 46: 12(ivec2) Load 45 + 47: 23(fvec4) ImageFetch 41 43 Offset Sample 46 22 + 48: 25 Load 27(g_tTex2dmsi4) + 49: 19(ptr) AccessChain 17 18 + 50: 12(ivec2) Load 49 + 51: 19(ptr) AccessChain 17 44 + 52: 12(ivec2) Load 51 + 53: 14(ivec4) ImageFetch 48 50 Offset Sample 52 22 + 54: 33 Load 35(g_tTex2dmsu4) + 55: 19(ptr) AccessChain 17 18 + 56: 12(ivec2) Load 55 + 57: 19(ptr) AccessChain 17 44 + 58: 12(ivec2) Load 57 + 59: 39(ivec4) ImageFetch 54 56 Offset Sample 58 22 + 63: 60 Load 62(g_tTex2dmsf4a) + 66: 65(ptr) AccessChain 17 64 + 67: 13(ivec3) Load 66 + 68: 23(fvec4) ImageFetch 63 67 Sample 22 + 72: 69 Load 71(g_tTex2dmsi4a) + 73: 65(ptr) AccessChain 17 64 + 74: 13(ivec3) Load 73 + 75: 14(ivec4) ImageFetch 72 74 Sample 22 + 79: 76 Load 78(g_tTex2dmsu4a) + 80: 65(ptr) AccessChain 17 64 + 81: 13(ivec3) Load 80 + 82: 39(ivec4) ImageFetch 79 81 Sample 22 + 83: 60 Load 62(g_tTex2dmsf4a) + 84: 65(ptr) AccessChain 17 64 + 85: 13(ivec3) Load 84 + 86: 19(ptr) AccessChain 17 44 + 87: 12(ivec2) Load 86 + 88: 23(fvec4) ImageFetch 83 85 Offset Sample 87 22 + 89: 69 Load 71(g_tTex2dmsi4a) + 90: 65(ptr) AccessChain 17 64 + 91: 13(ivec3) Load 90 + 92: 19(ptr) AccessChain 17 44 + 93: 12(ivec2) Load 92 + 94: 14(ivec4) ImageFetch 89 91 Offset Sample 93 22 + 95: 76 Load 78(g_tTex2dmsu4a) + 96: 65(ptr) AccessChain 17 64 + 97: 13(ivec3) Load 96 + 98: 19(ptr) AccessChain 17 44 + 99: 12(ivec2) Load 98 + 100: 39(ivec4) ImageFetch 95 97 Offset Sample 99 22 + 108: 107(ptr) AccessChain 103(psout) 104 + Store 108 106 + 110: 109(ptr) AccessChain 103(psout) 18 + Store 110 105 + 113: 107(ptr) AccessChain 103(psout) 104 + 114: 23(fvec4) Load 113 + Store 112(Color) 114 + 117: 109(ptr) AccessChain 103(psout) 18 + 118: 6(float) Load 117 + Store 116(Depth) 118 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out new file mode 100644 index 00000000..ed2951f7 --- /dev/null +++ b/Test/baseResults/hlsl.load.array.dx10.frag.out @@ -0,0 +1,616 @@ +hlsl.load.array.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Parameters: +0:? Sequence +0:52 textureFetch (temp 4-component vector of float) +0:52 'g_tTex1df4a' (uniform texture1DArray) +0:52 vector swizzle (temp 2-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) +0:52 Sequence +0:52 Constant: +0:52 0 (const int) +0:52 Constant: +0:52 1 (const int) +0:52 direct index (temp int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) +0:52 Constant: +0:52 2 (const int) +0:53 textureFetch (temp 4-component vector of int) +0:53 'g_tTex1di4a' (uniform itexture1DArray) +0:53 vector swizzle (temp 2-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) +0:53 Sequence +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 1 (const int) +0:53 direct index (temp int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) +0:53 Constant: +0:53 2 (const int) +0:54 textureFetch (temp 4-component vector of uint) +0:54 'g_tTex1du4a' (uniform utexture1DArray) +0:54 vector swizzle (temp 2-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 direct index (temp int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:54 Constant: +0:54 2 (const int) +0:57 textureFetch (temp 4-component vector of float) +0:57 'g_tTex2df4a' (uniform texture2DArray) +0:57 vector swizzle (temp 3-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) +0:57 Sequence +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 Constant: +0:57 2 (const int) +0:57 direct index (temp int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) +0:57 Constant: +0:57 3 (const int) +0:58 textureFetch (temp 4-component vector of int) +0:58 'g_tTex2di4a' (uniform itexture2DArray) +0:58 vector swizzle (temp 3-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) +0:58 Sequence +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 2 (const int) +0:58 direct index (temp int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) +0:58 Constant: +0:58 3 (const int) +0:59 textureFetch (temp 4-component vector of uint) +0:59 'g_tTex2du4a' (uniform utexture2DArray) +0:59 vector swizzle (temp 3-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 2 (const int) +0:59 direct index (temp int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) +0:59 Constant: +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 Depth}) +0:67 Constant: +0:67 0 (const int) +0:67 Constant: +0:67 1.000000 +0:67 1.000000 +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) +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 Sequence +0:70 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Parameters: +0:? Sequence +0:52 textureFetch (temp 4-component vector of float) +0:52 'g_tTex1df4a' (uniform texture1DArray) +0:52 vector swizzle (temp 2-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) +0:52 Sequence +0:52 Constant: +0:52 0 (const int) +0:52 Constant: +0:52 1 (const int) +0:52 direct index (temp int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) +0:52 Constant: +0:52 2 (const int) +0:53 textureFetch (temp 4-component vector of int) +0:53 'g_tTex1di4a' (uniform itexture1DArray) +0:53 vector swizzle (temp 2-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) +0:53 Sequence +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 1 (const int) +0:53 direct index (temp int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) +0:53 Constant: +0:53 2 (const int) +0:54 textureFetch (temp 4-component vector of uint) +0:54 'g_tTex1du4a' (uniform utexture1DArray) +0:54 vector swizzle (temp 2-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 direct index (temp int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:54 Constant: +0:54 2 (const int) +0:57 textureFetch (temp 4-component vector of float) +0:57 'g_tTex2df4a' (uniform texture2DArray) +0:57 vector swizzle (temp 3-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) +0:57 Sequence +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 Constant: +0:57 2 (const int) +0:57 direct index (temp int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) +0:57 Constant: +0:57 3 (const int) +0:58 textureFetch (temp 4-component vector of int) +0:58 'g_tTex2di4a' (uniform itexture2DArray) +0:58 vector swizzle (temp 3-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) +0:58 Sequence +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 2 (const int) +0:58 direct index (temp int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) +0:58 Constant: +0:58 3 (const int) +0:59 textureFetch (temp 4-component vector of uint) +0:59 'g_tTex2du4a' (uniform utexture2DArray) +0:59 vector swizzle (temp 3-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 2 (const int) +0:59 direct index (temp int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) +0:59 Constant: +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 Depth}) +0:67 Constant: +0:67 0 (const int) +0:67 Constant: +0:67 1.000000 +0:67 1.000000 +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) +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 Sequence +0:70 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 152 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 96 100 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tTex1df4a" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 32 "g_tTex1di4a" + Name 42 "g_tTex1du4a" + Name 53 "g_tTex2df4a" + Name 66 "g_tTex2di4a" + Name 76 "g_tTex2du4a" + Name 84 "PS_OUTPUT" + MemberName 84(PS_OUTPUT) 0 "Color" + MemberName 84(PS_OUTPUT) 1 "Depth" + Name 86 "psout" + 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" + Decorate 9(g_tTex1df4a) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 32(g_tTex1di4a) DescriptorSet 0 + Decorate 42(g_tTex1du4a) DescriptorSet 0 + Decorate 53(g_tTex2df4a) DescriptorSet 0 + Decorate 66(g_tTex2di4a) DescriptorSet 0 + Decorate 76(g_tTex2du4a) 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 + 7: TypeImage 6(float) 1D array sampled format:Unknown + 8: TypePointer UniformConstant 7 + 9(g_tTex1df4a): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 2 + 19: TypePointer Uniform 13(ivec3) + 23: TypeInt 32 0 + 24: 23(int) Constant 2 + 25: TypePointer Uniform 11(int) + 28: TypeVector 6(float) 4 + 30: TypeImage 11(int) 1D array sampled format:Unknown + 31: TypePointer UniformConstant 30 + 32(g_tTex1di4a): 31(ptr) Variable UniformConstant + 40: TypeImage 23(int) 1D array sampled format:Unknown + 41: TypePointer UniformConstant 40 + 42(g_tTex1du4a): 41(ptr) Variable UniformConstant + 49: TypeVector 23(int) 4 + 51: TypeImage 6(float) 2D array sampled format:Unknown + 52: TypePointer UniformConstant 51 + 53(g_tTex2df4a): 52(ptr) Variable UniformConstant + 55: 11(int) Constant 3 + 56: TypePointer Uniform 14(ivec4) + 60: 23(int) Constant 3 + 64: TypeImage 11(int) 2D array sampled format:Unknown + 65: TypePointer UniformConstant 64 + 66(g_tTex2di4a): 65(ptr) Variable UniformConstant + 74: TypeImage 23(int) 2D array sampled format:Unknown + 75: TypePointer UniformConstant 74 + 76(g_tTex2du4a): 75(ptr) Variable UniformConstant + 84(PS_OUTPUT): TypeStruct 28(fvec4) 6(float) + 85: TypePointer Function 84(PS_OUTPUT) + 87: 11(int) Constant 0 + 88: 6(float) Constant 1065353216 + 89: 28(fvec4) ConstantComposite 88 88 88 88 + 90: TypePointer Function 28(fvec4) + 92: 11(int) Constant 1 + 93: TypePointer Function 6(float) + 95: TypePointer Output 28(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 23(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 23(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 23(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 23(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 23(int) Cube array sampled format:Unknown + 150: TypePointer UniformConstant 149 +151(g_tTexcdu4a): 150(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 86(psout): 85(ptr) Variable Function + 10: 7 Load 9(g_tTex1df4a) + 20: 19(ptr) AccessChain 17 18 + 21: 13(ivec3) Load 20 + 22: 12(ivec2) VectorShuffle 21 21 0 1 + 26: 25(ptr) AccessChain 17 18 24 + 27: 11(int) Load 26 + 29: 28(fvec4) ImageFetch 10 22 Lod 27 + 33: 30 Load 32(g_tTex1di4a) + 34: 19(ptr) AccessChain 17 18 + 35: 13(ivec3) Load 34 + 36: 12(ivec2) VectorShuffle 35 35 0 1 + 37: 25(ptr) AccessChain 17 18 24 + 38: 11(int) Load 37 + 39: 14(ivec4) ImageFetch 33 36 Lod 38 + 43: 40 Load 42(g_tTex1du4a) + 44: 19(ptr) AccessChain 17 18 + 45: 13(ivec3) Load 44 + 46: 12(ivec2) VectorShuffle 45 45 0 1 + 47: 25(ptr) AccessChain 17 18 24 + 48: 11(int) Load 47 + 50: 49(ivec4) ImageFetch 43 46 Lod 48 + 54: 51 Load 53(g_tTex2df4a) + 57: 56(ptr) AccessChain 17 55 + 58: 14(ivec4) Load 57 + 59: 13(ivec3) VectorShuffle 58 58 0 1 2 + 61: 25(ptr) AccessChain 17 55 60 + 62: 11(int) Load 61 + 63: 28(fvec4) ImageFetch 54 59 Lod 62 + 67: 64 Load 66(g_tTex2di4a) + 68: 56(ptr) AccessChain 17 55 + 69: 14(ivec4) Load 68 + 70: 13(ivec3) VectorShuffle 69 69 0 1 2 + 71: 25(ptr) AccessChain 17 55 60 + 72: 11(int) Load 71 + 73: 14(ivec4) ImageFetch 67 70 Lod 72 + 77: 74 Load 76(g_tTex2du4a) + 78: 56(ptr) AccessChain 17 55 + 79: 14(ivec4) Load 78 + 80: 13(ivec3) VectorShuffle 79 79 0 1 2 + 81: 25(ptr) AccessChain 17 55 60 + 82: 11(int) Load 81 + 83: 49(ivec4) ImageFetch 77 80 Lod 82 + 91: 90(ptr) AccessChain 86(psout) 87 + Store 91 89 + 94: 93(ptr) AccessChain 86(psout) 92 + Store 94 88 + 97: 90(ptr) AccessChain 86(psout) 87 + 98: 28(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.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out new file mode 100644 index 00000000..3a4b3fca --- /dev/null +++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out @@ -0,0 +1,738 @@ +hlsl.load.basic.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Parameters: +0:? Sequence +0:52 textureFetch (temp 4-component vector of float) +0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:52 vector swizzle (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Sequence +0:52 Constant: +0:52 0 (const int) +0:52 direct index (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Constant: +0:52 1 (const int) +0:53 textureFetch (temp 4-component vector of int) +0:53 'g_tTex1di4' (uniform itexture1D) +0:53 vector swizzle (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Sequence +0:53 Constant: +0:53 0 (const int) +0:53 direct index (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Constant: +0:53 1 (const int) +0:54 textureFetch (temp 4-component vector of uint) +0:54 'g_tTex1du4' (uniform utexture1D) +0:54 vector swizzle (temp int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 direct index (temp int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) +0:54 Constant: +0:54 1 (const int) +0:57 textureFetch (temp 4-component vector of float) +0:57 'g_tTex2df4' (uniform texture2D) +0:57 vector swizzle (temp 2-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Sequence +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 direct index (temp int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Constant: +0:57 2 (const int) +0:58 textureFetch (temp 4-component vector of int) +0:58 'g_tTex2di4' (uniform itexture2D) +0:58 vector swizzle (temp 2-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Sequence +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 direct index (temp int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Constant: +0:58 2 (const int) +0:59 textureFetch (temp 4-component vector of uint) +0:59 'g_tTex2du4' (uniform utexture2D) +0:59 vector swizzle (temp 2-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 direct index (temp int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) +0:59 Constant: +0:59 2 (const int) +0:62 textureFetch (temp 4-component vector of float) +0:62 'g_tTex3df4' (uniform texture3D) +0:62 vector swizzle (temp 3-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Sequence +0:62 Constant: +0:62 0 (const int) +0:62 Constant: +0:62 1 (const int) +0:62 Constant: +0:62 2 (const int) +0:62 direct index (temp int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Constant: +0:62 3 (const int) +0:63 textureFetch (temp 4-component vector of int) +0:63 'g_tTex3di4' (uniform itexture3D) +0:63 vector swizzle (temp 3-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Sequence +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1 (const int) +0:63 Constant: +0:63 2 (const int) +0:63 direct index (temp int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Constant: +0:63 3 (const int) +0:64 textureFetch (temp 4-component vector of uint) +0:64 'g_tTex3du4' (uniform utexture3D) +0:64 vector swizzle (temp 3-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) +0:64 Sequence +0:64 Constant: +0:64 0 (const int) +0:64 Constant: +0:64 1 (const int) +0:64 Constant: +0:64 2 (const int) +0:64 direct index (temp int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) +0:64 Constant: +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 Depth}) +0:72 Constant: +0:72 0 (const int) +0:72 Constant: +0:72 1.000000 +0:72 1.000000 +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) +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 Sequence +0:75 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Parameters: +0:? Sequence +0:52 textureFetch (temp 4-component vector of float) +0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:52 vector swizzle (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Sequence +0:52 Constant: +0:52 0 (const int) +0:52 direct index (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Constant: +0:52 1 (const int) +0:53 textureFetch (temp 4-component vector of int) +0:53 'g_tTex1di4' (uniform itexture1D) +0:53 vector swizzle (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Sequence +0:53 Constant: +0:53 0 (const int) +0:53 direct index (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Constant: +0:53 1 (const int) +0:54 textureFetch (temp 4-component vector of uint) +0:54 'g_tTex1du4' (uniform utexture1D) +0:54 vector swizzle (temp int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 direct index (temp int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) +0:54 Constant: +0:54 1 (const int) +0:57 textureFetch (temp 4-component vector of float) +0:57 'g_tTex2df4' (uniform texture2D) +0:57 vector swizzle (temp 2-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Sequence +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 direct index (temp int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Constant: +0:57 2 (const int) +0:58 textureFetch (temp 4-component vector of int) +0:58 'g_tTex2di4' (uniform itexture2D) +0:58 vector swizzle (temp 2-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Sequence +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 direct index (temp int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Constant: +0:58 2 (const int) +0:59 textureFetch (temp 4-component vector of uint) +0:59 'g_tTex2du4' (uniform utexture2D) +0:59 vector swizzle (temp 2-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 direct index (temp int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) +0:59 Constant: +0:59 2 (const int) +0:62 textureFetch (temp 4-component vector of float) +0:62 'g_tTex3df4' (uniform texture3D) +0:62 vector swizzle (temp 3-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Sequence +0:62 Constant: +0:62 0 (const int) +0:62 Constant: +0:62 1 (const int) +0:62 Constant: +0:62 2 (const int) +0:62 direct index (temp int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Constant: +0:62 3 (const int) +0:63 textureFetch (temp 4-component vector of int) +0:63 'g_tTex3di4' (uniform itexture3D) +0:63 vector swizzle (temp 3-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Sequence +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1 (const int) +0:63 Constant: +0:63 2 (const int) +0:63 direct index (temp int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Constant: +0:63 3 (const int) +0:64 textureFetch (temp 4-component vector of uint) +0:64 'g_tTex3du4' (uniform utexture3D) +0:64 vector swizzle (temp 3-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) +0:64 Sequence +0:64 Constant: +0:64 0 (const int) +0:64 Constant: +0:64 1 (const int) +0:64 Constant: +0:64 2 (const int) +0:64 direct index (temp int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) +0:64 Constant: +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 Depth}) +0:72 Constant: +0:72 0 (const int) +0:72 Constant: +0:72 1.000000 +0:72 1.000000 +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) +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 Sequence +0:75 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 172 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 125 129 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tTex1df4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 31 "g_tTex1di4" + Name 40 "g_tTex1du4" + Name 50 "g_tTex2df4" + Name 63 "g_tTex2di4" + Name 73 "g_tTex2du4" + Name 83 "g_tTex3df4" + Name 96 "g_tTex3di4" + Name 106 "g_tTex3du4" + Name 114 "PS_OUTPUT" + MemberName 114(PS_OUTPUT) 0 "Color" + MemberName 114(PS_OUTPUT) 1 "Depth" + Name 116 "psout" + Name 125 "Color" + Name 129 "Depth" + Name 135 "g_sSamp" + Name 138 "g_tTexcdf4" + Name 141 "g_tTexcdi4" + Name 144 "g_tTexcdu4" + Name 147 "g_tTex1df4a" + Name 150 "g_tTex1di4a" + Name 153 "g_tTex1du4a" + Name 156 "g_tTex2df4a" + Name 159 "g_tTex2di4a" + Name 162 "g_tTex2du4a" + Name 165 "g_tTexcdf4a" + Name 168 "g_tTexcdi4a" + Name 171 "g_tTexcdu4a" + Decorate 9(g_tTex1df4) DescriptorSet 0 + Decorate 9(g_tTex1df4) Binding 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 31(g_tTex1di4) DescriptorSet 0 + Decorate 40(g_tTex1du4) DescriptorSet 0 + Decorate 50(g_tTex2df4) DescriptorSet 0 + Decorate 63(g_tTex2di4) DescriptorSet 0 + Decorate 73(g_tTex2du4) DescriptorSet 0 + Decorate 83(g_tTex3df4) DescriptorSet 0 + Decorate 96(g_tTex3di4) DescriptorSet 0 + Decorate 106(g_tTex3du4) DescriptorSet 0 + Decorate 125(Color) Location 0 + Decorate 129(Depth) BuiltIn FragDepth + Decorate 135(g_sSamp) DescriptorSet 0 + Decorate 135(g_sSamp) Binding 0 + Decorate 138(g_tTexcdf4) DescriptorSet 0 + Decorate 141(g_tTexcdi4) DescriptorSet 0 + Decorate 144(g_tTexcdu4) DescriptorSet 0 + Decorate 147(g_tTex1df4a) DescriptorSet 0 + Decorate 150(g_tTex1di4a) DescriptorSet 0 + Decorate 153(g_tTex1du4a) DescriptorSet 0 + Decorate 156(g_tTex2df4a) DescriptorSet 0 + Decorate 159(g_tTex2di4a) DescriptorSet 0 + Decorate 162(g_tTex2du4a) DescriptorSet 0 + Decorate 165(g_tTexcdf4a) DescriptorSet 0 + Decorate 168(g_tTexcdi4a) DescriptorSet 0 + Decorate 171(g_tTexcdu4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) 1D sampled format:Unknown + 8: TypePointer UniformConstant 7 + 9(g_tTex1df4): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 1 + 19: TypeInt 32 0 + 20: 19(int) Constant 0 + 21: TypePointer Uniform 11(int) + 24: 19(int) Constant 1 + 27: TypeVector 6(float) 4 + 29: TypeImage 11(int) 1D sampled format:Unknown + 30: TypePointer UniformConstant 29 + 31(g_tTex1di4): 30(ptr) Variable UniformConstant + 38: TypeImage 19(int) 1D sampled format:Unknown + 39: TypePointer UniformConstant 38 + 40(g_tTex1du4): 39(ptr) Variable UniformConstant + 46: TypeVector 19(int) 4 + 48: TypeImage 6(float) 2D sampled format:Unknown + 49: TypePointer UniformConstant 48 + 50(g_tTex2df4): 49(ptr) Variable UniformConstant + 52: 11(int) Constant 2 + 53: TypePointer Uniform 13(ivec3) + 57: 19(int) Constant 2 + 61: TypeImage 11(int) 2D sampled format:Unknown + 62: TypePointer UniformConstant 61 + 63(g_tTex2di4): 62(ptr) Variable UniformConstant + 71: TypeImage 19(int) 2D sampled format:Unknown + 72: TypePointer UniformConstant 71 + 73(g_tTex2du4): 72(ptr) Variable UniformConstant + 81: TypeImage 6(float) 3D sampled format:Unknown + 82: TypePointer UniformConstant 81 + 83(g_tTex3df4): 82(ptr) Variable UniformConstant + 85: 11(int) Constant 3 + 86: TypePointer Uniform 14(ivec4) + 90: 19(int) Constant 3 + 94: TypeImage 11(int) 3D sampled format:Unknown + 95: TypePointer UniformConstant 94 + 96(g_tTex3di4): 95(ptr) Variable UniformConstant + 104: TypeImage 19(int) 3D sampled format:Unknown + 105: TypePointer UniformConstant 104 + 106(g_tTex3du4): 105(ptr) Variable UniformConstant + 114(PS_OUTPUT): TypeStruct 27(fvec4) 6(float) + 115: TypePointer Function 114(PS_OUTPUT) + 117: 11(int) Constant 0 + 118: 6(float) Constant 1065353216 + 119: 27(fvec4) ConstantComposite 118 118 118 118 + 120: TypePointer Function 27(fvec4) + 122: TypePointer Function 6(float) + 124: TypePointer Output 27(fvec4) + 125(Color): 124(ptr) Variable Output + 128: TypePointer Output 6(float) + 129(Depth): 128(ptr) Variable Output + 133: TypeSampler + 134: TypePointer UniformConstant 133 + 135(g_sSamp): 134(ptr) Variable UniformConstant + 136: TypeImage 6(float) Cube sampled format:Unknown + 137: TypePointer UniformConstant 136 + 138(g_tTexcdf4): 137(ptr) Variable UniformConstant + 139: TypeImage 11(int) Cube sampled format:Unknown + 140: TypePointer UniformConstant 139 + 141(g_tTexcdi4): 140(ptr) Variable UniformConstant + 142: TypeImage 19(int) Cube sampled format:Unknown + 143: TypePointer UniformConstant 142 + 144(g_tTexcdu4): 143(ptr) Variable UniformConstant + 145: TypeImage 6(float) 1D array sampled format:Unknown + 146: TypePointer UniformConstant 145 +147(g_tTex1df4a): 146(ptr) Variable UniformConstant + 148: TypeImage 11(int) 1D array sampled format:Unknown + 149: TypePointer UniformConstant 148 +150(g_tTex1di4a): 149(ptr) Variable UniformConstant + 151: TypeImage 19(int) 1D array sampled format:Unknown + 152: TypePointer UniformConstant 151 +153(g_tTex1du4a): 152(ptr) Variable UniformConstant + 154: TypeImage 6(float) 2D array sampled format:Unknown + 155: TypePointer UniformConstant 154 +156(g_tTex2df4a): 155(ptr) Variable UniformConstant + 157: TypeImage 11(int) 2D array sampled format:Unknown + 158: TypePointer UniformConstant 157 +159(g_tTex2di4a): 158(ptr) Variable UniformConstant + 160: TypeImage 19(int) 2D array sampled format:Unknown + 161: TypePointer UniformConstant 160 +162(g_tTex2du4a): 161(ptr) Variable UniformConstant + 163: TypeImage 6(float) Cube array sampled format:Unknown + 164: TypePointer UniformConstant 163 +165(g_tTexcdf4a): 164(ptr) Variable UniformConstant + 166: TypeImage 11(int) Cube array sampled format:Unknown + 167: TypePointer UniformConstant 166 +168(g_tTexcdi4a): 167(ptr) Variable UniformConstant + 169: TypeImage 19(int) Cube array sampled format:Unknown + 170: TypePointer UniformConstant 169 +171(g_tTexcdu4a): 170(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 116(psout): 115(ptr) Variable Function + 10: 7 Load 9(g_tTex1df4) + 22: 21(ptr) AccessChain 17 18 20 + 23: 11(int) Load 22 + 25: 21(ptr) AccessChain 17 18 24 + 26: 11(int) Load 25 + 28: 27(fvec4) ImageFetch 10 23 Lod 26 + 32: 29 Load 31(g_tTex1di4) + 33: 21(ptr) AccessChain 17 18 20 + 34: 11(int) Load 33 + 35: 21(ptr) AccessChain 17 18 24 + 36: 11(int) Load 35 + 37: 14(ivec4) ImageFetch 32 34 Lod 36 + 41: 38 Load 40(g_tTex1du4) + 42: 21(ptr) AccessChain 17 18 20 + 43: 11(int) Load 42 + 44: 21(ptr) AccessChain 17 18 24 + 45: 11(int) Load 44 + 47: 46(ivec4) ImageFetch 41 43 Lod 45 + 51: 48 Load 50(g_tTex2df4) + 54: 53(ptr) AccessChain 17 52 + 55: 13(ivec3) Load 54 + 56: 12(ivec2) VectorShuffle 55 55 0 1 + 58: 21(ptr) AccessChain 17 52 57 + 59: 11(int) Load 58 + 60: 27(fvec4) ImageFetch 51 56 Lod 59 + 64: 61 Load 63(g_tTex2di4) + 65: 53(ptr) AccessChain 17 52 + 66: 13(ivec3) Load 65 + 67: 12(ivec2) VectorShuffle 66 66 0 1 + 68: 21(ptr) AccessChain 17 52 57 + 69: 11(int) Load 68 + 70: 14(ivec4) ImageFetch 64 67 Lod 69 + 74: 71 Load 73(g_tTex2du4) + 75: 53(ptr) AccessChain 17 52 + 76: 13(ivec3) Load 75 + 77: 12(ivec2) VectorShuffle 76 76 0 1 + 78: 21(ptr) AccessChain 17 52 57 + 79: 11(int) Load 78 + 80: 46(ivec4) ImageFetch 74 77 Lod 79 + 84: 81 Load 83(g_tTex3df4) + 87: 86(ptr) AccessChain 17 85 + 88: 14(ivec4) Load 87 + 89: 13(ivec3) VectorShuffle 88 88 0 1 2 + 91: 21(ptr) AccessChain 17 85 90 + 92: 11(int) Load 91 + 93: 27(fvec4) ImageFetch 84 89 Lod 92 + 97: 94 Load 96(g_tTex3di4) + 98: 86(ptr) AccessChain 17 85 + 99: 14(ivec4) Load 98 + 100: 13(ivec3) VectorShuffle 99 99 0 1 2 + 101: 21(ptr) AccessChain 17 85 90 + 102: 11(int) Load 101 + 103: 14(ivec4) ImageFetch 97 100 Lod 102 + 107: 104 Load 106(g_tTex3du4) + 108: 86(ptr) AccessChain 17 85 + 109: 14(ivec4) Load 108 + 110: 13(ivec3) VectorShuffle 109 109 0 1 2 + 111: 21(ptr) AccessChain 17 85 90 + 112: 11(int) Load 111 + 113: 46(ivec4) ImageFetch 107 110 Lod 112 + 121: 120(ptr) AccessChain 116(psout) 117 + Store 121 119 + 123: 122(ptr) AccessChain 116(psout) 18 + Store 123 118 + 126: 120(ptr) AccessChain 116(psout) 117 + 127: 27(fvec4) Load 126 + Store 125(Color) 127 + 130: 122(ptr) AccessChain 116(psout) 18 + 131: 6(float) Load 130 + Store 129(Depth) 131 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out new file mode 100644 index 00000000..9495c602 --- /dev/null +++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out @@ -0,0 +1,696 @@ +hlsl.load.basic.dx10.vert +Shader version: 450 +0:? Sequence +0:47 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) +0:47 Function Parameters: +0:? Sequence +0:51 textureFetch (temp 4-component vector of float) +0:51 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:51 vector swizzle (temp int) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) +0:51 Sequence +0:51 Constant: +0:51 0 (const int) +0:51 direct index (temp int) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) +0:51 Constant: +0:51 1 (const int) +0:52 textureFetch (temp 4-component vector of int) +0:52 'g_tTex1di4' (uniform itexture1D) +0:52 vector swizzle (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Sequence +0:52 Constant: +0:52 0 (const int) +0:52 direct index (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Constant: +0:52 1 (const int) +0:53 textureFetch (temp 4-component vector of uint) +0:53 'g_tTex1du4' (uniform utexture1D) +0:53 vector swizzle (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Sequence +0:53 Constant: +0:53 0 (const int) +0:53 direct index (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Constant: +0:53 1 (const int) +0:56 textureFetch (temp 4-component vector of float) +0:56 'g_tTex2df4' (uniform texture2D) +0:56 vector swizzle (temp 2-component vector of int) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:56 Sequence +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 direct index (temp int) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:56 Constant: +0:56 2 (const int) +0:57 textureFetch (temp 4-component vector of int) +0:57 'g_tTex2di4' (uniform itexture2D) +0:57 vector swizzle (temp 2-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Sequence +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 direct index (temp int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Constant: +0:57 2 (const int) +0:58 textureFetch (temp 4-component vector of uint) +0:58 'g_tTex2du4' (uniform utexture2D) +0:58 vector swizzle (temp 2-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Sequence +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 direct index (temp int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Constant: +0:58 2 (const int) +0:61 textureFetch (temp 4-component vector of float) +0:61 'g_tTex3df4' (uniform texture3D) +0:61 vector swizzle (temp 3-component vector of int) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 3 (const uint) +0:61 Sequence +0:61 Constant: +0:61 0 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 direct index (temp int) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 3 (const uint) +0:61 Constant: +0:61 3 (const int) +0:62 textureFetch (temp 4-component vector of int) +0:62 'g_tTex3di4' (uniform itexture3D) +0:62 vector swizzle (temp 3-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Sequence +0:62 Constant: +0:62 0 (const int) +0:62 Constant: +0:62 1 (const int) +0:62 Constant: +0:62 2 (const int) +0:62 direct index (temp int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Constant: +0:62 3 (const int) +0:63 textureFetch (temp 4-component vector of uint) +0:63 'g_tTex3du4' (uniform utexture3D) +0:63 vector swizzle (temp 3-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Sequence +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1 (const int) +0:63 Constant: +0:63 2 (const int) +0:63 direct index (temp int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +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) +0:67 'vsout' (temp structure{temp 4-component vector of float Pos}) +0:67 Constant: +0:67 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:69 Sequence +0:69 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +0:? 'g_tTexcdf4a' (uniform textureCubeArray) +0:? 'g_tTexcdi4a' (uniform itextureCubeArray) +0:? 'g_tTexcdu4a' (uniform utextureCubeArray) +0:? 'Pos' (out 4-component vector of float Position) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked vertex stage: + + +Shader version: 450 +0:? Sequence +0:47 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) +0:47 Function Parameters: +0:? Sequence +0:51 textureFetch (temp 4-component vector of float) +0:51 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:51 vector swizzle (temp int) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) +0:51 Sequence +0:51 Constant: +0:51 0 (const int) +0:51 direct index (temp int) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) +0:51 Constant: +0:51 1 (const int) +0:52 textureFetch (temp 4-component vector of int) +0:52 'g_tTex1di4' (uniform itexture1D) +0:52 vector swizzle (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Sequence +0:52 Constant: +0:52 0 (const int) +0:52 direct index (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Constant: +0:52 1 (const int) +0:53 textureFetch (temp 4-component vector of uint) +0:53 'g_tTex1du4' (uniform utexture1D) +0:53 vector swizzle (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Sequence +0:53 Constant: +0:53 0 (const int) +0:53 direct index (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Constant: +0:53 1 (const int) +0:56 textureFetch (temp 4-component vector of float) +0:56 'g_tTex2df4' (uniform texture2D) +0:56 vector swizzle (temp 2-component vector of int) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:56 Sequence +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 direct index (temp int) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:56 Constant: +0:56 2 (const int) +0:57 textureFetch (temp 4-component vector of int) +0:57 'g_tTex2di4' (uniform itexture2D) +0:57 vector swizzle (temp 2-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Sequence +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 direct index (temp int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Constant: +0:57 2 (const int) +0:58 textureFetch (temp 4-component vector of uint) +0:58 'g_tTex2du4' (uniform utexture2D) +0:58 vector swizzle (temp 2-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Sequence +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 direct index (temp int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Constant: +0:58 2 (const int) +0:61 textureFetch (temp 4-component vector of float) +0:61 'g_tTex3df4' (uniform texture3D) +0:61 vector swizzle (temp 3-component vector of int) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 3 (const uint) +0:61 Sequence +0:61 Constant: +0:61 0 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 direct index (temp int) +0:61 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 3 (const uint) +0:61 Constant: +0:61 3 (const int) +0:62 textureFetch (temp 4-component vector of int) +0:62 'g_tTex3di4' (uniform itexture3D) +0:62 vector swizzle (temp 3-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Sequence +0:62 Constant: +0:62 0 (const int) +0:62 Constant: +0:62 1 (const int) +0:62 Constant: +0:62 2 (const int) +0:62 direct index (temp int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Constant: +0:62 3 (const int) +0:63 textureFetch (temp 4-component vector of uint) +0:63 'g_tTex3du4' (uniform utexture3D) +0:63 vector swizzle (temp 3-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Sequence +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1 (const int) +0:63 Constant: +0:63 2 (const int) +0:63 direct index (temp int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +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) +0:67 'vsout' (temp structure{temp 4-component vector of float Pos}) +0:67 Constant: +0:67 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:69 Sequence +0:69 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +0:? 'g_tTexcdf4a' (uniform textureCubeArray) +0:? 'g_tTexcdi4a' (uniform itextureCubeArray) +0:? 'g_tTexcdu4a' (uniform utextureCubeArray) +0:? 'Pos' (out 4-component vector of float Position) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 166 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 123 + Name 4 "main" + Name 9 "g_tTex1df4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 31 "g_tTex1di4" + Name 40 "g_tTex1du4" + Name 50 "g_tTex2df4" + Name 63 "g_tTex2di4" + Name 73 "g_tTex2du4" + Name 83 "g_tTex3df4" + Name 96 "g_tTex3di4" + Name 106 "g_tTex3du4" + Name 114 "VS_OUTPUT" + MemberName 114(VS_OUTPUT) 0 "Pos" + Name 116 "vsout" + Name 123 "Pos" + Name 129 "g_sSamp" + Name 132 "g_tTexcdf4" + Name 135 "g_tTexcdi4" + Name 138 "g_tTexcdu4" + Name 141 "g_tTex1df4a" + Name 144 "g_tTex1di4a" + Name 147 "g_tTex1du4a" + Name 150 "g_tTex2df4a" + Name 153 "g_tTex2di4a" + Name 156 "g_tTex2du4a" + Name 159 "g_tTexcdf4a" + Name 162 "g_tTexcdi4a" + Name 165 "g_tTexcdu4a" + Decorate 9(g_tTex1df4) DescriptorSet 0 + Decorate 9(g_tTex1df4) Binding 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 31(g_tTex1di4) DescriptorSet 0 + Decorate 40(g_tTex1du4) DescriptorSet 0 + Decorate 50(g_tTex2df4) DescriptorSet 0 + Decorate 63(g_tTex2di4) DescriptorSet 0 + Decorate 73(g_tTex2du4) DescriptorSet 0 + Decorate 83(g_tTex3df4) DescriptorSet 0 + Decorate 96(g_tTex3di4) DescriptorSet 0 + Decorate 106(g_tTex3du4) DescriptorSet 0 + Decorate 123(Pos) BuiltIn Position + Decorate 129(g_sSamp) DescriptorSet 0 + Decorate 129(g_sSamp) Binding 0 + Decorate 132(g_tTexcdf4) DescriptorSet 0 + Decorate 135(g_tTexcdi4) DescriptorSet 0 + Decorate 138(g_tTexcdu4) DescriptorSet 0 + Decorate 141(g_tTex1df4a) DescriptorSet 0 + Decorate 144(g_tTex1di4a) DescriptorSet 0 + Decorate 147(g_tTex1du4a) DescriptorSet 0 + Decorate 150(g_tTex2df4a) DescriptorSet 0 + Decorate 153(g_tTex2di4a) DescriptorSet 0 + Decorate 156(g_tTex2du4a) DescriptorSet 0 + Decorate 159(g_tTexcdf4a) DescriptorSet 0 + Decorate 162(g_tTexcdi4a) DescriptorSet 0 + Decorate 165(g_tTexcdu4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) 1D sampled format:Unknown + 8: TypePointer UniformConstant 7 + 9(g_tTex1df4): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 1 + 19: TypeInt 32 0 + 20: 19(int) Constant 0 + 21: TypePointer Uniform 11(int) + 24: 19(int) Constant 1 + 27: TypeVector 6(float) 4 + 29: TypeImage 11(int) 1D sampled format:Unknown + 30: TypePointer UniformConstant 29 + 31(g_tTex1di4): 30(ptr) Variable UniformConstant + 38: TypeImage 19(int) 1D sampled format:Unknown + 39: TypePointer UniformConstant 38 + 40(g_tTex1du4): 39(ptr) Variable UniformConstant + 46: TypeVector 19(int) 4 + 48: TypeImage 6(float) 2D sampled format:Unknown + 49: TypePointer UniformConstant 48 + 50(g_tTex2df4): 49(ptr) Variable UniformConstant + 52: 11(int) Constant 2 + 53: TypePointer Uniform 13(ivec3) + 57: 19(int) Constant 2 + 61: TypeImage 11(int) 2D sampled format:Unknown + 62: TypePointer UniformConstant 61 + 63(g_tTex2di4): 62(ptr) Variable UniformConstant + 71: TypeImage 19(int) 2D sampled format:Unknown + 72: TypePointer UniformConstant 71 + 73(g_tTex2du4): 72(ptr) Variable UniformConstant + 81: TypeImage 6(float) 3D sampled format:Unknown + 82: TypePointer UniformConstant 81 + 83(g_tTex3df4): 82(ptr) Variable UniformConstant + 85: 11(int) Constant 3 + 86: TypePointer Uniform 14(ivec4) + 90: 19(int) Constant 3 + 94: TypeImage 11(int) 3D sampled format:Unknown + 95: TypePointer UniformConstant 94 + 96(g_tTex3di4): 95(ptr) Variable UniformConstant + 104: TypeImage 19(int) 3D sampled format:Unknown + 105: TypePointer UniformConstant 104 + 106(g_tTex3du4): 105(ptr) Variable UniformConstant + 114(VS_OUTPUT): TypeStruct 27(fvec4) + 115: TypePointer Function 114(VS_OUTPUT) + 117: 11(int) Constant 0 + 118: 6(float) Constant 0 + 119: 27(fvec4) ConstantComposite 118 118 118 118 + 120: TypePointer Function 27(fvec4) + 122: TypePointer Output 27(fvec4) + 123(Pos): 122(ptr) Variable Output + 127: TypeSampler + 128: TypePointer UniformConstant 127 + 129(g_sSamp): 128(ptr) Variable UniformConstant + 130: TypeImage 6(float) Cube sampled format:Unknown + 131: TypePointer UniformConstant 130 + 132(g_tTexcdf4): 131(ptr) Variable UniformConstant + 133: TypeImage 11(int) Cube sampled format:Unknown + 134: TypePointer UniformConstant 133 + 135(g_tTexcdi4): 134(ptr) Variable UniformConstant + 136: TypeImage 19(int) Cube sampled format:Unknown + 137: TypePointer UniformConstant 136 + 138(g_tTexcdu4): 137(ptr) Variable UniformConstant + 139: TypeImage 6(float) 1D array sampled format:Unknown + 140: TypePointer UniformConstant 139 +141(g_tTex1df4a): 140(ptr) Variable UniformConstant + 142: TypeImage 11(int) 1D array sampled format:Unknown + 143: TypePointer UniformConstant 142 +144(g_tTex1di4a): 143(ptr) Variable UniformConstant + 145: TypeImage 19(int) 1D array sampled format:Unknown + 146: TypePointer UniformConstant 145 +147(g_tTex1du4a): 146(ptr) Variable UniformConstant + 148: TypeImage 6(float) 2D array sampled format:Unknown + 149: TypePointer UniformConstant 148 +150(g_tTex2df4a): 149(ptr) Variable UniformConstant + 151: TypeImage 11(int) 2D array sampled format:Unknown + 152: TypePointer UniformConstant 151 +153(g_tTex2di4a): 152(ptr) Variable UniformConstant + 154: TypeImage 19(int) 2D array sampled format:Unknown + 155: TypePointer UniformConstant 154 +156(g_tTex2du4a): 155(ptr) Variable UniformConstant + 157: TypeImage 6(float) Cube array sampled format:Unknown + 158: TypePointer UniformConstant 157 +159(g_tTexcdf4a): 158(ptr) Variable UniformConstant + 160: TypeImage 11(int) Cube array sampled format:Unknown + 161: TypePointer UniformConstant 160 +162(g_tTexcdi4a): 161(ptr) Variable UniformConstant + 163: TypeImage 19(int) Cube array sampled format:Unknown + 164: TypePointer UniformConstant 163 +165(g_tTexcdu4a): 164(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 116(vsout): 115(ptr) Variable Function + 10: 7 Load 9(g_tTex1df4) + 22: 21(ptr) AccessChain 17 18 20 + 23: 11(int) Load 22 + 25: 21(ptr) AccessChain 17 18 24 + 26: 11(int) Load 25 + 28: 27(fvec4) ImageFetch 10 23 Lod 26 + 32: 29 Load 31(g_tTex1di4) + 33: 21(ptr) AccessChain 17 18 20 + 34: 11(int) Load 33 + 35: 21(ptr) AccessChain 17 18 24 + 36: 11(int) Load 35 + 37: 14(ivec4) ImageFetch 32 34 Lod 36 + 41: 38 Load 40(g_tTex1du4) + 42: 21(ptr) AccessChain 17 18 20 + 43: 11(int) Load 42 + 44: 21(ptr) AccessChain 17 18 24 + 45: 11(int) Load 44 + 47: 46(ivec4) ImageFetch 41 43 Lod 45 + 51: 48 Load 50(g_tTex2df4) + 54: 53(ptr) AccessChain 17 52 + 55: 13(ivec3) Load 54 + 56: 12(ivec2) VectorShuffle 55 55 0 1 + 58: 21(ptr) AccessChain 17 52 57 + 59: 11(int) Load 58 + 60: 27(fvec4) ImageFetch 51 56 Lod 59 + 64: 61 Load 63(g_tTex2di4) + 65: 53(ptr) AccessChain 17 52 + 66: 13(ivec3) Load 65 + 67: 12(ivec2) VectorShuffle 66 66 0 1 + 68: 21(ptr) AccessChain 17 52 57 + 69: 11(int) Load 68 + 70: 14(ivec4) ImageFetch 64 67 Lod 69 + 74: 71 Load 73(g_tTex2du4) + 75: 53(ptr) AccessChain 17 52 + 76: 13(ivec3) Load 75 + 77: 12(ivec2) VectorShuffle 76 76 0 1 + 78: 21(ptr) AccessChain 17 52 57 + 79: 11(int) Load 78 + 80: 46(ivec4) ImageFetch 74 77 Lod 79 + 84: 81 Load 83(g_tTex3df4) + 87: 86(ptr) AccessChain 17 85 + 88: 14(ivec4) Load 87 + 89: 13(ivec3) VectorShuffle 88 88 0 1 2 + 91: 21(ptr) AccessChain 17 85 90 + 92: 11(int) Load 91 + 93: 27(fvec4) ImageFetch 84 89 Lod 92 + 97: 94 Load 96(g_tTex3di4) + 98: 86(ptr) AccessChain 17 85 + 99: 14(ivec4) Load 98 + 100: 13(ivec3) VectorShuffle 99 99 0 1 2 + 101: 21(ptr) AccessChain 17 85 90 + 102: 11(int) Load 101 + 103: 14(ivec4) ImageFetch 97 100 Lod 102 + 107: 104 Load 106(g_tTex3du4) + 108: 86(ptr) AccessChain 17 85 + 109: 14(ivec4) Load 108 + 110: 13(ivec3) VectorShuffle 109 109 0 1 2 + 111: 21(ptr) AccessChain 17 85 90 + 112: 11(int) Load 111 + 113: 46(ivec4) ImageFetch 107 110 Lod 112 + 121: 120(ptr) AccessChain 116(vsout) 117 + Store 121 119 + 124: 120(ptr) AccessChain 116(vsout) 117 + 125: 27(fvec4) Load 124 + Store 123(Pos) 125 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out new file mode 100644 index 00000000..560d8f5d --- /dev/null +++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out @@ -0,0 +1,281 @@ +hlsl.load.buffer.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of float) +0:28 'r00' (temp 4-component vector of float) +0:28 textureFetch (temp 4-component vector of float) +0:28 'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer) +0:28 c1: direct index for structure (layout(offset=0 ) uniform int) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:28 Constant: +0:28 0 (const uint) +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of int) +0:29 'r01' (temp 4-component vector of int) +0:29 textureFetch (temp 4-component vector of int) +0:29 'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer) +0:29 c1: direct index for structure (layout(offset=0 ) uniform int) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:29 Constant: +0:29 0 (const uint) +0:30 Sequence +0:30 move second child to first child (temp 4-component vector of uint) +0:30 'r02' (temp 4-component vector of uint) +0:30 textureFetch (temp 4-component vector of uint) +0:30 'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer) +0:30 c1: direct index for structure (layout(offset=0 ) uniform int) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:30 Constant: +0:30 0 (const uint) +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 Depth}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1.000000 +0:34 1.000000 +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) +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 Sequence +0:37 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 rgba32f ) uniform samplerBuffer) +0:? 'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer) +0:? 'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer) +0:? 'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of float) +0:28 'r00' (temp 4-component vector of float) +0:28 textureFetch (temp 4-component vector of float) +0:28 'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer) +0:28 c1: direct index for structure (layout(offset=0 ) uniform int) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:28 Constant: +0:28 0 (const uint) +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of int) +0:29 'r01' (temp 4-component vector of int) +0:29 textureFetch (temp 4-component vector of int) +0:29 'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer) +0:29 c1: direct index for structure (layout(offset=0 ) uniform int) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:29 Constant: +0:29 0 (const uint) +0:30 Sequence +0:30 move second child to first child (temp 4-component vector of uint) +0:30 'r02' (temp 4-component vector of uint) +0:30 textureFetch (temp 4-component vector of uint) +0:30 'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer) +0:30 c1: direct index for structure (layout(offset=0 ) uniform int) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:30 Constant: +0:30 0 (const uint) +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 Depth}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1.000000 +0:34 1.000000 +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) +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 Sequence +0:37 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 rgba32f ) uniform samplerBuffer) +0:? 'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer) +0:? 'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer) +0:? 'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 71 + + Capability Shader + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 62 66 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "r00" + Name 13 "g_tTexbf4" + Name 19 "$Global" + MemberName 19($Global) 0 "c1" + MemberName 19($Global) 1 "c2" + MemberName 19($Global) 2 "c3" + MemberName 19($Global) 3 "c4" + MemberName 19($Global) 4 "o1" + MemberName 19($Global) 5 "o2" + MemberName 19($Global) 6 "o3" + MemberName 19($Global) 7 "o4" + Name 21 "" + Name 29 "r01" + Name 33 "g_tTexbi4" + Name 42 "r02" + Name 46 "g_tTexbu4" + Name 52 "PS_OUTPUT" + MemberName 52(PS_OUTPUT) 0 "Color" + MemberName 52(PS_OUTPUT) 1 "Depth" + Name 54 "psout" + Name 62 "Color" + Name 66 "Depth" + Name 70 "g_tTexbf4_test" + Decorate 13(g_tTexbf4) DescriptorSet 0 + MemberDecorate 19($Global) 0 Offset 0 + MemberDecorate 19($Global) 1 Offset 8 + MemberDecorate 19($Global) 2 Offset 16 + MemberDecorate 19($Global) 3 Offset 32 + MemberDecorate 19($Global) 4 Offset 48 + MemberDecorate 19($Global) 5 Offset 56 + MemberDecorate 19($Global) 6 Offset 64 + MemberDecorate 19($Global) 7 Offset 80 + Decorate 19($Global) Block + Decorate 21 DescriptorSet 0 + Decorate 33(g_tTexbi4) DescriptorSet 0 + Decorate 46(g_tTexbu4) DescriptorSet 0 + Decorate 62(Color) Location 0 + Decorate 66(Depth) BuiltIn FragDepth + Decorate 70(g_tTexbf4_test) DescriptorSet 0 + Decorate 70(g_tTexbf4_test) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) Buffer sampled format:Rgba32f + 11: TypeSampledImage 10 + 12: TypePointer UniformConstant 11 + 13(g_tTexbf4): 12(ptr) Variable UniformConstant + 15: TypeInt 32 1 + 16: TypeVector 15(int) 2 + 17: TypeVector 15(int) 3 + 18: TypeVector 15(int) 4 + 19($Global): TypeStruct 15(int) 16(ivec2) 17(ivec3) 18(ivec4) 15(int) 16(ivec2) 17(ivec3) 18(ivec4) + 20: TypePointer Uniform 19($Global) + 21: 20(ptr) Variable Uniform + 22: 15(int) Constant 0 + 23: TypePointer Uniform 15(int) + 28: TypePointer Function 18(ivec4) + 30: TypeImage 15(int) Buffer sampled format:Rgba32i + 31: TypeSampledImage 30 + 32: TypePointer UniformConstant 31 + 33(g_tTexbi4): 32(ptr) Variable UniformConstant + 39: TypeInt 32 0 + 40: TypeVector 39(int) 4 + 41: TypePointer Function 40(ivec4) + 43: TypeImage 39(int) Buffer sampled format:Rgba32ui + 44: TypeSampledImage 43 + 45: TypePointer UniformConstant 44 + 46(g_tTexbu4): 45(ptr) Variable UniformConstant + 52(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 53: TypePointer Function 52(PS_OUTPUT) + 55: 6(float) Constant 1065353216 + 56: 7(fvec4) ConstantComposite 55 55 55 55 + 58: 15(int) Constant 1 + 59: TypePointer Function 6(float) + 61: TypePointer Output 7(fvec4) + 62(Color): 61(ptr) Variable Output + 65: TypePointer Output 6(float) + 66(Depth): 65(ptr) Variable Output +70(g_tTexbf4_test): 12(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(r00): 8(ptr) Variable Function + 29(r01): 28(ptr) Variable Function + 42(r02): 41(ptr) Variable Function + 54(psout): 53(ptr) Variable Function + 14: 11 Load 13(g_tTexbf4) + 24: 23(ptr) AccessChain 21 22 + 25: 15(int) Load 24 + 26: 10 Image 14 + 27: 7(fvec4) ImageFetch 26 25 + Store 9(r00) 27 + 34: 31 Load 33(g_tTexbi4) + 35: 23(ptr) AccessChain 21 22 + 36: 15(int) Load 35 + 37: 30 Image 34 + 38: 18(ivec4) ImageFetch 37 36 + Store 29(r01) 38 + 47: 44 Load 46(g_tTexbu4) + 48: 23(ptr) AccessChain 21 22 + 49: 15(int) Load 48 + 50: 43 Image 47 + 51: 40(ivec4) ImageFetch 50 49 + Store 42(r02) 51 + 57: 8(ptr) AccessChain 54(psout) 22 + Store 57 56 + 60: 59(ptr) AccessChain 54(psout) 58 + Store 60 55 + 63: 8(ptr) AccessChain 54(psout) 22 + 64: 7(fvec4) Load 63 + Store 62(Color) 64 + 67: 59(ptr) AccessChain 54(psout) 58 + 68: 6(float) Load 67 + Store 66(Depth) 68 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out new file mode 100644 index 00000000..6d64b94c --- /dev/null +++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out @@ -0,0 +1,290 @@ +hlsl.load.buffer.float.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp float) +0:28 'r00' (temp float) +0:28 Construct float (temp float) +0:? textureFetch (temp 4-component vector of float) +0:28 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:28 c1: direct index for structure (layout(offset=0 ) uniform int) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:28 Constant: +0:28 0 (const uint) +0:29 Sequence +0:29 move second child to first child (temp int) +0:29 'r01' (temp int) +0:29 Construct int (temp int) +0:? textureFetch (temp 4-component vector of int) +0:29 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) +0:29 c1: direct index for structure (layout(offset=0 ) uniform int) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:29 Constant: +0:29 0 (const uint) +0:30 Sequence +0:30 move second child to first child (temp uint) +0:30 'r02' (temp uint) +0:30 Construct uint (temp uint) +0:? textureFetch (temp 4-component vector of uint) +0:30 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) +0:30 c1: direct index for structure (layout(offset=0 ) uniform int) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:30 Constant: +0:30 0 (const uint) +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 Depth}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1.000000 +0:34 1.000000 +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) +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 Sequence +0:37 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_tTexbfs_test' (layout(binding=0 r32f ) uniform samplerBuffer) +0:? 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:? 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) +0:? 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:28 Sequence +0:28 move second child to first child (temp float) +0:28 'r00' (temp float) +0:28 Construct float (temp float) +0:? textureFetch (temp 4-component vector of float) +0:28 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:28 c1: direct index for structure (layout(offset=0 ) uniform int) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:28 Constant: +0:28 0 (const uint) +0:29 Sequence +0:29 move second child to first child (temp int) +0:29 'r01' (temp int) +0:29 Construct int (temp int) +0:? textureFetch (temp 4-component vector of int) +0:29 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) +0:29 c1: direct index for structure (layout(offset=0 ) uniform int) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:29 Constant: +0:29 0 (const uint) +0:30 Sequence +0:30 move second child to first child (temp uint) +0:30 'r02' (temp uint) +0:30 Construct uint (temp uint) +0:? textureFetch (temp 4-component vector of uint) +0:30 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) +0:30 c1: direct index for structure (layout(offset=0 ) uniform int) +0:30 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:30 Constant: +0:30 0 (const uint) +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 Depth}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1.000000 +0:34 1.000000 +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) +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 Sequence +0:37 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_tTexbfs_test' (layout(binding=0 r32f ) uniform samplerBuffer) +0:? 'g_tTexbfs' (layout(r32f ) uniform samplerBuffer) +0:? 'g_tTexbis' (layout(r32i ) uniform isamplerBuffer) +0:? 'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 74 + + Capability Shader + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 65 69 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r00" + Name 12 "g_tTexbfs" + Name 18 "$Global" + MemberName 18($Global) 0 "c1" + MemberName 18($Global) 1 "c2" + MemberName 18($Global) 2 "c3" + MemberName 18($Global) 3 "c4" + MemberName 18($Global) 4 "o1" + MemberName 18($Global) 5 "o2" + MemberName 18($Global) 6 "o3" + MemberName 18($Global) 7 "o4" + Name 20 "" + Name 30 "r01" + Name 34 "g_tTexbis" + Name 43 "r02" + Name 47 "g_tTexbus" + Name 55 "PS_OUTPUT" + MemberName 55(PS_OUTPUT) 0 "Color" + MemberName 55(PS_OUTPUT) 1 "Depth" + Name 57 "psout" + Name 65 "Color" + Name 69 "Depth" + Name 73 "g_tTexbfs_test" + Decorate 12(g_tTexbfs) DescriptorSet 0 + MemberDecorate 18($Global) 0 Offset 0 + MemberDecorate 18($Global) 1 Offset 8 + MemberDecorate 18($Global) 2 Offset 16 + MemberDecorate 18($Global) 3 Offset 32 + MemberDecorate 18($Global) 4 Offset 48 + MemberDecorate 18($Global) 5 Offset 56 + MemberDecorate 18($Global) 6 Offset 64 + MemberDecorate 18($Global) 7 Offset 80 + Decorate 18($Global) Block + Decorate 20 DescriptorSet 0 + Decorate 34(g_tTexbis) DescriptorSet 0 + Decorate 47(g_tTexbus) DescriptorSet 0 + Decorate 65(Color) Location 0 + Decorate 69(Depth) BuiltIn FragDepth + Decorate 73(g_tTexbfs_test) DescriptorSet 0 + Decorate 73(g_tTexbfs_test) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) Buffer sampled format:R32f + 10: TypeSampledImage 9 + 11: TypePointer UniformConstant 10 + 12(g_tTexbfs): 11(ptr) Variable UniformConstant + 14: TypeInt 32 1 + 15: TypeVector 14(int) 2 + 16: TypeVector 14(int) 3 + 17: TypeVector 14(int) 4 + 18($Global): TypeStruct 14(int) 15(ivec2) 16(ivec3) 17(ivec4) 14(int) 15(ivec2) 16(ivec3) 17(ivec4) + 19: TypePointer Uniform 18($Global) + 20: 19(ptr) Variable Uniform + 21: 14(int) Constant 0 + 22: TypePointer Uniform 14(int) + 26: TypeVector 6(float) 4 + 29: TypePointer Function 14(int) + 31: TypeImage 14(int) Buffer sampled format:R32i + 32: TypeSampledImage 31 + 33: TypePointer UniformConstant 32 + 34(g_tTexbis): 33(ptr) Variable UniformConstant + 41: TypeInt 32 0 + 42: TypePointer Function 41(int) + 44: TypeImage 41(int) Buffer sampled format:R32ui + 45: TypeSampledImage 44 + 46: TypePointer UniformConstant 45 + 47(g_tTexbus): 46(ptr) Variable UniformConstant + 52: TypeVector 41(int) 4 + 55(PS_OUTPUT): TypeStruct 26(fvec4) 6(float) + 56: TypePointer Function 55(PS_OUTPUT) + 58: 6(float) Constant 1065353216 + 59: 26(fvec4) ConstantComposite 58 58 58 58 + 60: TypePointer Function 26(fvec4) + 62: 14(int) Constant 1 + 64: TypePointer Output 26(fvec4) + 65(Color): 64(ptr) Variable Output + 68: TypePointer Output 6(float) + 69(Depth): 68(ptr) Variable Output +73(g_tTexbfs_test): 11(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 8(r00): 7(ptr) Variable Function + 30(r01): 29(ptr) Variable Function + 43(r02): 42(ptr) Variable Function + 57(psout): 56(ptr) Variable Function + 13: 10 Load 12(g_tTexbfs) + 23: 22(ptr) AccessChain 20 21 + 24: 14(int) Load 23 + 25: 9 Image 13 + 27: 26(fvec4) ImageFetch 25 24 + 28: 6(float) CompositeExtract 27 0 + Store 8(r00) 28 + 35: 32 Load 34(g_tTexbis) + 36: 22(ptr) AccessChain 20 21 + 37: 14(int) Load 36 + 38: 31 Image 35 + 39: 17(ivec4) ImageFetch 38 37 + 40: 14(int) CompositeExtract 39 0 + Store 30(r01) 40 + 48: 45 Load 47(g_tTexbus) + 49: 22(ptr) AccessChain 20 21 + 50: 14(int) Load 49 + 51: 44 Image 48 + 53: 52(ivec4) ImageFetch 51 50 + 54: 41(int) CompositeExtract 53 0 + Store 43(r02) 54 + 61: 60(ptr) AccessChain 57(psout) 21 + Store 61 59 + 63: 7(ptr) AccessChain 57(psout) 62 + Store 63 58 + 66: 60(ptr) AccessChain 57(psout) 21 + 67: 26(fvec4) Load 66 + Store 65(Color) 67 + 70: 7(ptr) AccessChain 57(psout) 62 + 71: 6(float) Load 70 + Store 69(Depth) 71 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out new file mode 100644 index 00000000..069e05d0 --- /dev/null +++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out @@ -0,0 +1,833 @@ +hlsl.load.offset.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Parameters: +0:? Sequence +0:52 textureFetchOffset (temp 4-component vector of float) +0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:52 vector swizzle (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Sequence +0:52 Constant: +0:52 0 (const int) +0:52 direct index (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Constant: +0:52 1 (const int) +0:52 o1: direct index for structure (layout(offset=48 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 4 (const uint) +0:53 textureFetchOffset (temp 4-component vector of int) +0:53 'g_tTex1di4' (uniform itexture1D) +0:53 vector swizzle (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Sequence +0:53 Constant: +0:53 0 (const int) +0:53 direct index (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Constant: +0:53 1 (const int) +0:53 o1: direct index for structure (layout(offset=48 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 4 (const uint) +0:54 textureFetchOffset (temp 4-component vector of uint) +0:54 'g_tTex1du4' (uniform utexture1D) +0:54 vector swizzle (temp int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 direct index (temp int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) +0:54 Constant: +0:54 1 (const int) +0:54 o1: direct index for structure (layout(offset=48 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 4 (const uint) +0:57 textureFetchOffset (temp 4-component vector of float) +0:57 'g_tTex2df4' (uniform texture2D) +0:57 vector swizzle (temp 2-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Sequence +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 direct index (temp int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Constant: +0:57 2 (const int) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) +0:58 textureFetchOffset (temp 4-component vector of int) +0:58 'g_tTex2di4' (uniform itexture2D) +0:58 vector swizzle (temp 2-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Sequence +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 direct index (temp int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Constant: +0:58 2 (const int) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) +0:59 textureFetchOffset (temp 4-component vector of uint) +0:59 'g_tTex2du4' (uniform utexture2D) +0:59 vector swizzle (temp 2-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 direct index (temp int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) +0:59 Constant: +0:59 2 (const int) +0:59 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 5 (const uint) +0:62 textureFetchOffset (temp 4-component vector of float) +0:62 'g_tTex3df4' (uniform texture3D) +0:62 vector swizzle (temp 3-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Sequence +0:62 Constant: +0:62 0 (const int) +0:62 Constant: +0:62 1 (const int) +0:62 Constant: +0:62 2 (const int) +0:62 direct index (temp int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Constant: +0:62 3 (const int) +0:62 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 6 (const uint) +0:63 textureFetchOffset (temp 4-component vector of int) +0:63 'g_tTex3di4' (uniform itexture3D) +0:63 vector swizzle (temp 3-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Sequence +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1 (const int) +0:63 Constant: +0:63 2 (const int) +0:63 direct index (temp int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Constant: +0:63 3 (const int) +0:63 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 6 (const uint) +0:64 textureFetchOffset (temp 4-component vector of uint) +0:64 'g_tTex3du4' (uniform utexture3D) +0:64 vector swizzle (temp 3-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) +0:64 Sequence +0:64 Constant: +0:64 0 (const int) +0:64 Constant: +0:64 1 (const int) +0:64 Constant: +0:64 2 (const int) +0:64 direct index (temp int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) +0:64 Constant: +0:64 3 (const int) +0:64 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 6 (const uint) +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 Depth}) +0:72 Constant: +0:72 0 (const int) +0:72 Constant: +0:72 1.000000 +0:72 1.000000 +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) +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 Sequence +0:75 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Parameters: +0:? Sequence +0:52 textureFetchOffset (temp 4-component vector of float) +0:52 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:52 vector swizzle (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Sequence +0:52 Constant: +0:52 0 (const int) +0:52 direct index (temp int) +0:52 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 1 (const uint) +0:52 Constant: +0:52 1 (const int) +0:52 o1: direct index for structure (layout(offset=48 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 4 (const uint) +0:53 textureFetchOffset (temp 4-component vector of int) +0:53 'g_tTex1di4' (uniform itexture1D) +0:53 vector swizzle (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Sequence +0:53 Constant: +0:53 0 (const int) +0:53 direct index (temp int) +0:53 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 1 (const uint) +0:53 Constant: +0:53 1 (const int) +0:53 o1: direct index for structure (layout(offset=48 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 4 (const uint) +0:54 textureFetchOffset (temp 4-component vector of uint) +0:54 'g_tTex1du4' (uniform utexture1D) +0:54 vector swizzle (temp int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 direct index (temp int) +0:54 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 1 (const uint) +0:54 Constant: +0:54 1 (const int) +0:54 o1: direct index for structure (layout(offset=48 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 4 (const uint) +0:57 textureFetchOffset (temp 4-component vector of float) +0:57 'g_tTex2df4' (uniform texture2D) +0:57 vector swizzle (temp 2-component vector of int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Sequence +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 direct index (temp int) +0:57 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 2 (const uint) +0:57 Constant: +0:57 2 (const int) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) +0:58 textureFetchOffset (temp 4-component vector of int) +0:58 'g_tTex2di4' (uniform itexture2D) +0:58 vector swizzle (temp 2-component vector of int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Sequence +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 direct index (temp int) +0:58 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 2 (const uint) +0:58 Constant: +0:58 2 (const int) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) +0:59 textureFetchOffset (temp 4-component vector of uint) +0:59 'g_tTex2du4' (uniform utexture2D) +0:59 vector swizzle (temp 2-component vector of int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 direct index (temp int) +0:59 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 2 (const uint) +0:59 Constant: +0:59 2 (const int) +0:59 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 5 (const uint) +0:62 textureFetchOffset (temp 4-component vector of float) +0:62 'g_tTex3df4' (uniform texture3D) +0:62 vector swizzle (temp 3-component vector of int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Sequence +0:62 Constant: +0:62 0 (const int) +0:62 Constant: +0:62 1 (const int) +0:62 Constant: +0:62 2 (const int) +0:62 direct index (temp int) +0:62 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 3 (const uint) +0:62 Constant: +0:62 3 (const int) +0:62 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 6 (const uint) +0:63 textureFetchOffset (temp 4-component vector of int) +0:63 'g_tTex3di4' (uniform itexture3D) +0:63 vector swizzle (temp 3-component vector of int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Sequence +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1 (const int) +0:63 Constant: +0:63 2 (const int) +0:63 direct index (temp int) +0:63 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 3 (const uint) +0:63 Constant: +0:63 3 (const int) +0:63 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 6 (const uint) +0:64 textureFetchOffset (temp 4-component vector of uint) +0:64 'g_tTex3du4' (uniform utexture3D) +0:64 vector swizzle (temp 3-component vector of int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) +0:64 Sequence +0:64 Constant: +0:64 0 (const int) +0:64 Constant: +0:64 1 (const int) +0:64 Constant: +0:64 2 (const int) +0:64 direct index (temp int) +0:64 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 3 (const uint) +0:64 Constant: +0:64 3 (const int) +0:64 o3: direct index for structure (layout(offset=64 ) uniform 3-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:64 Constant: +0:64 6 (const uint) +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 Depth}) +0:72 Constant: +0:72 0 (const int) +0:72 Constant: +0:72 1.000000 +0:72 1.000000 +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) +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 Sequence +0:75 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 194 + + Capability Shader + Capability ImageGatherExtended + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 147 151 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tTex1df4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 34 "g_tTex1di4" + Name 45 "g_tTex1du4" + Name 57 "g_tTex2df4" + Name 74 "g_tTex2di4" + Name 86 "g_tTex2du4" + Name 98 "g_tTex3df4" + Name 114 "g_tTex3di4" + Name 126 "g_tTex3du4" + Name 136 "PS_OUTPUT" + MemberName 136(PS_OUTPUT) 0 "Color" + MemberName 136(PS_OUTPUT) 1 "Depth" + Name 138 "psout" + Name 147 "Color" + Name 151 "Depth" + Name 157 "g_sSamp" + Name 160 "g_tTexcdf4" + Name 163 "g_tTexcdi4" + Name 166 "g_tTexcdu4" + Name 169 "g_tTex1df4a" + Name 172 "g_tTex1di4a" + Name 175 "g_tTex1du4a" + Name 178 "g_tTex2df4a" + Name 181 "g_tTex2di4a" + Name 184 "g_tTex2du4a" + Name 187 "g_tTexcdf4a" + Name 190 "g_tTexcdi4a" + Name 193 "g_tTexcdu4a" + Decorate 9(g_tTex1df4) DescriptorSet 0 + Decorate 9(g_tTex1df4) Binding 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 34(g_tTex1di4) DescriptorSet 0 + Decorate 45(g_tTex1du4) DescriptorSet 0 + Decorate 57(g_tTex2df4) DescriptorSet 0 + Decorate 74(g_tTex2di4) DescriptorSet 0 + Decorate 86(g_tTex2du4) DescriptorSet 0 + Decorate 98(g_tTex3df4) DescriptorSet 0 + Decorate 114(g_tTex3di4) DescriptorSet 0 + Decorate 126(g_tTex3du4) DescriptorSet 0 + Decorate 147(Color) Location 0 + Decorate 151(Depth) BuiltIn FragDepth + Decorate 157(g_sSamp) DescriptorSet 0 + Decorate 157(g_sSamp) Binding 0 + Decorate 160(g_tTexcdf4) DescriptorSet 0 + Decorate 163(g_tTexcdi4) DescriptorSet 0 + Decorate 166(g_tTexcdu4) DescriptorSet 0 + Decorate 169(g_tTex1df4a) DescriptorSet 0 + Decorate 172(g_tTex1di4a) DescriptorSet 0 + Decorate 175(g_tTex1du4a) DescriptorSet 0 + Decorate 178(g_tTex2df4a) DescriptorSet 0 + Decorate 181(g_tTex2di4a) DescriptorSet 0 + Decorate 184(g_tTex2du4a) DescriptorSet 0 + Decorate 187(g_tTexcdf4a) DescriptorSet 0 + Decorate 190(g_tTexcdi4a) DescriptorSet 0 + Decorate 193(g_tTexcdu4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) 1D sampled format:Unknown + 8: TypePointer UniformConstant 7 + 9(g_tTex1df4): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 1 + 19: TypeInt 32 0 + 20: 19(int) Constant 0 + 21: TypePointer Uniform 11(int) + 24: 19(int) Constant 1 + 27: 11(int) Constant 4 + 30: TypeVector 6(float) 4 + 32: TypeImage 11(int) 1D sampled format:Unknown + 33: TypePointer UniformConstant 32 + 34(g_tTex1di4): 33(ptr) Variable UniformConstant + 43: TypeImage 19(int) 1D sampled format:Unknown + 44: TypePointer UniformConstant 43 + 45(g_tTex1du4): 44(ptr) Variable UniformConstant + 53: TypeVector 19(int) 4 + 55: TypeImage 6(float) 2D sampled format:Unknown + 56: TypePointer UniformConstant 55 + 57(g_tTex2df4): 56(ptr) Variable UniformConstant + 59: 11(int) Constant 2 + 60: TypePointer Uniform 13(ivec3) + 64: 19(int) Constant 2 + 67: 11(int) Constant 5 + 68: TypePointer Uniform 12(ivec2) + 72: TypeImage 11(int) 2D sampled format:Unknown + 73: TypePointer UniformConstant 72 + 74(g_tTex2di4): 73(ptr) Variable UniformConstant + 84: TypeImage 19(int) 2D sampled format:Unknown + 85: TypePointer UniformConstant 84 + 86(g_tTex2du4): 85(ptr) Variable UniformConstant + 96: TypeImage 6(float) 3D sampled format:Unknown + 97: TypePointer UniformConstant 96 + 98(g_tTex3df4): 97(ptr) Variable UniformConstant + 100: 11(int) Constant 3 + 101: TypePointer Uniform 14(ivec4) + 105: 19(int) Constant 3 + 108: 11(int) Constant 6 + 112: TypeImage 11(int) 3D sampled format:Unknown + 113: TypePointer UniformConstant 112 + 114(g_tTex3di4): 113(ptr) Variable UniformConstant + 124: TypeImage 19(int) 3D sampled format:Unknown + 125: TypePointer UniformConstant 124 + 126(g_tTex3du4): 125(ptr) Variable UniformConstant + 136(PS_OUTPUT): TypeStruct 30(fvec4) 6(float) + 137: TypePointer Function 136(PS_OUTPUT) + 139: 11(int) Constant 0 + 140: 6(float) Constant 1065353216 + 141: 30(fvec4) ConstantComposite 140 140 140 140 + 142: TypePointer Function 30(fvec4) + 144: TypePointer Function 6(float) + 146: TypePointer Output 30(fvec4) + 147(Color): 146(ptr) Variable Output + 150: TypePointer Output 6(float) + 151(Depth): 150(ptr) Variable Output + 155: TypeSampler + 156: TypePointer UniformConstant 155 + 157(g_sSamp): 156(ptr) Variable UniformConstant + 158: TypeImage 6(float) Cube sampled format:Unknown + 159: TypePointer UniformConstant 158 + 160(g_tTexcdf4): 159(ptr) Variable UniformConstant + 161: TypeImage 11(int) Cube sampled format:Unknown + 162: TypePointer UniformConstant 161 + 163(g_tTexcdi4): 162(ptr) Variable UniformConstant + 164: TypeImage 19(int) Cube sampled format:Unknown + 165: TypePointer UniformConstant 164 + 166(g_tTexcdu4): 165(ptr) Variable UniformConstant + 167: TypeImage 6(float) 1D array sampled format:Unknown + 168: TypePointer UniformConstant 167 +169(g_tTex1df4a): 168(ptr) Variable UniformConstant + 170: TypeImage 11(int) 1D array sampled format:Unknown + 171: TypePointer UniformConstant 170 +172(g_tTex1di4a): 171(ptr) Variable UniformConstant + 173: TypeImage 19(int) 1D array sampled format:Unknown + 174: TypePointer UniformConstant 173 +175(g_tTex1du4a): 174(ptr) Variable UniformConstant + 176: TypeImage 6(float) 2D array sampled format:Unknown + 177: TypePointer UniformConstant 176 +178(g_tTex2df4a): 177(ptr) Variable UniformConstant + 179: TypeImage 11(int) 2D array sampled format:Unknown + 180: TypePointer UniformConstant 179 +181(g_tTex2di4a): 180(ptr) Variable UniformConstant + 182: TypeImage 19(int) 2D array sampled format:Unknown + 183: TypePointer UniformConstant 182 +184(g_tTex2du4a): 183(ptr) Variable UniformConstant + 185: TypeImage 6(float) Cube array sampled format:Unknown + 186: TypePointer UniformConstant 185 +187(g_tTexcdf4a): 186(ptr) Variable UniformConstant + 188: TypeImage 11(int) Cube array sampled format:Unknown + 189: TypePointer UniformConstant 188 +190(g_tTexcdi4a): 189(ptr) Variable UniformConstant + 191: TypeImage 19(int) Cube array sampled format:Unknown + 192: TypePointer UniformConstant 191 +193(g_tTexcdu4a): 192(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 138(psout): 137(ptr) Variable Function + 10: 7 Load 9(g_tTex1df4) + 22: 21(ptr) AccessChain 17 18 20 + 23: 11(int) Load 22 + 25: 21(ptr) AccessChain 17 18 24 + 26: 11(int) Load 25 + 28: 21(ptr) AccessChain 17 27 + 29: 11(int) Load 28 + 31: 30(fvec4) ImageFetch 10 23 Lod Offset 26 29 + 35: 32 Load 34(g_tTex1di4) + 36: 21(ptr) AccessChain 17 18 20 + 37: 11(int) Load 36 + 38: 21(ptr) AccessChain 17 18 24 + 39: 11(int) Load 38 + 40: 21(ptr) AccessChain 17 27 + 41: 11(int) Load 40 + 42: 14(ivec4) ImageFetch 35 37 Lod Offset 39 41 + 46: 43 Load 45(g_tTex1du4) + 47: 21(ptr) AccessChain 17 18 20 + 48: 11(int) Load 47 + 49: 21(ptr) AccessChain 17 18 24 + 50: 11(int) Load 49 + 51: 21(ptr) AccessChain 17 27 + 52: 11(int) Load 51 + 54: 53(ivec4) ImageFetch 46 48 Lod Offset 50 52 + 58: 55 Load 57(g_tTex2df4) + 61: 60(ptr) AccessChain 17 59 + 62: 13(ivec3) Load 61 + 63: 12(ivec2) VectorShuffle 62 62 0 1 + 65: 21(ptr) AccessChain 17 59 64 + 66: 11(int) Load 65 + 69: 68(ptr) AccessChain 17 67 + 70: 12(ivec2) Load 69 + 71: 30(fvec4) ImageFetch 58 63 Lod Offset 66 70 + 75: 72 Load 74(g_tTex2di4) + 76: 60(ptr) AccessChain 17 59 + 77: 13(ivec3) Load 76 + 78: 12(ivec2) VectorShuffle 77 77 0 1 + 79: 21(ptr) AccessChain 17 59 64 + 80: 11(int) Load 79 + 81: 68(ptr) AccessChain 17 67 + 82: 12(ivec2) Load 81 + 83: 14(ivec4) ImageFetch 75 78 Lod Offset 80 82 + 87: 84 Load 86(g_tTex2du4) + 88: 60(ptr) AccessChain 17 59 + 89: 13(ivec3) Load 88 + 90: 12(ivec2) VectorShuffle 89 89 0 1 + 91: 21(ptr) AccessChain 17 59 64 + 92: 11(int) Load 91 + 93: 68(ptr) AccessChain 17 67 + 94: 12(ivec2) Load 93 + 95: 53(ivec4) ImageFetch 87 90 Lod Offset 92 94 + 99: 96 Load 98(g_tTex3df4) + 102: 101(ptr) AccessChain 17 100 + 103: 14(ivec4) Load 102 + 104: 13(ivec3) VectorShuffle 103 103 0 1 2 + 106: 21(ptr) AccessChain 17 100 105 + 107: 11(int) Load 106 + 109: 60(ptr) AccessChain 17 108 + 110: 13(ivec3) Load 109 + 111: 30(fvec4) ImageFetch 99 104 Lod Offset 107 110 + 115: 112 Load 114(g_tTex3di4) + 116: 101(ptr) AccessChain 17 100 + 117: 14(ivec4) Load 116 + 118: 13(ivec3) VectorShuffle 117 117 0 1 2 + 119: 21(ptr) AccessChain 17 100 105 + 120: 11(int) Load 119 + 121: 60(ptr) AccessChain 17 108 + 122: 13(ivec3) Load 121 + 123: 14(ivec4) ImageFetch 115 118 Lod Offset 120 122 + 127: 124 Load 126(g_tTex3du4) + 128: 101(ptr) AccessChain 17 100 + 129: 14(ivec4) Load 128 + 130: 13(ivec3) VectorShuffle 129 129 0 1 2 + 131: 21(ptr) AccessChain 17 100 105 + 132: 11(int) Load 131 + 133: 60(ptr) AccessChain 17 108 + 134: 13(ivec3) Load 133 + 135: 53(ivec4) ImageFetch 127 130 Lod Offset 132 134 + 143: 142(ptr) AccessChain 138(psout) 139 + Store 143 141 + 145: 144(ptr) AccessChain 138(psout) 18 + Store 145 140 + 148: 142(ptr) AccessChain 138(psout) 139 + 149: 30(fvec4) Load 148 + Store 147(Color) 149 + 152: 144(ptr) AccessChain 138(psout) 18 + 153: 6(float) Load 152 + Store 151(Depth) 153 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out new file mode 100644 index 00000000..ed89ee8d --- /dev/null +++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out @@ -0,0 +1,680 @@ +hlsl.load.offsetarray.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Parameters: +0:? Sequence +0:52 textureFetchOffset (temp 4-component vector of float) +0:52 'g_tTex1df4a' (uniform texture1DArray) +0:52 vector swizzle (temp 2-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) +0:52 Sequence +0:52 Constant: +0:52 0 (const int) +0:52 Constant: +0:52 1 (const int) +0:52 direct index (temp int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) +0:52 Constant: +0:52 2 (const int) +0:52 o1: direct index for structure (layout(offset=48 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 4 (const uint) +0:53 textureFetchOffset (temp 4-component vector of int) +0:53 'g_tTex1di4a' (uniform itexture1DArray) +0:53 vector swizzle (temp 2-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) +0:53 Sequence +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 1 (const int) +0:53 direct index (temp int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) +0:53 Constant: +0:53 2 (const int) +0:53 o1: direct index for structure (layout(offset=48 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 4 (const uint) +0:54 textureFetchOffset (temp 4-component vector of uint) +0:54 'g_tTex1du4a' (uniform utexture1DArray) +0:54 vector swizzle (temp 2-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 direct index (temp int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:54 Constant: +0:54 2 (const int) +0:54 o1: direct index for structure (layout(offset=48 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 4 (const uint) +0:57 textureFetchOffset (temp 4-component vector of float) +0:57 'g_tTex2df4a' (uniform texture2DArray) +0:57 vector swizzle (temp 3-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) +0:57 Sequence +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 Constant: +0:57 2 (const int) +0:57 direct index (temp int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) +0:57 Constant: +0:57 3 (const int) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) +0:58 textureFetchOffset (temp 4-component vector of int) +0:58 'g_tTex2di4a' (uniform itexture2DArray) +0:58 vector swizzle (temp 3-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) +0:58 Sequence +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 2 (const int) +0:58 direct index (temp int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) +0:58 Constant: +0:58 3 (const int) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) +0:59 textureFetchOffset (temp 4-component vector of uint) +0:59 'g_tTex2du4a' (uniform utexture2DArray) +0:59 vector swizzle (temp 3-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 2 (const int) +0:59 direct index (temp int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) +0:59 Constant: +0:59 3 (const int) +0:59 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 5 (const uint) +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 Depth}) +0:65 Constant: +0:65 0 (const int) +0:65 Constant: +0:65 1.000000 +0:65 1.000000 +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) +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 Sequence +0:68 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:48 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:48 Function Parameters: +0:? Sequence +0:52 textureFetchOffset (temp 4-component vector of float) +0:52 'g_tTex1df4a' (uniform texture1DArray) +0:52 vector swizzle (temp 2-component vector of int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) +0:52 Sequence +0:52 Constant: +0:52 0 (const int) +0:52 Constant: +0:52 1 (const int) +0:52 direct index (temp int) +0:52 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 2 (const uint) +0:52 Constant: +0:52 2 (const int) +0:52 o1: direct index for structure (layout(offset=48 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 4 (const uint) +0:53 textureFetchOffset (temp 4-component vector of int) +0:53 'g_tTex1di4a' (uniform itexture1DArray) +0:53 vector swizzle (temp 2-component vector of int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) +0:53 Sequence +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 1 (const int) +0:53 direct index (temp int) +0:53 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 2 (const uint) +0:53 Constant: +0:53 2 (const int) +0:53 o1: direct index for structure (layout(offset=48 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 4 (const uint) +0:54 textureFetchOffset (temp 4-component vector of uint) +0:54 'g_tTex1du4a' (uniform utexture1DArray) +0:54 vector swizzle (temp 2-component vector of int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 direct index (temp int) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:54 Constant: +0:54 2 (const int) +0:54 o1: direct index for structure (layout(offset=48 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 4 (const uint) +0:57 textureFetchOffset (temp 4-component vector of float) +0:57 'g_tTex2df4a' (uniform texture2DArray) +0:57 vector swizzle (temp 3-component vector of int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) +0:57 Sequence +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 Constant: +0:57 2 (const int) +0:57 direct index (temp int) +0:57 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 3 (const uint) +0:57 Constant: +0:57 3 (const int) +0:57 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 5 (const uint) +0:58 textureFetchOffset (temp 4-component vector of int) +0:58 'g_tTex2di4a' (uniform itexture2DArray) +0:58 vector swizzle (temp 3-component vector of int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) +0:58 Sequence +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 2 (const int) +0:58 direct index (temp int) +0:58 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 3 (const uint) +0:58 Constant: +0:58 3 (const int) +0:58 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 5 (const uint) +0:59 textureFetchOffset (temp 4-component vector of uint) +0:59 'g_tTex2du4a' (uniform utexture2DArray) +0:59 vector swizzle (temp 3-component vector of int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 2 (const int) +0:59 direct index (temp int) +0:59 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 3 (const uint) +0:59 Constant: +0:59 3 (const int) +0:59 o2: direct index for structure (layout(offset=56 ) uniform 2-component vector of int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:59 Constant: +0:59 5 (const uint) +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 Depth}) +0:65 Constant: +0:65 0 (const int) +0:65 Constant: +0:65 1.000000 +0:65 1.000000 +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) +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 Sequence +0:68 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 167 + + Capability Shader + Capability ImageGatherExtended + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 111 115 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tTex1df4a" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 35 "g_tTex1di4a" + Name 47 "g_tTex1du4a" + Name 60 "g_tTex2df4a" + Name 77 "g_tTex2di4a" + Name 89 "g_tTex2du4a" + Name 99 "PS_OUTPUT" + MemberName 99(PS_OUTPUT) 0 "Color" + MemberName 99(PS_OUTPUT) 1 "Depth" + Name 101 "psout" + Name 111 "Color" + Name 115 "Depth" + Name 121 "g_sSamp" + Name 124 "g_tTex1df4" + Name 127 "g_tTex1di4" + Name 130 "g_tTex1du4" + Name 133 "g_tTex2df4" + Name 136 "g_tTex2di4" + Name 139 "g_tTex2du4" + Name 142 "g_tTex3df4" + Name 145 "g_tTex3di4" + Name 148 "g_tTex3du4" + Name 151 "g_tTexcdf4" + Name 154 "g_tTexcdi4" + Name 157 "g_tTexcdu4" + Name 160 "g_tTexcdf4a" + Name 163 "g_tTexcdi4a" + Name 166 "g_tTexcdu4a" + Decorate 9(g_tTex1df4a) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 35(g_tTex1di4a) DescriptorSet 0 + Decorate 47(g_tTex1du4a) DescriptorSet 0 + Decorate 60(g_tTex2df4a) DescriptorSet 0 + Decorate 77(g_tTex2di4a) DescriptorSet 0 + Decorate 89(g_tTex2du4a) DescriptorSet 0 + Decorate 111(Color) Location 0 + Decorate 115(Depth) BuiltIn FragDepth + Decorate 121(g_sSamp) DescriptorSet 0 + Decorate 121(g_sSamp) Binding 0 + Decorate 124(g_tTex1df4) DescriptorSet 0 + Decorate 124(g_tTex1df4) Binding 0 + Decorate 127(g_tTex1di4) DescriptorSet 0 + Decorate 130(g_tTex1du4) DescriptorSet 0 + Decorate 133(g_tTex2df4) DescriptorSet 0 + Decorate 136(g_tTex2di4) DescriptorSet 0 + Decorate 139(g_tTex2du4) DescriptorSet 0 + Decorate 142(g_tTex3df4) DescriptorSet 0 + Decorate 145(g_tTex3di4) DescriptorSet 0 + Decorate 148(g_tTex3du4) DescriptorSet 0 + Decorate 151(g_tTexcdf4) DescriptorSet 0 + Decorate 154(g_tTexcdi4) DescriptorSet 0 + Decorate 157(g_tTexcdu4) DescriptorSet 0 + Decorate 160(g_tTexcdf4a) DescriptorSet 0 + Decorate 163(g_tTexcdi4a) DescriptorSet 0 + Decorate 166(g_tTexcdu4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) 1D array sampled format:Unknown + 8: TypePointer UniformConstant 7 + 9(g_tTex1df4a): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 2 + 19: TypePointer Uniform 13(ivec3) + 23: TypeInt 32 0 + 24: 23(int) Constant 2 + 25: TypePointer Uniform 11(int) + 28: 11(int) Constant 4 + 31: TypeVector 6(float) 4 + 33: TypeImage 11(int) 1D array sampled format:Unknown + 34: TypePointer UniformConstant 33 + 35(g_tTex1di4a): 34(ptr) Variable UniformConstant + 45: TypeImage 23(int) 1D array sampled format:Unknown + 46: TypePointer UniformConstant 45 + 47(g_tTex1du4a): 46(ptr) Variable UniformConstant + 56: TypeVector 23(int) 4 + 58: TypeImage 6(float) 2D array sampled format:Unknown + 59: TypePointer UniformConstant 58 + 60(g_tTex2df4a): 59(ptr) Variable UniformConstant + 62: 11(int) Constant 3 + 63: TypePointer Uniform 14(ivec4) + 67: 23(int) Constant 3 + 70: 11(int) Constant 5 + 71: TypePointer Uniform 12(ivec2) + 75: TypeImage 11(int) 2D array sampled format:Unknown + 76: TypePointer UniformConstant 75 + 77(g_tTex2di4a): 76(ptr) Variable UniformConstant + 87: TypeImage 23(int) 2D array sampled format:Unknown + 88: TypePointer UniformConstant 87 + 89(g_tTex2du4a): 88(ptr) Variable UniformConstant + 99(PS_OUTPUT): TypeStruct 31(fvec4) 6(float) + 100: TypePointer Function 99(PS_OUTPUT) + 102: 11(int) Constant 0 + 103: 6(float) Constant 1065353216 + 104: 31(fvec4) ConstantComposite 103 103 103 103 + 105: TypePointer Function 31(fvec4) + 107: 11(int) Constant 1 + 108: TypePointer Function 6(float) + 110: TypePointer Output 31(fvec4) + 111(Color): 110(ptr) Variable Output + 114: TypePointer Output 6(float) + 115(Depth): 114(ptr) Variable Output + 119: TypeSampler + 120: TypePointer UniformConstant 119 + 121(g_sSamp): 120(ptr) Variable UniformConstant + 122: TypeImage 6(float) 1D sampled format:Unknown + 123: TypePointer UniformConstant 122 + 124(g_tTex1df4): 123(ptr) Variable UniformConstant + 125: TypeImage 11(int) 1D sampled format:Unknown + 126: TypePointer UniformConstant 125 + 127(g_tTex1di4): 126(ptr) Variable UniformConstant + 128: TypeImage 23(int) 1D sampled format:Unknown + 129: TypePointer UniformConstant 128 + 130(g_tTex1du4): 129(ptr) Variable UniformConstant + 131: TypeImage 6(float) 2D sampled format:Unknown + 132: TypePointer UniformConstant 131 + 133(g_tTex2df4): 132(ptr) Variable UniformConstant + 134: TypeImage 11(int) 2D sampled format:Unknown + 135: TypePointer UniformConstant 134 + 136(g_tTex2di4): 135(ptr) Variable UniformConstant + 137: TypeImage 23(int) 2D sampled format:Unknown + 138: TypePointer UniformConstant 137 + 139(g_tTex2du4): 138(ptr) Variable UniformConstant + 140: TypeImage 6(float) 3D sampled format:Unknown + 141: TypePointer UniformConstant 140 + 142(g_tTex3df4): 141(ptr) Variable UniformConstant + 143: TypeImage 11(int) 3D sampled format:Unknown + 144: TypePointer UniformConstant 143 + 145(g_tTex3di4): 144(ptr) Variable UniformConstant + 146: TypeImage 23(int) 3D sampled format:Unknown + 147: TypePointer UniformConstant 146 + 148(g_tTex3du4): 147(ptr) Variable UniformConstant + 149: TypeImage 6(float) Cube sampled format:Unknown + 150: TypePointer UniformConstant 149 + 151(g_tTexcdf4): 150(ptr) Variable UniformConstant + 152: TypeImage 11(int) Cube sampled format:Unknown + 153: TypePointer UniformConstant 152 + 154(g_tTexcdi4): 153(ptr) Variable UniformConstant + 155: TypeImage 23(int) Cube sampled format:Unknown + 156: TypePointer UniformConstant 155 + 157(g_tTexcdu4): 156(ptr) Variable UniformConstant + 158: TypeImage 6(float) Cube array sampled format:Unknown + 159: TypePointer UniformConstant 158 +160(g_tTexcdf4a): 159(ptr) Variable UniformConstant + 161: TypeImage 11(int) Cube array sampled format:Unknown + 162: TypePointer UniformConstant 161 +163(g_tTexcdi4a): 162(ptr) Variable UniformConstant + 164: TypeImage 23(int) Cube array sampled format:Unknown + 165: TypePointer UniformConstant 164 +166(g_tTexcdu4a): 165(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 101(psout): 100(ptr) Variable Function + 10: 7 Load 9(g_tTex1df4a) + 20: 19(ptr) AccessChain 17 18 + 21: 13(ivec3) Load 20 + 22: 12(ivec2) VectorShuffle 21 21 0 1 + 26: 25(ptr) AccessChain 17 18 24 + 27: 11(int) Load 26 + 29: 25(ptr) AccessChain 17 28 + 30: 11(int) Load 29 + 32: 31(fvec4) ImageFetch 10 22 Lod Offset 27 30 + 36: 33 Load 35(g_tTex1di4a) + 37: 19(ptr) AccessChain 17 18 + 38: 13(ivec3) Load 37 + 39: 12(ivec2) VectorShuffle 38 38 0 1 + 40: 25(ptr) AccessChain 17 18 24 + 41: 11(int) Load 40 + 42: 25(ptr) AccessChain 17 28 + 43: 11(int) Load 42 + 44: 14(ivec4) ImageFetch 36 39 Lod Offset 41 43 + 48: 45 Load 47(g_tTex1du4a) + 49: 19(ptr) AccessChain 17 18 + 50: 13(ivec3) Load 49 + 51: 12(ivec2) VectorShuffle 50 50 0 1 + 52: 25(ptr) AccessChain 17 18 24 + 53: 11(int) Load 52 + 54: 25(ptr) AccessChain 17 28 + 55: 11(int) Load 54 + 57: 56(ivec4) ImageFetch 48 51 Lod Offset 53 55 + 61: 58 Load 60(g_tTex2df4a) + 64: 63(ptr) AccessChain 17 62 + 65: 14(ivec4) Load 64 + 66: 13(ivec3) VectorShuffle 65 65 0 1 2 + 68: 25(ptr) AccessChain 17 62 67 + 69: 11(int) Load 68 + 72: 71(ptr) AccessChain 17 70 + 73: 12(ivec2) Load 72 + 74: 31(fvec4) ImageFetch 61 66 Lod Offset 69 73 + 78: 75 Load 77(g_tTex2di4a) + 79: 63(ptr) AccessChain 17 62 + 80: 14(ivec4) Load 79 + 81: 13(ivec3) VectorShuffle 80 80 0 1 2 + 82: 25(ptr) AccessChain 17 62 67 + 83: 11(int) Load 82 + 84: 71(ptr) AccessChain 17 70 + 85: 12(ivec2) Load 84 + 86: 14(ivec4) ImageFetch 78 81 Lod Offset 83 85 + 90: 87 Load 89(g_tTex2du4a) + 91: 63(ptr) AccessChain 17 62 + 92: 14(ivec4) Load 91 + 93: 13(ivec3) VectorShuffle 92 92 0 1 2 + 94: 25(ptr) AccessChain 17 62 67 + 95: 11(int) Load 94 + 96: 71(ptr) AccessChain 17 70 + 97: 12(ivec2) Load 96 + 98: 56(ivec4) ImageFetch 90 93 Lod Offset 95 97 + 106: 105(ptr) AccessChain 101(psout) 102 + Store 106 104 + 109: 108(ptr) AccessChain 101(psout) 107 + Store 109 103 + 112: 105(ptr) AccessChain 101(psout) 102 + 113: 31(fvec4) Load 112 + Store 111(Color) 113 + 116: 108(ptr) AccessChain 101(psout) 107 + 117: 6(float) Load 116 + Store 115(Depth) 117 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out new file mode 100644 index 00000000..7b263727 --- /dev/null +++ b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out @@ -0,0 +1,200 @@ +hlsl.load.rwbuffer.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:22 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:22 Function Parameters: +0:? Sequence +0:25 imageLoad (temp 4-component vector of float) +0:25 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:25 c1: direct index for structure (layout(offset=0 ) uniform int) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:25 Constant: +0:25 0 (const uint) +0:26 imageLoad (temp 4-component vector of uint) +0:26 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:26 c1: direct index for structure (layout(offset=0 ) uniform int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:26 Constant: +0:26 0 (const uint) +0:27 imageLoad (temp 4-component vector of int) +0:27 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:27 c1: direct index for structure (layout(offset=0 ) uniform int) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:27 Constant: +0:27 0 (const uint) +0:29 move second child to first child (temp 4-component vector of float) +0:29 Color: direct index for structure (temp 4-component vector of float) +0:29 'psout' (temp structure{temp 4-component vector of float Color}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:31 Sequence +0:31 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 'psout' (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:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:22 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:22 Function Parameters: +0:? Sequence +0:25 imageLoad (temp 4-component vector of float) +0:25 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:25 c1: direct index for structure (layout(offset=0 ) uniform int) +0:25 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:25 Constant: +0:25 0 (const uint) +0:26 imageLoad (temp 4-component vector of uint) +0:26 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:26 c1: direct index for structure (layout(offset=0 ) uniform int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:26 Constant: +0:26 0 (const uint) +0:27 imageLoad (temp 4-component vector of int) +0:27 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:27 c1: direct index for structure (layout(offset=0 ) uniform int) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:27 Constant: +0:27 0 (const uint) +0:29 move second child to first child (temp 4-component vector of float) +0:29 Color: direct index for structure (temp 4-component vector of float) +0:29 'psout' (temp structure{temp 4-component vector of float Color}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:29 1.000000 +0:31 Sequence +0:31 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 'psout' (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:? 'g_tBuffF' (layout(rgba32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 52 + + Capability Shader + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 48 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tBuffF" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 27 "g_tBuffU" + Name 35 "g_tBuffI" + Name 40 "PS_OUTPUT" + MemberName 40(PS_OUTPUT) 0 "Color" + Name 42 "psout" + Name 48 "Color" + Decorate 9(g_tBuffF) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 27(g_tBuffU) DescriptorSet 0 + Decorate 35(g_tBuffI) DescriptorSet 0 + Decorate 48(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) Buffer nonsampled format:Rgba32f + 8: TypePointer UniformConstant 7 + 9(g_tBuffF): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 0 + 19: TypePointer Uniform 11(int) + 22: TypeVector 6(float) 4 + 24: TypeInt 32 0 + 25: TypeImage 24(int) Buffer nonsampled format:Rgba32ui + 26: TypePointer UniformConstant 25 + 27(g_tBuffU): 26(ptr) Variable UniformConstant + 31: TypeVector 24(int) 4 + 33: TypeImage 11(int) Buffer nonsampled format:Rgba32i + 34: TypePointer UniformConstant 33 + 35(g_tBuffI): 34(ptr) Variable UniformConstant + 40(PS_OUTPUT): TypeStruct 22(fvec4) + 41: TypePointer Function 40(PS_OUTPUT) + 43: 6(float) Constant 1065353216 + 44: 22(fvec4) ConstantComposite 43 43 43 43 + 45: TypePointer Function 22(fvec4) + 47: TypePointer Output 22(fvec4) + 48(Color): 47(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 42(psout): 41(ptr) Variable Function + 10: 7 Load 9(g_tBuffF) + 20: 19(ptr) AccessChain 17 18 + 21: 11(int) Load 20 + 23: 22(fvec4) ImageRead 10 21 + 28: 25 Load 27(g_tBuffU) + 29: 19(ptr) AccessChain 17 18 + 30: 11(int) Load 29 + 32: 31(ivec4) ImageRead 28 30 + 36: 33 Load 35(g_tBuffI) + 37: 19(ptr) AccessChain 17 18 + 38: 11(int) Load 37 + 39: 14(ivec4) ImageRead 36 38 + 46: 45(ptr) AccessChain 42(psout) 18 + Store 46 44 + 49: 45(ptr) AccessChain 42(psout) 18 + 50: 22(fvec4) Load 49 + Store 48(Color) 50 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out new file mode 100644 index 00000000..8ac94d08 --- /dev/null +++ b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out @@ -0,0 +1,383 @@ +hlsl.load.rwtexture.array.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:40 Function Parameters: +0:? Sequence +0:44 imageLoad (temp 4-component vector of float) +0:44 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:44 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 1 (const uint) +0:45 imageLoad (temp 4-component vector of int) +0:45 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:45 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 1 (const uint) +0:46 imageLoad (temp 4-component vector of uint) +0:46 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:46 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 1 (const uint) +0:49 imageLoad (temp 4-component vector of float) +0:49 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 2 (const uint) +0:50 imageLoad (temp 4-component vector of int) +0:50 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:50 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 2 (const uint) +0:51 imageLoad (temp 4-component vector of uint) +0:51 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:51 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 2 (const uint) +0:53 move second child to first child (temp 4-component vector of float) +0:53 Color: direct index for structure (temp 4-component vector of float) +0:53 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 1.000000 +0:53 1.000000 +0:53 1.000000 +0:53 1.000000 +0:54 move second child to first child (temp float) +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 Constant: +0:54 1.000000 +0:56 Sequence +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 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 Depth}) +0:56 Constant: +0:56 0 (const int) +0:56 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:56 Depth: direct index for structure (temp float) +0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:56 Constant: +0:56 1 (const int) +0:56 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:40 Function Parameters: +0:? Sequence +0:44 imageLoad (temp 4-component vector of float) +0:44 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:44 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 1 (const uint) +0:45 imageLoad (temp 4-component vector of int) +0:45 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:45 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 1 (const uint) +0:46 imageLoad (temp 4-component vector of uint) +0:46 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:46 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 1 (const uint) +0:49 imageLoad (temp 4-component vector of float) +0:49 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:49 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 2 (const uint) +0:50 imageLoad (temp 4-component vector of int) +0:50 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:50 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 2 (const uint) +0:51 imageLoad (temp 4-component vector of uint) +0:51 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:51 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 2 (const uint) +0:53 move second child to first child (temp 4-component vector of float) +0:53 Color: direct index for structure (temp 4-component vector of float) +0:53 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 1.000000 +0:53 1.000000 +0:53 1.000000 +0:53 1.000000 +0:54 move second child to first child (temp float) +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 Constant: +0:54 1.000000 +0:56 Sequence +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 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 Depth}) +0:56 Constant: +0:56 0 (const int) +0:56 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:56 Depth: direct index for structure (temp float) +0:56 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:56 Constant: +0:56 1 (const int) +0:56 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 112 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 74 78 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tTex1df4a" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 26 "g_tTex1di4a" + Name 34 "g_tTex1du4a" + Name 42 "g_tTex2df4a" + Name 51 "g_tTex2di4a" + Name 58 "g_tTex2du4a" + Name 63 "PS_OUTPUT" + MemberName 63(PS_OUTPUT) 0 "Color" + MemberName 63(PS_OUTPUT) 1 "Depth" + Name 65 "psout" + Name 74 "Color" + Name 78 "Depth" + Name 84 "g_sSamp" + Name 87 "g_tTex1df4" + Name 90 "g_tTex1di4" + Name 93 "g_tTex1du4" + Name 96 "g_tTex2df4" + Name 99 "g_tTex2di4" + Name 102 "g_tTex2du4" + Name 105 "g_tTex3df4" + Name 108 "g_tTex3di4" + Name 111 "g_tTex3du4" + Decorate 9(g_tTex1df4a) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 26(g_tTex1di4a) DescriptorSet 0 + Decorate 34(g_tTex1du4a) DescriptorSet 0 + Decorate 42(g_tTex2df4a) DescriptorSet 0 + Decorate 51(g_tTex2di4a) DescriptorSet 0 + Decorate 58(g_tTex2du4a) DescriptorSet 0 + Decorate 74(Color) Location 0 + Decorate 78(Depth) BuiltIn FragDepth + Decorate 84(g_sSamp) DescriptorSet 0 + Decorate 84(g_sSamp) Binding 0 + Decorate 87(g_tTex1df4) DescriptorSet 0 + Decorate 87(g_tTex1df4) Binding 0 + Decorate 90(g_tTex1di4) DescriptorSet 0 + Decorate 93(g_tTex1du4) DescriptorSet 0 + Decorate 96(g_tTex2df4) DescriptorSet 0 + Decorate 99(g_tTex2di4) DescriptorSet 0 + Decorate 102(g_tTex2du4) DescriptorSet 0 + Decorate 105(g_tTex3df4) DescriptorSet 0 + Decorate 108(g_tTex3di4) DescriptorSet 0 + Decorate 111(g_tTex3du4) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) 1D array nonsampled format:Rgba32f + 8: TypePointer UniformConstant 7 + 9(g_tTex1df4a): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 1 + 19: TypePointer Uniform 12(ivec2) + 22: TypeVector 6(float) 4 + 24: TypeImage 11(int) 1D array nonsampled format:Rgba32i + 25: TypePointer UniformConstant 24 + 26(g_tTex1di4a): 25(ptr) Variable UniformConstant + 31: TypeInt 32 0 + 32: TypeImage 31(int) 1D array nonsampled format:Rgba32ui + 33: TypePointer UniformConstant 32 + 34(g_tTex1du4a): 33(ptr) Variable UniformConstant + 38: TypeVector 31(int) 4 + 40: TypeImage 6(float) 2D array nonsampled format:Rgba32f + 41: TypePointer UniformConstant 40 + 42(g_tTex2df4a): 41(ptr) Variable UniformConstant + 44: 11(int) Constant 2 + 45: TypePointer Uniform 13(ivec3) + 49: TypeImage 11(int) 2D array nonsampled format:Rgba32i + 50: TypePointer UniformConstant 49 + 51(g_tTex2di4a): 50(ptr) Variable UniformConstant + 56: TypeImage 31(int) 2D array nonsampled format:Rgba32ui + 57: TypePointer UniformConstant 56 + 58(g_tTex2du4a): 57(ptr) Variable UniformConstant + 63(PS_OUTPUT): TypeStruct 22(fvec4) 6(float) + 64: TypePointer Function 63(PS_OUTPUT) + 66: 11(int) Constant 0 + 67: 6(float) Constant 1065353216 + 68: 22(fvec4) ConstantComposite 67 67 67 67 + 69: TypePointer Function 22(fvec4) + 71: TypePointer Function 6(float) + 73: TypePointer Output 22(fvec4) + 74(Color): 73(ptr) Variable Output + 77: TypePointer Output 6(float) + 78(Depth): 77(ptr) Variable Output + 82: TypeSampler + 83: TypePointer UniformConstant 82 + 84(g_sSamp): 83(ptr) Variable UniformConstant + 85: TypeImage 6(float) 1D nonsampled format:Rgba32f + 86: TypePointer UniformConstant 85 + 87(g_tTex1df4): 86(ptr) Variable UniformConstant + 88: TypeImage 11(int) 1D nonsampled format:Rgba32i + 89: TypePointer UniformConstant 88 + 90(g_tTex1di4): 89(ptr) Variable UniformConstant + 91: TypeImage 31(int) 1D nonsampled format:Rgba32ui + 92: TypePointer UniformConstant 91 + 93(g_tTex1du4): 92(ptr) Variable UniformConstant + 94: TypeImage 6(float) 2D nonsampled format:Rgba32f + 95: TypePointer UniformConstant 94 + 96(g_tTex2df4): 95(ptr) Variable UniformConstant + 97: TypeImage 11(int) 2D nonsampled format:Rgba32i + 98: TypePointer UniformConstant 97 + 99(g_tTex2di4): 98(ptr) Variable UniformConstant + 100: TypeImage 31(int) 2D nonsampled format:Rgba32ui + 101: TypePointer UniformConstant 100 + 102(g_tTex2du4): 101(ptr) Variable UniformConstant + 103: TypeImage 6(float) 3D nonsampled format:Rgba32f + 104: TypePointer UniformConstant 103 + 105(g_tTex3df4): 104(ptr) Variable UniformConstant + 106: TypeImage 11(int) 3D nonsampled format:Rgba32i + 107: TypePointer UniformConstant 106 + 108(g_tTex3di4): 107(ptr) Variable UniformConstant + 109: TypeImage 31(int) 3D nonsampled format:Rgba32ui + 110: TypePointer UniformConstant 109 + 111(g_tTex3du4): 110(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 65(psout): 64(ptr) Variable Function + 10: 7 Load 9(g_tTex1df4a) + 20: 19(ptr) AccessChain 17 18 + 21: 12(ivec2) Load 20 + 23: 22(fvec4) ImageRead 10 21 + 27: 24 Load 26(g_tTex1di4a) + 28: 19(ptr) AccessChain 17 18 + 29: 12(ivec2) Load 28 + 30: 14(ivec4) ImageRead 27 29 + 35: 32 Load 34(g_tTex1du4a) + 36: 19(ptr) AccessChain 17 18 + 37: 12(ivec2) Load 36 + 39: 38(ivec4) ImageRead 35 37 + 43: 40 Load 42(g_tTex2df4a) + 46: 45(ptr) AccessChain 17 44 + 47: 13(ivec3) Load 46 + 48: 22(fvec4) ImageRead 43 47 + 52: 49 Load 51(g_tTex2di4a) + 53: 45(ptr) AccessChain 17 44 + 54: 13(ivec3) Load 53 + 55: 14(ivec4) ImageRead 52 54 + 59: 56 Load 58(g_tTex2du4a) + 60: 45(ptr) AccessChain 17 44 + 61: 13(ivec3) Load 60 + 62: 38(ivec4) ImageRead 59 61 + 70: 69(ptr) AccessChain 65(psout) 66 + Store 70 68 + 72: 71(ptr) AccessChain 65(psout) 18 + Store 72 67 + 75: 69(ptr) AccessChain 65(psout) 66 + 76: 22(fvec4) Load 75 + Store 74(Color) 76 + 79: 71(ptr) AccessChain 65(psout) 18 + 80: 6(float) Load 79 + Store 78(Depth) 80 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out new file mode 100644 index 00000000..ca590157 --- /dev/null +++ b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out @@ -0,0 +1,432 @@ +hlsl.load.rwtexture.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:40 Function Parameters: +0:? Sequence +0:44 imageLoad (temp 4-component vector of float) +0:44 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:44 c1: direct index for structure (layout(offset=0 ) uniform int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 0 (const uint) +0:45 imageLoad (temp 4-component vector of int) +0:45 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:45 c1: direct index for structure (layout(offset=0 ) uniform int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 0 (const uint) +0:46 imageLoad (temp 4-component vector of uint) +0:46 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:46 c1: direct index for structure (layout(offset=0 ) uniform int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 0 (const uint) +0:49 imageLoad (temp 4-component vector of float) +0:49 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:49 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 1 (const uint) +0:50 imageLoad (temp 4-component vector of int) +0:50 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 1 (const uint) +0:51 imageLoad (temp 4-component vector of uint) +0:51 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) +0:54 imageLoad (temp 4-component vector of float) +0:54 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:55 imageLoad (temp 4-component vector of int) +0:55 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:55 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:55 Constant: +0:55 2 (const uint) +0:56 imageLoad (temp 4-component vector of uint) +0:56 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:58 move second child to first child (temp 4-component vector of float) +0:58 Color: direct index for structure (temp 4-component vector of float) +0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1.000000 +0:58 1.000000 +0:58 1.000000 +0:58 1.000000 +0:59 move second child to first child (temp float) +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 Constant: +0:59 1.000000 +0:61 Sequence +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:61 Color: direct index for structure (temp 4-component vector of float) +0:61 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:61 Constant: +0:61 0 (const int) +0:61 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:61 Depth: direct index for structure (temp float) +0:61 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:61 Constant: +0:61 1 (const int) +0:61 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:40 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:40 Function Parameters: +0:? Sequence +0:44 imageLoad (temp 4-component vector of float) +0:44 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:44 c1: direct index for structure (layout(offset=0 ) uniform int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:44 Constant: +0:44 0 (const uint) +0:45 imageLoad (temp 4-component vector of int) +0:45 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:45 c1: direct index for structure (layout(offset=0 ) uniform int) +0:45 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:45 Constant: +0:45 0 (const uint) +0:46 imageLoad (temp 4-component vector of uint) +0:46 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:46 c1: direct index for structure (layout(offset=0 ) uniform int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:46 Constant: +0:46 0 (const uint) +0:49 imageLoad (temp 4-component vector of float) +0:49 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:49 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 1 (const uint) +0:50 imageLoad (temp 4-component vector of int) +0:50 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:50 Constant: +0:50 1 (const uint) +0:51 imageLoad (temp 4-component vector of uint) +0:51 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:51 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 1 (const uint) +0:54 imageLoad (temp 4-component vector of float) +0:54 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:54 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:54 Constant: +0:54 2 (const uint) +0:55 imageLoad (temp 4-component vector of int) +0:55 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:55 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:55 Constant: +0:55 2 (const uint) +0:56 imageLoad (temp 4-component vector of uint) +0:56 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:56 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 2 (const uint) +0:58 move second child to first child (temp 4-component vector of float) +0:58 Color: direct index for structure (temp 4-component vector of float) +0:58 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1.000000 +0:58 1.000000 +0:58 1.000000 +0:58 1.000000 +0:59 move second child to first child (temp float) +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 Constant: +0:59 1.000000 +0:61 Sequence +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:61 Color: direct index for structure (temp 4-component vector of float) +0:61 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:61 Constant: +0:61 0 (const int) +0:61 move second child to first child (temp float) +0:? 'Depth' (out float FragDepth) +0:61 Depth: direct index for structure (temp float) +0:61 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:61 Constant: +0:61 1 (const int) +0:61 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'Depth' (out float FragDepth) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 125 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 96 100 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tTex1df4" + Name 15 "$Global" + MemberName 15($Global) 0 "c1" + MemberName 15($Global) 1 "c2" + MemberName 15($Global) 2 "c3" + MemberName 15($Global) 3 "c4" + MemberName 15($Global) 4 "o1" + MemberName 15($Global) 5 "o2" + MemberName 15($Global) 6 "o3" + MemberName 15($Global) 7 "o4" + Name 17 "" + Name 26 "g_tTex1di4" + Name 34 "g_tTex1du4" + Name 42 "g_tTex2df4" + Name 51 "g_tTex2di4" + Name 58 "g_tTex2du4" + Name 65 "g_tTex3df4" + Name 74 "g_tTex3di4" + Name 81 "g_tTex3du4" + Name 86 "PS_OUTPUT" + MemberName 86(PS_OUTPUT) 0 "Color" + MemberName 86(PS_OUTPUT) 1 "Depth" + Name 88 "psout" + Name 96 "Color" + Name 100 "Depth" + Name 106 "g_sSamp" + Name 109 "g_tTex1df4a" + Name 112 "g_tTex1di4a" + Name 115 "g_tTex1du4a" + Name 118 "g_tTex2df4a" + Name 121 "g_tTex2di4a" + Name 124 "g_tTex2du4a" + Decorate 9(g_tTex1df4) DescriptorSet 0 + Decorate 9(g_tTex1df4) Binding 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 32 + MemberDecorate 15($Global) 4 Offset 48 + MemberDecorate 15($Global) 5 Offset 56 + MemberDecorate 15($Global) 6 Offset 64 + MemberDecorate 15($Global) 7 Offset 80 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 26(g_tTex1di4) DescriptorSet 0 + Decorate 34(g_tTex1du4) DescriptorSet 0 + Decorate 42(g_tTex2df4) DescriptorSet 0 + Decorate 51(g_tTex2di4) DescriptorSet 0 + Decorate 58(g_tTex2du4) DescriptorSet 0 + Decorate 65(g_tTex3df4) DescriptorSet 0 + Decorate 74(g_tTex3di4) DescriptorSet 0 + Decorate 81(g_tTex3du4) 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_tTex1df4a) DescriptorSet 0 + Decorate 112(g_tTex1di4a) DescriptorSet 0 + Decorate 115(g_tTex1du4a) DescriptorSet 0 + Decorate 118(g_tTex2df4a) DescriptorSet 0 + Decorate 121(g_tTex2di4a) DescriptorSet 0 + Decorate 124(g_tTex2du4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) 1D nonsampled format:Rgba32f + 8: TypePointer UniformConstant 7 + 9(g_tTex1df4): 8(ptr) Variable UniformConstant + 11: TypeInt 32 1 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15($Global): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 11(int) Constant 0 + 19: TypePointer Uniform 11(int) + 22: TypeVector 6(float) 4 + 24: TypeImage 11(int) 1D nonsampled format:Rgba32i + 25: TypePointer UniformConstant 24 + 26(g_tTex1di4): 25(ptr) Variable UniformConstant + 31: TypeInt 32 0 + 32: TypeImage 31(int) 1D nonsampled format:Rgba32ui + 33: TypePointer UniformConstant 32 + 34(g_tTex1du4): 33(ptr) Variable UniformConstant + 38: TypeVector 31(int) 4 + 40: TypeImage 6(float) 2D nonsampled format:Rgba32f + 41: TypePointer UniformConstant 40 + 42(g_tTex2df4): 41(ptr) Variable UniformConstant + 44: 11(int) Constant 1 + 45: TypePointer Uniform 12(ivec2) + 49: TypeImage 11(int) 2D nonsampled format:Rgba32i + 50: TypePointer UniformConstant 49 + 51(g_tTex2di4): 50(ptr) Variable UniformConstant + 56: TypeImage 31(int) 2D nonsampled format:Rgba32ui + 57: TypePointer UniformConstant 56 + 58(g_tTex2du4): 57(ptr) Variable UniformConstant + 63: TypeImage 6(float) 3D nonsampled format:Rgba32f + 64: TypePointer UniformConstant 63 + 65(g_tTex3df4): 64(ptr) Variable UniformConstant + 67: 11(int) Constant 2 + 68: TypePointer Uniform 13(ivec3) + 72: TypeImage 11(int) 3D nonsampled format:Rgba32i + 73: TypePointer UniformConstant 72 + 74(g_tTex3di4): 73(ptr) Variable UniformConstant + 79: TypeImage 31(int) 3D nonsampled format:Rgba32ui + 80: TypePointer UniformConstant 79 + 81(g_tTex3du4): 80(ptr) Variable UniformConstant + 86(PS_OUTPUT): TypeStruct 22(fvec4) 6(float) + 87: TypePointer Function 86(PS_OUTPUT) + 89: 6(float) Constant 1065353216 + 90: 22(fvec4) ConstantComposite 89 89 89 89 + 91: TypePointer Function 22(fvec4) + 93: TypePointer Function 6(float) + 95: TypePointer Output 22(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 array nonsampled format:Rgba32f + 108: TypePointer UniformConstant 107 +109(g_tTex1df4a): 108(ptr) Variable UniformConstant + 110: TypeImage 11(int) 1D array nonsampled format:Rgba32i + 111: TypePointer UniformConstant 110 +112(g_tTex1di4a): 111(ptr) Variable UniformConstant + 113: TypeImage 31(int) 1D array nonsampled format:Rgba32ui + 114: TypePointer UniformConstant 113 +115(g_tTex1du4a): 114(ptr) Variable UniformConstant + 116: TypeImage 6(float) 2D array nonsampled format:Rgba32f + 117: TypePointer UniformConstant 116 +118(g_tTex2df4a): 117(ptr) Variable UniformConstant + 119: TypeImage 11(int) 2D array nonsampled format:Rgba32i + 120: TypePointer UniformConstant 119 +121(g_tTex2di4a): 120(ptr) Variable UniformConstant + 122: TypeImage 31(int) 2D array nonsampled format:Rgba32ui + 123: TypePointer UniformConstant 122 +124(g_tTex2du4a): 123(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 88(psout): 87(ptr) Variable Function + 10: 7 Load 9(g_tTex1df4) + 20: 19(ptr) AccessChain 17 18 + 21: 11(int) Load 20 + 23: 22(fvec4) ImageRead 10 21 + 27: 24 Load 26(g_tTex1di4) + 28: 19(ptr) AccessChain 17 18 + 29: 11(int) Load 28 + 30: 14(ivec4) ImageRead 27 29 + 35: 32 Load 34(g_tTex1du4) + 36: 19(ptr) AccessChain 17 18 + 37: 11(int) Load 36 + 39: 38(ivec4) ImageRead 35 37 + 43: 40 Load 42(g_tTex2df4) + 46: 45(ptr) AccessChain 17 44 + 47: 12(ivec2) Load 46 + 48: 22(fvec4) ImageRead 43 47 + 52: 49 Load 51(g_tTex2di4) + 53: 45(ptr) AccessChain 17 44 + 54: 12(ivec2) Load 53 + 55: 14(ivec4) ImageRead 52 54 + 59: 56 Load 58(g_tTex2du4) + 60: 45(ptr) AccessChain 17 44 + 61: 12(ivec2) Load 60 + 62: 38(ivec4) ImageRead 59 61 + 66: 63 Load 65(g_tTex3df4) + 69: 68(ptr) AccessChain 17 67 + 70: 13(ivec3) Load 69 + 71: 22(fvec4) ImageRead 66 70 + 75: 72 Load 74(g_tTex3di4) + 76: 68(ptr) AccessChain 17 67 + 77: 13(ivec3) Load 76 + 78: 14(ivec4) ImageRead 75 77 + 82: 79 Load 81(g_tTex3du4) + 83: 68(ptr) AccessChain 17 67 + 84: 13(ivec3) Load 83 + 85: 38(ivec4) ImageRead 82 84 + 92: 91(ptr) AccessChain 88(psout) 18 + Store 92 90 + 94: 93(ptr) AccessChain 88(psout) 44 + Store 94 89 + 97: 91(ptr) AccessChain 88(psout) 18 + 98: 22(fvec4) Load 97 + Store 96(Color) 98 + 101: 93(ptr) AccessChain 88(psout) 44 + 102: 6(float) Load 101 + Store 100(Depth) 102 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.logical.binary.frag.out b/Test/baseResults/hlsl.logical.binary.frag.out new file mode 100644 index 00000000..9e6593ee --- /dev/null +++ b/Test/baseResults/hlsl.logical.binary.frag.out @@ -0,0 +1,220 @@ +hlsl.logical.binary.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:12 Function Parameters: +0:? Sequence +0:13 Test condition and select (temp void) +0:13 Condition +0:13 logical-and (temp bool) +0:13 Convert int to bool (temp bool) +0:13 ival: direct index for structure (layout(offset=0 ) uniform int) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 0 (const uint) +0:13 Convert int to bool (temp bool) +0:13 Convert float to int (temp int) +0:13 fval: direct index for structure (layout(offset=32 ) uniform float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 2 (const uint) +0:13 true case is null +0:14 Test condition and select (temp void) +0:14 Condition +0:14 logical-or (temp bool) +0:14 Convert int to bool (temp bool) +0:14 ival: direct index for structure (layout(offset=0 ) uniform int) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 0 (const uint) +0:14 Convert int to bool (temp bool) +0:14 Convert float to int (temp int) +0:14 fval: direct index for structure (layout(offset=32 ) uniform float) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 2 (const uint) +0:14 true case is null +0:17 move second child to first child (temp 4-component vector of float) +0:17 Color: direct index for structure (temp 4-component vector of float) +0:17 'psout' (temp structure{temp 4-component vector of float Color}) +0:17 Constant: +0:17 0 (const int) +0:17 Constant: +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:18 Sequence +0:18 Sequence +0:18 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 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:18 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:12 Function Parameters: +0:? Sequence +0:13 Test condition and select (temp void) +0:13 Condition +0:13 logical-and (temp bool) +0:13 Convert int to bool (temp bool) +0:13 ival: direct index for structure (layout(offset=0 ) uniform int) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 0 (const uint) +0:13 Convert int to bool (temp bool) +0:13 Convert float to int (temp int) +0:13 fval: direct index for structure (layout(offset=32 ) uniform float) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 2 (const uint) +0:13 true case is null +0:14 Test condition and select (temp void) +0:14 Condition +0:14 logical-or (temp bool) +0:14 Convert int to bool (temp bool) +0:14 ival: direct index for structure (layout(offset=0 ) uniform int) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 0 (const uint) +0:14 Convert int to bool (temp bool) +0:14 Convert float to int (temp int) +0:14 fval: direct index for structure (layout(offset=32 ) uniform float) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 2 (const uint) +0:14 true case is null +0:17 move second child to first child (temp 4-component vector of float) +0:17 Color: direct index for structure (temp 4-component vector of float) +0:17 'psout' (temp structure{temp 4-component vector of float Color}) +0:17 Constant: +0:17 0 (const int) +0:17 Constant: +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:18 Sequence +0:18 Sequence +0:18 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 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:18 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 57 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 53 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 11 "$Global" + MemberName 11($Global) 0 "ival" + MemberName 11($Global) 1 "ival4" + MemberName 11($Global) 2 "fval" + MemberName 11($Global) 3 "fval4" + Name 13 "" + Name 45 "PS_OUTPUT" + MemberName 45(PS_OUTPUT) 0 "Color" + Name 47 "psout" + Name 53 "Color" + MemberDecorate 11($Global) 0 Offset 0 + MemberDecorate 11($Global) 1 Offset 16 + MemberDecorate 11($Global) 2 Offset 32 + MemberDecorate 11($Global) 3 Offset 48 + Decorate 11($Global) Block + Decorate 13 DescriptorSet 0 + Decorate 53(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeBool + 7: TypeInt 32 1 + 8: TypeVector 7(int) 4 + 9: TypeFloat 32 + 10: TypeVector 9(float) 4 + 11($Global): TypeStruct 7(int) 8(ivec4) 9(float) 10(fvec4) + 12: TypePointer Uniform 11($Global) + 13: 12(ptr) Variable Uniform + 14: 7(int) Constant 0 + 15: TypePointer Uniform 7(int) + 18: TypeInt 32 0 + 19: 18(int) Constant 0 + 23: 7(int) Constant 2 + 24: TypePointer Uniform 9(float) + 45(PS_OUTPUT): TypeStruct 10(fvec4) + 46: TypePointer Function 45(PS_OUTPUT) + 48: 9(float) Constant 1065353216 + 49: 10(fvec4) ConstantComposite 48 48 48 48 + 50: TypePointer Function 10(fvec4) + 52: TypePointer Output 10(fvec4) + 53(Color): 52(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 47(psout): 46(ptr) Variable Function + 16: 15(ptr) AccessChain 13 14 + 17: 7(int) Load 16 + 20: 6(bool) INotEqual 17 19 + SelectionMerge 22 None + BranchConditional 20 21 22 + 21: Label + 25: 24(ptr) AccessChain 13 23 + 26: 9(float) Load 25 + 27: 7(int) ConvertFToS 26 + 28: 6(bool) INotEqual 27 19 + Branch 22 + 22: Label + 29: 6(bool) Phi 20 5 28 21 + SelectionMerge 31 None + BranchConditional 29 30 31 + 30: Label + Branch 31 + 31: Label + 32: 15(ptr) AccessChain 13 14 + 33: 7(int) Load 32 + 34: 6(bool) INotEqual 33 19 + 35: 6(bool) LogicalNot 34 + SelectionMerge 37 None + BranchConditional 35 36 37 + 36: Label + 38: 24(ptr) AccessChain 13 23 + 39: 9(float) Load 38 + 40: 7(int) ConvertFToS 39 + 41: 6(bool) INotEqual 40 19 + Branch 37 + 37: Label + 42: 6(bool) Phi 34 31 41 36 + SelectionMerge 44 None + BranchConditional 42 43 44 + 43: Label + Branch 44 + 44: Label + 51: 50(ptr) AccessChain 47(psout) 14 + Store 51 49 + 54: 50(ptr) AccessChain 47(psout) 14 + 55: 10(fvec4) Load 54 + Store 53(Color) 55 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.logical.unary.frag.out b/Test/baseResults/hlsl.logical.unary.frag.out new file mode 100644 index 00000000..e3def3c0 --- /dev/null +++ b/Test/baseResults/hlsl.logical.unary.frag.out @@ -0,0 +1,292 @@ +hlsl.logical.unary.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:12 Function Parameters: +0:? Sequence +0:13 Negate conditional (temp bool) +0:13 Convert int to bool (temp bool) +0:13 ival: direct index for structure (layout(offset=0 ) uniform int) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 0 (const uint) +0:14 Negate conditional (temp 4-component vector of bool) +0:14 Convert int to bool (temp 4-component vector of bool) +0:14 ival4: direct index for structure (layout(offset=16 ) uniform 4-component vector of int) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 1 (const uint) +0:16 Negate conditional (temp bool) +0:16 Convert float to bool (temp bool) +0:16 fval: direct index for structure (layout(offset=32 ) uniform float) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 2 (const uint) +0:17 Negate conditional (temp 4-component vector of bool) +0:17 Convert float to bool (temp 4-component vector of bool) +0:17 fval4: direct index for structure (layout(offset=48 ) uniform 4-component vector of float) +0:17 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:17 Constant: +0:17 3 (const uint) +0:19 Test condition and select (temp void) +0:19 Condition +0:19 ival: direct index for structure (layout(offset=0 ) uniform int) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 0 (const uint) +0:19 true case is null +0:20 Test condition and select (temp void) +0:20 Condition +0:20 fval: direct index for structure (layout(offset=32 ) uniform float) +0:20 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:20 Constant: +0:20 2 (const uint) +0:20 true case is null +0:21 Test condition and select (temp void) +0:21 Condition +0:21 Negate conditional (temp bool) +0:21 Convert int to bool (temp bool) +0:21 ival: direct index for structure (layout(offset=0 ) uniform int) +0:21 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:21 Constant: +0:21 0 (const uint) +0:21 true case is null +0:22 Test condition and select (temp void) +0:22 Condition +0:22 Negate conditional (temp bool) +0:22 Convert float to bool (temp bool) +0:22 fval: direct index for structure (layout(offset=32 ) uniform float) +0:22 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:22 Constant: +0:22 2 (const uint) +0:22 true case is null +0:25 move second child to first child (temp 4-component vector of float) +0:25 Color: direct index for structure (temp 4-component vector of float) +0:25 'psout' (temp structure{temp 4-component vector of float Color}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1.000000 +0:25 1.000000 +0:25 1.000000 +0:25 1.000000 +0:26 Sequence +0:26 Sequence +0:26 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:26 Color: direct index for structure (temp 4-component vector of float) +0:26 'psout' (temp structure{temp 4-component vector of float Color}) +0:26 Constant: +0:26 0 (const int) +0:26 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:12 Function Parameters: +0:? Sequence +0:13 Negate conditional (temp bool) +0:13 Convert int to bool (temp bool) +0:13 ival: direct index for structure (layout(offset=0 ) uniform int) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:13 Constant: +0:13 0 (const uint) +0:14 Negate conditional (temp 4-component vector of bool) +0:14 Convert int to bool (temp 4-component vector of bool) +0:14 ival4: direct index for structure (layout(offset=16 ) uniform 4-component vector of int) +0:14 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:14 Constant: +0:14 1 (const uint) +0:16 Negate conditional (temp bool) +0:16 Convert float to bool (temp bool) +0:16 fval: direct index for structure (layout(offset=32 ) uniform float) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 2 (const uint) +0:17 Negate conditional (temp 4-component vector of bool) +0:17 Convert float to bool (temp 4-component vector of bool) +0:17 fval4: direct index for structure (layout(offset=48 ) uniform 4-component vector of float) +0:17 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:17 Constant: +0:17 3 (const uint) +0:19 Test condition and select (temp void) +0:19 Condition +0:19 ival: direct index for structure (layout(offset=0 ) uniform int) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 0 (const uint) +0:19 true case is null +0:20 Test condition and select (temp void) +0:20 Condition +0:20 fval: direct index for structure (layout(offset=32 ) uniform float) +0:20 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:20 Constant: +0:20 2 (const uint) +0:20 true case is null +0:21 Test condition and select (temp void) +0:21 Condition +0:21 Negate conditional (temp bool) +0:21 Convert int to bool (temp bool) +0:21 ival: direct index for structure (layout(offset=0 ) uniform int) +0:21 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:21 Constant: +0:21 0 (const uint) +0:21 true case is null +0:22 Test condition and select (temp void) +0:22 Condition +0:22 Negate conditional (temp bool) +0:22 Convert float to bool (temp bool) +0:22 fval: direct index for structure (layout(offset=32 ) uniform float) +0:22 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) +0:22 Constant: +0:22 2 (const uint) +0:22 true case is null +0:25 move second child to first child (temp 4-component vector of float) +0:25 Color: direct index for structure (temp 4-component vector of float) +0:25 'psout' (temp structure{temp 4-component vector of float Color}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1.000000 +0:25 1.000000 +0:25 1.000000 +0:25 1.000000 +0:26 Sequence +0:26 Sequence +0:26 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:26 Color: direct index for structure (temp 4-component vector of float) +0:26 'psout' (temp structure{temp 4-component vector of float Color}) +0:26 Constant: +0:26 0 (const int) +0:26 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int ival, layout(offset=16 ) uniform 4-component vector of int ival4, layout(offset=32 ) uniform float fval, layout(offset=48 ) uniform 4-component vector of float fval4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 77 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 73 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 10 "$Global" + MemberName 10($Global) 0 "ival" + MemberName 10($Global) 1 "ival4" + MemberName 10($Global) 2 "fval" + MemberName 10($Global) 3 "fval4" + Name 12 "" + Name 65 "PS_OUTPUT" + MemberName 65(PS_OUTPUT) 0 "Color" + Name 67 "psout" + Name 73 "Color" + MemberDecorate 10($Global) 0 Offset 0 + MemberDecorate 10($Global) 1 Offset 16 + MemberDecorate 10($Global) 2 Offset 32 + MemberDecorate 10($Global) 3 Offset 48 + Decorate 10($Global) Block + Decorate 12 DescriptorSet 0 + Decorate 73(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeVector 6(int) 4 + 8: TypeFloat 32 + 9: TypeVector 8(float) 4 + 10($Global): TypeStruct 6(int) 7(ivec4) 8(float) 9(fvec4) + 11: TypePointer Uniform 10($Global) + 12: 11(ptr) Variable Uniform + 13: 6(int) Constant 0 + 14: TypePointer Uniform 6(int) + 17: TypeBool + 18: TypeInt 32 0 + 19: 18(int) Constant 0 + 22: 6(int) Constant 1 + 23: TypePointer Uniform 7(ivec4) + 26: TypeVector 17(bool) 4 + 27: TypeVector 18(int) 4 + 28: 27(ivec4) ConstantComposite 19 19 19 19 + 31: 6(int) Constant 2 + 32: TypePointer Uniform 8(float) + 35: 8(float) Constant 0 + 38: 6(int) Constant 3 + 39: TypePointer Uniform 9(fvec4) + 42: 9(fvec4) ConstantComposite 35 35 35 35 + 65(PS_OUTPUT): TypeStruct 9(fvec4) + 66: TypePointer Function 65(PS_OUTPUT) + 68: 8(float) Constant 1065353216 + 69: 9(fvec4) ConstantComposite 68 68 68 68 + 70: TypePointer Function 9(fvec4) + 72: TypePointer Output 9(fvec4) + 73(Color): 72(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 67(psout): 66(ptr) Variable Function + 15: 14(ptr) AccessChain 12 13 + 16: 6(int) Load 15 + 20: 17(bool) INotEqual 16 19 + 21: 17(bool) LogicalNot 20 + 24: 23(ptr) AccessChain 12 22 + 25: 7(ivec4) Load 24 + 29: 26(bvec4) INotEqual 25 28 + 30: 26(bvec4) LogicalNot 29 + 33: 32(ptr) AccessChain 12 31 + 34: 8(float) Load 33 + 36: 17(bool) FOrdNotEqual 34 35 + 37: 17(bool) LogicalNot 36 + 40: 39(ptr) AccessChain 12 38 + 41: 9(fvec4) Load 40 + 43: 26(bvec4) FOrdNotEqual 41 42 + 44: 26(bvec4) LogicalNot 43 + 45: 14(ptr) AccessChain 12 13 + 46: 6(int) Load 45 + SelectionMerge 48 None + BranchConditional 46 47 48 + 47: Label + Branch 48 + 48: Label + 49: 32(ptr) AccessChain 12 31 + 50: 8(float) Load 49 + SelectionMerge 52 None + BranchConditional 50 51 52 + 51: Label + Branch 52 + 52: Label + 53: 14(ptr) AccessChain 12 13 + 54: 6(int) Load 53 + 55: 17(bool) INotEqual 54 19 + 56: 17(bool) LogicalNot 55 + SelectionMerge 58 None + BranchConditional 56 57 58 + 57: Label + Branch 58 + 58: Label + 59: 32(ptr) AccessChain 12 31 + 60: 8(float) Load 59 + 61: 17(bool) FOrdNotEqual 60 35 + 62: 17(bool) LogicalNot 61 + SelectionMerge 64 None + BranchConditional 62 63 64 + 63: Label + Branch 64 + 64: Label + 71: 70(ptr) AccessChain 67(psout) 13 + Store 71 69 + 74: 70(ptr) AccessChain 67(psout) 13 + 75: 9(fvec4) Load 74 + Store 73(Color) 75 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out index b081a4af..0066a1de 100755 --- a/Test/baseResults/hlsl.matType.frag.out +++ b/Test/baseResults/hlsl.matType.frag.out @@ -2,22 +2,15 @@ hlsl.matType.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:1 Sequence -0:1 move second child to first child (temp 1-component vector of float) -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; (temp 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:? 'int44' (global 4X4 matrix of int) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44}) Linked fragment stage: @@ -26,26 +19,19 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:1 Sequence -0:1 move second child to first child (temp 1-component vector of float) -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; (temp 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:? 'int44' (global 4X4 matrix of int) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 1-component vector of float f1, layout(offset=16 ) uniform 1X1 matrix of float fmat11, layout(offset=32 ) uniform 4X1 matrix of float fmat41, layout(offset=48 ) uniform 1X2 matrix of float fmat12, layout(offset=80 ) uniform 2X3 matrix of double dmat23, layout(offset=128 ) uniform 4X4 matrix of int int44}) // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 38 +// Id's are bound by 30 Capability Shader Capability Float64 @@ -53,54 +39,46 @@ gl_FragCoord origin is upper left 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 27 "$Global" + MemberName 27($Global) 0 "f1" + MemberName 27($Global) 1 "fmat11" + MemberName 27($Global) 2 "fmat41" + MemberName 27($Global) 3 "fmat12" + MemberName 27($Global) 4 "dmat23" + MemberName 27($Global) 5 "int44" + Name 29 "" + Decorate 27($Global) Block + Decorate 29 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypePointer Function 6(float) 8: TypeFunction 6(float) 7(ptr) 7(ptr) - 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 + 16: TypeVector 6(float) 1 + 17: TypeMatrix 16(fvec) 1 + 18: TypeMatrix 16(fvec) 4 + 19: TypeVector 6(float) 2 + 20: TypeMatrix 19(fvec2) 1 + 21: TypeFloat 64 + 22: TypeVector 21(float) 3 + 23: TypeMatrix 22(fvec3) 2 + 24: TypeInt 32 1 + 25: TypeVector 24(int) 4 + 26: TypeMatrix 25(ivec4) 4 + 27($Global): TypeStruct 6(float) 17 18 20 23 26 + 28: TypePointer Uniform 27($Global) + 29: 28(ptr) Variable Uniform 4(PixelShaderFunction): 2 Function None 3 5: Label - Store 14(f1) 15 FunctionEnd 11(ShaderFunction(vf1;f1;): 6(float) Function None 8 9(inFloat1): 7(ptr) FunctionParameter 10(inScalar): 7(ptr) FunctionParameter 12: Label - 16: 6(float) Undef - ReturnValue 16 + 13: 6(float) Load 9(inFloat1) + ReturnValue 13 FunctionEnd diff --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out new file mode 100644 index 00000000..8c637c14 --- /dev/null +++ b/Test/baseResults/hlsl.matrixindex.frag.out @@ -0,0 +1,407 @@ +hlsl.matrixindex.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:10 Function Definition: main( (temp 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: direct index for structure (layout(offset=0 ) uniform int) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:43 Constant: +0:43 0 (const uint) +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 (layout(offset=16 ) temp 2-component vector of float) +0:44 um: direct index for structure (layout(offset=16 ) uniform 3X2 matrix of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:44 Constant: +0:44 1 (const uint) +0:44 idx: direct index for structure (layout(offset=0 ) uniform int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:44 Constant: +0:44 0 (const uint) +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:48 Sequence +0:48 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:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:10 Function Definition: main( (temp 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: direct index for structure (layout(offset=0 ) uniform int) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:43 Constant: +0:43 0 (const uint) +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 (layout(offset=16 ) temp 2-component vector of float) +0:44 um: direct index for structure (layout(offset=16 ) uniform 3X2 matrix of float) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:44 Constant: +0:44 1 (const uint) +0:44 idx: direct index for structure (layout(offset=0 ) uniform int) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) +0:44 Constant: +0:44 0 (const uint) +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:48 Sequence +0:48 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:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int idx, layout(offset=16 ) uniform 3X2 matrix of float um}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 78 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 74 + 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 47 "$Global" + MemberName 47($Global) 0 "idx" + MemberName 47($Global) 1 "um" + Name 49 "" + Name 55 "indexable" + Name 58 "r0c" + Name 66 "PS_OUTPUT" + MemberName 66(PS_OUTPUT) 0 "Color" + Name 68 "psout" + Name 74 "Color" + MemberDecorate 47($Global) 0 Offset 0 + MemberDecorate 47($Global) 1 RowMajor + MemberDecorate 47($Global) 1 Offset 16 + MemberDecorate 47($Global) 1 MatrixStride 16 + Decorate 47($Global) Block + Decorate 49 DescriptorSet 0 + Decorate 74(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($Global): TypeStruct 46(int) 41 + 48: TypePointer Uniform 47($Global) + 49: 48(ptr) Variable Uniform + 50: 46(int) Constant 0 + 51: TypePointer Uniform 46(int) + 54: TypePointer Function 41 + 59: 46(int) Constant 1 + 62: TypePointer Uniform 32(fvec2) + 65: TypeVector 6(float) 4 + 66(PS_OUTPUT): TypeStruct 65(fvec4) + 67: TypePointer Function 66(PS_OUTPUT) + 71: TypePointer Function 65(fvec4) + 73: TypePointer Output 65(fvec4) + 74(Color): 73(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 + 55(indexable): 54(ptr) Variable Function + 58(r0c): 33(ptr) Variable Function + 68(psout): 67(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 + 52: 51(ptr) AccessChain 49 50 + 53: 46(int) Load 52 + Store 55(indexable) 45 + 56: 33(ptr) AccessChain 55(indexable) 53 + 57: 32(fvec2) Load 56 + Store 40(r0b) 57 + 60: 51(ptr) AccessChain 49 50 + 61: 46(int) Load 60 + 63: 62(ptr) AccessChain 49 59 61 + 64: 32(fvec2) Load 63 + Store 58(r0c) 64 + 69: 6(float) Load 26(e2_11) + 70: 65(fvec4) CompositeConstruct 69 69 69 69 + 72: 71(ptr) AccessChain 68(psout) 50 + Store 72 70 + 75: 71(ptr) AccessChain 68(psout) 50 + 76: 65(fvec4) Load 75 + Store 74(Color) 76 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.max.frag.out b/Test/baseResults/hlsl.max.frag.out index aad47997..53646bb1 100755 --- a/Test/baseResults/hlsl.max.frag.out +++ b/Test/baseResults/hlsl.max.frag.out @@ -2,16 +2,22 @@ hlsl.max.frag 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; (temp 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 @@ Linked fragment stage: 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; (temp 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 00000000..8f8c42ae --- /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; (temp 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 (temp 4-component vector of float) +0:5 'Position' (layout(rgba32f ) uniform samplerBuffer) +0:5 Convert uint to int (temp int) +0:5 'Index' (in uint) +0:9 Function Definition: RealEntrypoint(u1; (temp 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; (temp 4-component vector of float) +0:10 'Index' (in uint VertexIndex) +0:10 Branch: Return +0:? Linker Objects +0:? 'Position' (layout(rgba32f ) 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; (temp 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 (temp 4-component vector of float) +0:5 'Position' (layout(rgba32f ) uniform samplerBuffer) +0:5 Convert uint to int (temp int) +0:5 'Index' (in uint) +0:9 Function Definition: RealEntrypoint(u1; (temp 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; (temp 4-component vector of float) +0:10 'Index' (in uint VertexIndex) +0:10 Branch: Return +0:? Linker Objects +0:? 'Position' (layout(rgba32f ) 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:Rgba32f + 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.multiReturn.frag.out b/Test/baseResults/hlsl.multiReturn.frag.out new file mode 100755 index 00000000..80d7f166 --- /dev/null +++ b/Test/baseResults/hlsl.multiReturn.frag.out @@ -0,0 +1,113 @@ +hlsl.multiReturn.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: foo( (temp structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:12 Function Parameters: +0:? Sequence +0:13 Branch: Return with expression +0:13 s: direct index for structure (layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m} s}) +0:13 Constant: +0:13 0 (const uint) +0:17 Function Definition: main( (temp void) +0:17 Function Parameters: +0:? Sequence +0:18 Function Call: foo( (temp structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:? Linker Objects +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m} s}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:12 Function Definition: foo( (temp structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:12 Function Parameters: +0:? Sequence +0:13 Branch: Return with expression +0:13 s: direct index for structure (layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m} s}) +0:13 Constant: +0:13 0 (const uint) +0:17 Function Definition: main( (temp void) +0:17 Function Parameters: +0:? Sequence +0:18 Function Call: foo( (temp structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m}) +0:? Linker Objects +0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m} s}) + +// 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 9 "S" + MemberName 9(S) 0 "f" + MemberName 9(S) 1 "v" + MemberName 9(S) 2 "m" + Name 11 "foo(" + Name 13 "S" + MemberName 13(S) 0 "f" + MemberName 13(S) 1 "v" + MemberName 13(S) 2 "m" + Name 14 "bufName" + MemberName 14(bufName) 0 "s" + Name 16 "" + MemberDecorate 13(S) 0 Offset 0 + MemberDecorate 13(S) 1 Offset 16 + MemberDecorate 13(S) 2 RowMajor + MemberDecorate 13(S) 2 Offset 32 + MemberDecorate 13(S) 2 MatrixStride 16 + MemberDecorate 14(bufName) 0 Offset 0 + Decorate 14(bufName) Block + Decorate 16 DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 3 + 8: TypeMatrix 7(fvec3) 3 + 9(S): TypeStruct 6(float) 7(fvec3) 8 + 10: TypeFunction 9(S) + 13(S): TypeStruct 6(float) 7(fvec3) 8 + 14(bufName): TypeStruct 13(S) + 15: TypePointer Uniform 14(bufName) + 16: 15(ptr) Variable Uniform + 17: TypeInt 32 1 + 18: 17(int) Constant 0 + 19: TypePointer Uniform 13(S) + 22: TypePointer Function 9(S) + 25: TypePointer Function 6(float) + 28: 17(int) Constant 1 + 29: TypePointer Function 7(fvec3) + 32: 17(int) Constant 2 + 33: TypePointer Function 8 + 4(main): 2 Function None 3 + 5: Label + 38: 9(S) FunctionCall 11(foo() + Return + FunctionEnd + 11(foo(): 9(S) Function None 10 + 12: Label + 23: 22(ptr) Variable Function + 20: 19(ptr) AccessChain 16 18 + 21: 13(S) Load 20 + 24: 6(float) CompositeExtract 21 0 + 26: 25(ptr) AccessChain 23 18 + Store 26 24 + 27: 7(fvec3) CompositeExtract 21 1 + 30: 29(ptr) AccessChain 23 28 + Store 30 27 + 31: 8 CompositeExtract 21 2 + 34: 33(ptr) AccessChain 23 32 + Store 34 31 + 35: 9(S) Load 23 + ReturnValue 35 + FunctionEnd diff --git a/Test/baseResults/hlsl.numericsuffixes.frag.out b/Test/baseResults/hlsl.numericsuffixes.frag.out new file mode 100644 index 00000000..e8d3630e --- /dev/null +++ b/Test/baseResults/hlsl.numericsuffixes.frag.out @@ -0,0 +1,225 @@ +hlsl.numericsuffixes.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:5 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:5 Function Parameters: +0:? Sequence +0:7 Sequence +0:7 move second child to first child (temp float) +0:7 'r00' (temp float) +0:7 Constant: +0:7 1.000000 +0:8 Sequence +0:8 move second child to first child (temp uint) +0:8 'r01' (temp uint) +0:8 Constant: +0:8 1 (const uint) +0:9 Sequence +0:9 move second child to first child (temp uint) +0:9 'r02' (temp uint) +0:9 Constant: +0:9 2 (const uint) +0:10 Sequence +0:10 move second child to first child (temp uint) +0:10 'r03' (temp uint) +0:10 Constant: +0:10 2748 (const uint) +0:11 Sequence +0:11 move second child to first child (temp uint) +0:11 'r04' (temp uint) +0:11 Constant: +0:11 2748 (const uint) +0:12 Sequence +0:12 move second child to first child (temp int) +0:12 'r05' (temp int) +0:12 Constant: +0:12 5 (const int) +0:13 Sequence +0:13 move second child to first child (temp int) +0:13 'r06' (temp int) +0:13 Constant: +0:13 6 (const int) +0:14 Sequence +0:14 move second child to first child (temp int) +0:14 'r07' (temp int) +0:14 Constant: +0:14 57 (const int) +0:15 Sequence +0:15 move second child to first child (temp uint) +0:15 'r08' (temp uint) +0:15 Constant: +0:15 58 (const uint) +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 'ps_output' (temp structure{temp 4-component vector of float color}) +0:18 Constant: +0:18 0 (const int) +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 Sequence +0:19 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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:5 Function Definition: main( (temp structure{temp 4-component vector of float color}) +0:5 Function Parameters: +0:? Sequence +0:7 Sequence +0:7 move second child to first child (temp float) +0:7 'r00' (temp float) +0:7 Constant: +0:7 1.000000 +0:8 Sequence +0:8 move second child to first child (temp uint) +0:8 'r01' (temp uint) +0:8 Constant: +0:8 1 (const uint) +0:9 Sequence +0:9 move second child to first child (temp uint) +0:9 'r02' (temp uint) +0:9 Constant: +0:9 2 (const uint) +0:10 Sequence +0:10 move second child to first child (temp uint) +0:10 'r03' (temp uint) +0:10 Constant: +0:10 2748 (const uint) +0:11 Sequence +0:11 move second child to first child (temp uint) +0:11 'r04' (temp uint) +0:11 Constant: +0:11 2748 (const uint) +0:12 Sequence +0:12 move second child to first child (temp int) +0:12 'r05' (temp int) +0:12 Constant: +0:12 5 (const int) +0:13 Sequence +0:13 move second child to first child (temp int) +0:13 'r06' (temp int) +0:13 Constant: +0:13 6 (const int) +0:14 Sequence +0:14 move second child to first child (temp int) +0:14 'r07' (temp int) +0:14 Constant: +0:14 57 (const int) +0:15 Sequence +0:15 move second child to first child (temp uint) +0:15 'r08' (temp uint) +0:15 Constant: +0:15 58 (const uint) +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 'ps_output' (temp structure{temp 4-component vector of float color}) +0:18 Constant: +0:18 0 (const int) +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 Sequence +0:19 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 44 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 40 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r00" + Name 12 "r01" + Name 14 "r02" + Name 16 "r03" + Name 18 "r04" + Name 21 "r05" + Name 23 "r06" + Name 25 "r07" + Name 27 "r08" + 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 + 7: TypePointer Function 6(float) + 9: 6(float) Constant 1065353216 + 10: TypeInt 32 0 + 11: TypePointer Function 10(int) + 13: 10(int) Constant 1 + 15: 10(int) Constant 2 + 17: 10(int) Constant 2748 + 19: TypeInt 32 1 + 20: TypePointer Function 19(int) + 22: 19(int) Constant 5 + 24: 19(int) Constant 6 + 26: 19(int) Constant 57 + 28: 10(int) Constant 58 + 29: TypeVector 6(float) 4 + 30(PS_OUTPUT): TypeStruct 29(fvec4) + 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 + 12(r01): 11(ptr) Variable Function + 14(r02): 11(ptr) Variable Function + 16(r03): 11(ptr) Variable Function + 18(r04): 11(ptr) Variable Function + 21(r05): 20(ptr) Variable Function + 23(r06): 20(ptr) Variable Function + 25(r07): 20(ptr) Variable Function + 27(r08): 11(ptr) Variable Function + 32(ps_output): 31(ptr) Variable Function + Store 8(r00) 9 + Store 12(r01) 13 + Store 14(r02) 15 + Store 16(r03) 17 + Store 18(r04) 17 + Store 21(r05) 22 + Store 23(r06) 24 + Store 25(r07) 26 + Store 27(r08) 28 + 34: 19(int) Load 25(r07) + 35: 6(float) ConvertSToF 34 + 36: 29(fvec4) CompositeConstruct 35 35 35 35 + 38: 37(ptr) AccessChain 32(ps_output) 33 + Store 38 36 + 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 00000000..4eed1a3f --- /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; (temp void) +0:2 Function Parameters: +0:2 'a' (in double) +0:2 'b' (in bool) +0:3 Function Definition: foo1(d1;u1; (temp void) +0:3 Function Parameters: +0:3 'a' (in double) +0:3 'b' (in uint) +0:4 Function Definition: foo1(d1;i1; (temp void) +0:4 Function Parameters: +0:4 'a' (in double) +0:4 'b' (in int) +0:5 Function Definition: foo1(d1;f1; (temp void) +0:5 Function Parameters: +0:5 'a' (in double) +0:5 'b' (in float) +0:6 Function Definition: foo1(d1;d1; (temp void) +0:6 Function Parameters: +0:6 'a' (in double) +0:6 'b' (in double) +0:9 Function Definition: foo2(i1;b1; (temp void) +0:9 Function Parameters: +0:9 'a' (in int) +0:9 'b' (in bool) +0:10 Function Definition: foo2(i1;u1; (temp void) +0:10 Function Parameters: +0:10 'a' (in int) +0:10 'b' (in uint) +0:11 Function Definition: foo2(i1;i1; (temp void) +0:11 Function Parameters: +0:11 'a' (in int) +0:11 'b' (in int) +0:12 Function Definition: foo2(i1;f1; (temp void) +0:12 Function Parameters: +0:12 'a' (in int) +0:12 'b' (in float) +0:13 Function Definition: foo2(i1;d1; (temp void) +0:13 Function Parameters: +0:13 'a' (in int) +0:13 'b' (in double) +0:16 Function Definition: foo3(b1; (temp void) +0:16 Function Parameters: +0:16 'b' (in bool) +0:17 Function Definition: foo4(u1; (temp void) +0:17 Function Parameters: +0:17 'b' (in uint) +0:18 Function Definition: foo5(i1; (temp void) +0:18 Function Parameters: +0:18 'b' (in int) +0:19 Function Definition: foo6(f1; (temp void) +0:19 Function Parameters: +0:19 'b' (in float) +0:20 Function Definition: foo7(d1; (temp void) +0:20 Function Parameters: +0:20 'b' (in double) +0:23 Function Definition: foo8(f1; (temp void) +0:23 Function Parameters: +0:23 '' (in float) +0:24 Function Definition: foo8(d1; (temp void) +0:24 Function Parameters: +0:24 '' (in double) +0:25 Function Definition: foo9(i1; (temp void) +0:25 Function Parameters: +0:25 '' (in int) +0:26 Function Definition: foo9(u1; (temp void) +0:26 Function Parameters: +0:26 '' (in uint) +0:27 Function Definition: foo10(b1; (temp void) +0:27 Function Parameters: +0:27 '' (in bool) +0:28 Function Definition: foo10(i1; (temp void) +0:28 Function Parameters: +0:28 '' (in int) +0:31 Function Definition: foo11(vf3; (temp void) +0:31 Function Parameters: +0:31 '' (in 3-component vector of float) +0:32 Function Definition: foo11(d1; (temp void) +0:32 Function Parameters: +0:32 '' (in double) +0:33 Function Definition: foo11(vi3; (temp void) +0:33 Function Parameters: +0:33 '' (in 3-component vector of int) +0:34 Function Definition: foo11(u1; (temp void) +0:34 Function Parameters: +0:34 '' (in uint) +0:35 Function Definition: foo12(vf1; (temp void) +0:35 Function Parameters: +0:35 '' (in 1-component vector of float) +0:36 Function Definition: foo12(vd3; (temp void) +0:36 Function Parameters: +0:36 '' (in 3-component vector of double) +0:37 Function Definition: foo16(u1; (temp void) +0:37 Function Parameters: +0:37 '' (in uint) +0:38 Function Definition: foo16(vu2; (temp void) +0:38 Function Parameters: +0:38 '' (in 2-component vector of uint) +0:41 Function Definition: foo13(vf3; (temp void) +0:41 Function Parameters: +0:41 '' (in 3-component vector of float) +0:42 Function Definition: foo14(vi1; (temp void) +0:42 Function Parameters: +0:42 '' (in 1-component vector of int) +0:43 Function Definition: foo15(vb1; (temp void) +0:43 Function Parameters: +0:43 '' (in 1-component vector of bool) +0:46 Function Definition: PixelShaderFunction(vf4; (temp 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; (temp void) +0:53 'd' (temp double) +0:53 'b' (temp bool) +0:54 Function Call: foo1(d1;d1; (temp void) +0:54 'd' (temp double) +0:54 'd' (temp double) +0:55 Function Call: foo1(d1;u1; (temp void) +0:55 'd' (temp double) +0:55 'u' (temp uint) +0:56 Function Call: foo1(d1;i1; (temp void) +0:56 'd' (temp double) +0:56 'i' (temp int) +0:57 Function Call: foo1(d1;f1; (temp void) +0:57 'd' (temp double) +0:57 'f' (temp float) +0:59 Function Call: foo1(d1;b1; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp void) +0:83 'i' (temp int) +0:83 'b' (temp bool) +0:84 Function Call: foo2(i1;d1; (temp void) +0:84 'i' (temp int) +0:84 'd' (temp double) +0:85 Function Call: foo2(i1;u1; (temp void) +0:85 'i' (temp int) +0:85 'u' (temp uint) +0:86 Function Call: foo2(i1;i1; (temp void) +0:86 'i' (temp int) +0:86 'i' (temp int) +0:87 Function Call: foo2(i1;f1; (temp void) +0:87 'i' (temp int) +0:87 'f' (temp float) +0:89 Function Call: foo3(b1; (temp void) +0:89 'b' (temp bool) +0:90 Function Call: foo3(b1; (temp void) +0:90 Convert double to bool (temp bool) +0:90 'd' (temp double) +0:91 Function Call: foo3(b1; (temp void) +0:91 Convert uint to bool (temp bool) +0:91 'u' (temp uint) +0:92 Function Call: foo3(b1; (temp void) +0:92 Convert int to bool (temp bool) +0:92 'i' (temp int) +0:93 Function Call: foo3(b1; (temp void) +0:93 Convert float to bool (temp bool) +0:93 'f' (temp float) +0:95 Function Call: foo4(u1; (temp void) +0:95 Convert bool to uint (temp uint) +0:95 'b' (temp bool) +0:96 Function Call: foo4(u1; (temp void) +0:96 Convert double to uint (temp uint) +0:96 'd' (temp double) +0:97 Function Call: foo4(u1; (temp void) +0:97 'u' (temp uint) +0:98 Function Call: foo4(u1; (temp void) +0:98 Convert int to uint (temp uint) +0:98 'i' (temp int) +0:99 Function Call: foo4(u1; (temp void) +0:99 Convert float to uint (temp uint) +0:99 'f' (temp float) +0:101 Function Call: foo5(i1; (temp void) +0:101 Convert bool to int (temp int) +0:101 'b' (temp bool) +0:102 Function Call: foo5(i1; (temp void) +0:102 Convert double to int (temp int) +0:102 'd' (temp double) +0:103 Function Call: foo5(i1; (temp void) +0:103 Convert uint to int (temp int) +0:103 'u' (temp uint) +0:104 Function Call: foo5(i1; (temp void) +0:104 'i' (temp int) +0:105 Function Call: foo5(i1; (temp void) +0:105 Convert float to int (temp int) +0:105 'f' (temp float) +0:107 Function Call: foo6(f1; (temp void) +0:107 Convert bool to float (temp float) +0:107 'b' (temp bool) +0:108 Function Call: foo6(f1; (temp void) +0:108 Convert double to float (temp float) +0:108 'd' (temp double) +0:109 Function Call: foo6(f1; (temp void) +0:109 Convert uint to float (temp float) +0:109 'u' (temp uint) +0:110 Function Call: foo6(f1; (temp void) +0:110 Convert int to float (temp float) +0:110 'i' (temp int) +0:111 Function Call: foo6(f1; (temp void) +0:111 'f' (temp float) +0:113 Function Call: foo7(d1; (temp void) +0:113 Convert bool to double (temp double) +0:113 'b' (temp bool) +0:114 Function Call: foo7(d1; (temp void) +0:114 'd' (temp double) +0:115 Function Call: foo7(d1; (temp void) +0:115 Convert uint to double (temp double) +0:115 'u' (temp uint) +0:116 Function Call: foo7(d1; (temp void) +0:116 Convert int to double (temp double) +0:116 'i' (temp int) +0:117 Function Call: foo7(d1; (temp void) +0:117 Convert float to double (temp double) +0:117 'f' (temp float) +0:119 Function Call: foo8(f1; (temp void) +0:119 Convert bool to float (temp float) +0:119 'b' (temp bool) +0:120 Function Call: foo8(f1; (temp void) +0:120 Convert uint to float (temp float) +0:120 'u' (temp uint) +0:121 Function Call: foo8(f1; (temp void) +0:121 Convert int to float (temp float) +0:121 'i' (temp int) +0:123 Function Call: foo9(i1; (temp void) +0:123 Convert bool to int (temp int) +0:123 'b' (temp bool) +0:124 Function Call: foo9(u1; (temp void) +0:124 Convert float to uint (temp uint) +0:124 'f' (temp float) +0:125 Function Call: foo9(u1; (temp void) +0:125 Convert double to uint (temp uint) +0:125 'd' (temp double) +0:127 Function Call: foo10(i1; (temp void) +0:127 Convert uint to int (temp int) +0:127 'u' (temp uint) +0:128 Function Call: foo10(i1; (temp void) +0:128 Convert float to int (temp int) +0:128 'f' (temp float) +0:129 Function Call: foo10(i1; (temp void) +0:129 Convert double to int (temp int) +0:129 'd' (temp double) +0:131 Function Call: foo11(u1; (temp void) +0:131 Convert bool to uint (temp uint) +0:131 'b' (temp bool) +0:132 Function Call: foo11(d1; (temp void) +0:132 Convert float to double (temp double) +0:132 'f' (temp float) +0:133 Function Call: foo12(vd3; (temp 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; (temp 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; (temp void) +0:136 Construct vec3 (in 3-component vector of float) +0:136 'f' (temp float) +0:137 Function Call: foo14(vi1; (temp 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; (temp void) +0:138 Construct bool (in 1-component vector of bool) +0:138 'b' (temp bool) +0:139 Function Call: foo15(vb1; (temp 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; (temp void) +0:2 Function Parameters: +0:2 'a' (in double) +0:2 'b' (in bool) +0:3 Function Definition: foo1(d1;u1; (temp void) +0:3 Function Parameters: +0:3 'a' (in double) +0:3 'b' (in uint) +0:4 Function Definition: foo1(d1;i1; (temp void) +0:4 Function Parameters: +0:4 'a' (in double) +0:4 'b' (in int) +0:5 Function Definition: foo1(d1;f1; (temp void) +0:5 Function Parameters: +0:5 'a' (in double) +0:5 'b' (in float) +0:6 Function Definition: foo1(d1;d1; (temp void) +0:6 Function Parameters: +0:6 'a' (in double) +0:6 'b' (in double) +0:9 Function Definition: foo2(i1;b1; (temp void) +0:9 Function Parameters: +0:9 'a' (in int) +0:9 'b' (in bool) +0:10 Function Definition: foo2(i1;u1; (temp void) +0:10 Function Parameters: +0:10 'a' (in int) +0:10 'b' (in uint) +0:11 Function Definition: foo2(i1;i1; (temp void) +0:11 Function Parameters: +0:11 'a' (in int) +0:11 'b' (in int) +0:12 Function Definition: foo2(i1;f1; (temp void) +0:12 Function Parameters: +0:12 'a' (in int) +0:12 'b' (in float) +0:13 Function Definition: foo2(i1;d1; (temp void) +0:13 Function Parameters: +0:13 'a' (in int) +0:13 'b' (in double) +0:16 Function Definition: foo3(b1; (temp void) +0:16 Function Parameters: +0:16 'b' (in bool) +0:17 Function Definition: foo4(u1; (temp void) +0:17 Function Parameters: +0:17 'b' (in uint) +0:18 Function Definition: foo5(i1; (temp void) +0:18 Function Parameters: +0:18 'b' (in int) +0:19 Function Definition: foo6(f1; (temp void) +0:19 Function Parameters: +0:19 'b' (in float) +0:20 Function Definition: foo7(d1; (temp void) +0:20 Function Parameters: +0:20 'b' (in double) +0:23 Function Definition: foo8(f1; (temp void) +0:23 Function Parameters: +0:23 '' (in float) +0:24 Function Definition: foo8(d1; (temp void) +0:24 Function Parameters: +0:24 '' (in double) +0:25 Function Definition: foo9(i1; (temp void) +0:25 Function Parameters: +0:25 '' (in int) +0:26 Function Definition: foo9(u1; (temp void) +0:26 Function Parameters: +0:26 '' (in uint) +0:27 Function Definition: foo10(b1; (temp void) +0:27 Function Parameters: +0:27 '' (in bool) +0:28 Function Definition: foo10(i1; (temp void) +0:28 Function Parameters: +0:28 '' (in int) +0:31 Function Definition: foo11(vf3; (temp void) +0:31 Function Parameters: +0:31 '' (in 3-component vector of float) +0:32 Function Definition: foo11(d1; (temp void) +0:32 Function Parameters: +0:32 '' (in double) +0:33 Function Definition: foo11(vi3; (temp void) +0:33 Function Parameters: +0:33 '' (in 3-component vector of int) +0:34 Function Definition: foo11(u1; (temp void) +0:34 Function Parameters: +0:34 '' (in uint) +0:35 Function Definition: foo12(vf1; (temp void) +0:35 Function Parameters: +0:35 '' (in 1-component vector of float) +0:36 Function Definition: foo12(vd3; (temp void) +0:36 Function Parameters: +0:36 '' (in 3-component vector of double) +0:37 Function Definition: foo16(u1; (temp void) +0:37 Function Parameters: +0:37 '' (in uint) +0:38 Function Definition: foo16(vu2; (temp void) +0:38 Function Parameters: +0:38 '' (in 2-component vector of uint) +0:41 Function Definition: foo13(vf3; (temp void) +0:41 Function Parameters: +0:41 '' (in 3-component vector of float) +0:42 Function Definition: foo14(vi1; (temp void) +0:42 Function Parameters: +0:42 '' (in 1-component vector of int) +0:43 Function Definition: foo15(vb1; (temp void) +0:43 Function Parameters: +0:43 '' (in 1-component vector of bool) +0:46 Function Definition: PixelShaderFunction(vf4; (temp 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; (temp void) +0:53 'd' (temp double) +0:53 'b' (temp bool) +0:54 Function Call: foo1(d1;d1; (temp void) +0:54 'd' (temp double) +0:54 'd' (temp double) +0:55 Function Call: foo1(d1;u1; (temp void) +0:55 'd' (temp double) +0:55 'u' (temp uint) +0:56 Function Call: foo1(d1;i1; (temp void) +0:56 'd' (temp double) +0:56 'i' (temp int) +0:57 Function Call: foo1(d1;f1; (temp void) +0:57 'd' (temp double) +0:57 'f' (temp float) +0:59 Function Call: foo1(d1;b1; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp 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; (temp void) +0:83 'i' (temp int) +0:83 'b' (temp bool) +0:84 Function Call: foo2(i1;d1; (temp void) +0:84 'i' (temp int) +0:84 'd' (temp double) +0:85 Function Call: foo2(i1;u1; (temp void) +0:85 'i' (temp int) +0:85 'u' (temp uint) +0:86 Function Call: foo2(i1;i1; (temp void) +0:86 'i' (temp int) +0:86 'i' (temp int) +0:87 Function Call: foo2(i1;f1; (temp void) +0:87 'i' (temp int) +0:87 'f' (temp float) +0:89 Function Call: foo3(b1; (temp void) +0:89 'b' (temp bool) +0:90 Function Call: foo3(b1; (temp void) +0:90 Convert double to bool (temp bool) +0:90 'd' (temp double) +0:91 Function Call: foo3(b1; (temp void) +0:91 Convert uint to bool (temp bool) +0:91 'u' (temp uint) +0:92 Function Call: foo3(b1; (temp void) +0:92 Convert int to bool (temp bool) +0:92 'i' (temp int) +0:93 Function Call: foo3(b1; (temp void) +0:93 Convert float to bool (temp bool) +0:93 'f' (temp float) +0:95 Function Call: foo4(u1; (temp void) +0:95 Convert bool to uint (temp uint) +0:95 'b' (temp bool) +0:96 Function Call: foo4(u1; (temp void) +0:96 Convert double to uint (temp uint) +0:96 'd' (temp double) +0:97 Function Call: foo4(u1; (temp void) +0:97 'u' (temp uint) +0:98 Function Call: foo4(u1; (temp void) +0:98 Convert int to uint (temp uint) +0:98 'i' (temp int) +0:99 Function Call: foo4(u1; (temp void) +0:99 Convert float to uint (temp uint) +0:99 'f' (temp float) +0:101 Function Call: foo5(i1; (temp void) +0:101 Convert bool to int (temp int) +0:101 'b' (temp bool) +0:102 Function Call: foo5(i1; (temp void) +0:102 Convert double to int (temp int) +0:102 'd' (temp double) +0:103 Function Call: foo5(i1; (temp void) +0:103 Convert uint to int (temp int) +0:103 'u' (temp uint) +0:104 Function Call: foo5(i1; (temp void) +0:104 'i' (temp int) +0:105 Function Call: foo5(i1; (temp void) +0:105 Convert float to int (temp int) +0:105 'f' (temp float) +0:107 Function Call: foo6(f1; (temp void) +0:107 Convert bool to float (temp float) +0:107 'b' (temp bool) +0:108 Function Call: foo6(f1; (temp void) +0:108 Convert double to float (temp float) +0:108 'd' (temp double) +0:109 Function Call: foo6(f1; (temp void) +0:109 Convert uint to float (temp float) +0:109 'u' (temp uint) +0:110 Function Call: foo6(f1; (temp void) +0:110 Convert int to float (temp float) +0:110 'i' (temp int) +0:111 Function Call: foo6(f1; (temp void) +0:111 'f' (temp float) +0:113 Function Call: foo7(d1; (temp void) +0:113 Convert bool to double (temp double) +0:113 'b' (temp bool) +0:114 Function Call: foo7(d1; (temp void) +0:114 'd' (temp double) +0:115 Function Call: foo7(d1; (temp void) +0:115 Convert uint to double (temp double) +0:115 'u' (temp uint) +0:116 Function Call: foo7(d1; (temp void) +0:116 Convert int to double (temp double) +0:116 'i' (temp int) +0:117 Function Call: foo7(d1; (temp void) +0:117 Convert float to double (temp double) +0:117 'f' (temp float) +0:119 Function Call: foo8(f1; (temp void) +0:119 Convert bool to float (temp float) +0:119 'b' (temp bool) +0:120 Function Call: foo8(f1; (temp void) +0:120 Convert uint to float (temp float) +0:120 'u' (temp uint) +0:121 Function Call: foo8(f1; (temp void) +0:121 Convert int to float (temp float) +0:121 'i' (temp int) +0:123 Function Call: foo9(i1; (temp void) +0:123 Convert bool to int (temp int) +0:123 'b' (temp bool) +0:124 Function Call: foo9(u1; (temp void) +0:124 Convert float to uint (temp uint) +0:124 'f' (temp float) +0:125 Function Call: foo9(u1; (temp void) +0:125 Convert double to uint (temp uint) +0:125 'd' (temp double) +0:127 Function Call: foo10(i1; (temp void) +0:127 Convert uint to int (temp int) +0:127 'u' (temp uint) +0:128 Function Call: foo10(i1; (temp void) +0:128 Convert float to int (temp int) +0:128 'f' (temp float) +0:129 Function Call: foo10(i1; (temp void) +0:129 Convert double to int (temp int) +0:129 'd' (temp double) +0:131 Function Call: foo11(u1; (temp void) +0:131 Convert bool to uint (temp uint) +0:131 'b' (temp bool) +0:132 Function Call: foo11(d1; (temp void) +0:132 Convert float to double (temp double) +0:132 'f' (temp float) +0:133 Function Call: foo12(vd3; (temp 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; (temp 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; (temp void) +0:136 Construct vec3 (in 3-component vector of float) +0:136 'f' (temp float) +0:137 Function Call: foo14(vi1; (temp 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; (temp void) +0:138 Construct bool (in 1-component vector of bool) +0:138 'b' (temp bool) +0:139 Function Call: foo15(vb1; (temp 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 new file mode 100644 index 00000000..6bbbee64 --- /dev/null +++ b/Test/baseResults/hlsl.pp.line.frag.out @@ -0,0 +1,165 @@ +hlsl.pp.line.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:4 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:4 Function Parameters: +0:? Sequence +0:124 Sequence +0:124 move second child to first child (temp int) +0:124 'thisLineIs' (temp int) +0:124 Constant: +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 Depth}) +0:126 Constant: +0:126 0 (const int) +0:? Construct vec4 (temp 4-component vector of float) +0:126 Convert int to float (temp float) +0:126 'thisLineIs' (temp int) +0:126 Constant: +0:126 0.000000 +0:126 Constant: +0:126 0.000000 +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) +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 Sequence +0:129 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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:4 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:4 Function Parameters: +0:? Sequence +0:124 Sequence +0:124 move second child to first child (temp int) +0:124 'thisLineIs' (temp int) +0:124 Constant: +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 Depth}) +0:126 Constant: +0:126 0 (const int) +0:? Construct vec4 (temp 4-component vector of float) +0:126 Convert int to float (temp float) +0:126 'thisLineIs' (temp int) +0:126 Constant: +0:126 0.000000 +0:126 Constant: +0:126 0.000000 +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) +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 Sequence +0:129 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 35 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 27 31 + ExecutionMode 4 OriginUpperLeft + 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" + 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 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 124 + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12(PS_OUTPUT): TypeStruct 11(fvec4) 10(float) + 13: TypePointer Function 12(PS_OUTPUT) + 15: 6(int) Constant 0 + 18: 10(float) Constant 0 + 19: 10(float) Constant 1065353216 + 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 + 14(psout): 13(ptr) Variable Function + Store 8(thisLineIs) 9 + 16: 6(int) Load 8(thisLineIs) + 17: 10(float) ConvertSToF 16 + 20: 11(fvec4) CompositeConstruct 17 18 18 19 + 22: 21(ptr) AccessChain 14(psout) 15 + Store 22 20 + 25: 24(ptr) AccessChain 14(psout) 23 + Store 25 19 + 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 d3513538..1e18a405 100755 --- a/Test/baseResults/hlsl.precedence.frag.out +++ b/Test/baseResults/hlsl.precedence.frag.out @@ -2,22 +2,55 @@ hlsl.precedence.frag 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; (temp 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 '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:8 add (temp 4-component vector of float) +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: @@ -26,55 +59,112 @@ Linked fragment stage: 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; (temp 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 '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:8 add (temp 4-component vector of float) +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 21 +// 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 + 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 - ReturnValue 19 + 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 bfe2643c..64cce2c7 100755 --- a/Test/baseResults/hlsl.precedence2.frag.out +++ b/Test/baseResults/hlsl.precedence2.frag.out @@ -2,30 +2,38 @@ hlsl.precedence2.frag 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; (temp 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 @@ Linked fragment stage: 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; (temp 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 00000000..e9205cfe --- /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; (temp 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( (temp 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:12 Sequence +0:12 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; (temp 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( (temp 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:12 Sequence +0:12 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.promote.binary.frag.out b/Test/baseResults/hlsl.promote.binary.frag.out new file mode 100644 index 00000000..a2e7176c --- /dev/null +++ b/Test/baseResults/hlsl.promote.binary.frag.out @@ -0,0 +1,280 @@ +hlsl.promote.binary.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:14 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:14 Function Parameters: +0:? Sequence +0:15 mod (temp float) +0:15 Convert int to float (temp float) +0:15 ival: direct index for structure (layout(offset=32 ) uniform int) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:15 Constant: +0:15 2 (const uint) +0:15 fval: direct index for structure (layout(offset=64 ) uniform float) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:15 Constant: +0:15 4 (const uint) +0:16 mod (temp 4-component vector of float) +0:16 Convert int to float (temp 4-component vector of float) +0:16 ival4: direct index for structure (layout(offset=48 ) uniform 4-component vector of int) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 3 (const uint) +0:16 fval4: direct index for structure (layout(offset=80 ) uniform 4-component vector of float) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 5 (const uint) +0:18 mod (temp float) +0:18 Convert bool to float (temp float) +0:18 bval: direct index for structure (layout(offset=0 ) uniform bool) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:18 Constant: +0:18 0 (const uint) +0:18 fval: direct index for structure (layout(offset=64 ) uniform float) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:18 Constant: +0:18 4 (const uint) +0:19 mod (temp 4-component vector of float) +0:19 Convert bool to float (temp 4-component vector of float) +0:19 bval4: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 1 (const uint) +0:19 fval4: direct index for structure (layout(offset=80 ) uniform 4-component vector of float) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 5 (const uint) +0:21 Sequence +0:21 move second child to first child (temp int) +0:21 'l_int' (temp int) +0:21 Constant: +0:21 1 (const int) +0:22 mod second child into first child (temp int) +0:22 'l_int' (temp int) +0:22 Convert float to int (temp int) +0:22 fval: direct index for structure (layout(offset=64 ) uniform float) +0:22 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:22 Constant: +0:22 4 (const uint) +0:25 move second child to first child (temp 4-component vector of float) +0:25 Color: direct index for structure (temp 4-component vector of float) +0:25 'psout' (temp structure{temp 4-component vector of float Color}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0.000000 +0:25 0.000000 +0:25 0.000000 +0:25 0.000000 +0:26 Sequence +0:26 Sequence +0:26 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:26 Color: direct index for structure (temp 4-component vector of float) +0:26 'psout' (temp structure{temp 4-component vector of float Color}) +0:26 Constant: +0:26 0 (const int) +0:26 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:14 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:14 Function Parameters: +0:? Sequence +0:15 mod (temp float) +0:15 Convert int to float (temp float) +0:15 ival: direct index for structure (layout(offset=32 ) uniform int) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:15 Constant: +0:15 2 (const uint) +0:15 fval: direct index for structure (layout(offset=64 ) uniform float) +0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:15 Constant: +0:15 4 (const uint) +0:16 mod (temp 4-component vector of float) +0:16 Convert int to float (temp 4-component vector of float) +0:16 ival4: direct index for structure (layout(offset=48 ) uniform 4-component vector of int) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 3 (const uint) +0:16 fval4: direct index for structure (layout(offset=80 ) uniform 4-component vector of float) +0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:16 Constant: +0:16 5 (const uint) +0:18 mod (temp float) +0:18 Convert bool to float (temp float) +0:18 bval: direct index for structure (layout(offset=0 ) uniform bool) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:18 Constant: +0:18 0 (const uint) +0:18 fval: direct index for structure (layout(offset=64 ) uniform float) +0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:18 Constant: +0:18 4 (const uint) +0:19 mod (temp 4-component vector of float) +0:19 Convert bool to float (temp 4-component vector of float) +0:19 bval4: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 1 (const uint) +0:19 fval4: direct index for structure (layout(offset=80 ) uniform 4-component vector of float) +0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:19 Constant: +0:19 5 (const uint) +0:21 Sequence +0:21 move second child to first child (temp int) +0:21 'l_int' (temp int) +0:21 Constant: +0:21 1 (const int) +0:22 mod second child into first child (temp int) +0:22 'l_int' (temp int) +0:22 Convert float to int (temp int) +0:22 fval: direct index for structure (layout(offset=64 ) uniform float) +0:22 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) +0:22 Constant: +0:22 4 (const uint) +0:25 move second child to first child (temp 4-component vector of float) +0:25 Color: direct index for structure (temp 4-component vector of float) +0:25 'psout' (temp structure{temp 4-component vector of float Color}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0.000000 +0:25 0.000000 +0:25 0.000000 +0:25 0.000000 +0:26 Sequence +0:26 Sequence +0:26 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:26 Color: direct index for structure (temp 4-component vector of float) +0:26 'psout' (temp structure{temp 4-component vector of float Color}) +0:26 Constant: +0:26 0 (const int) +0:26 Branch: Return +0:? Linker Objects +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform bool bval, layout(offset=16 ) uniform 4-component vector of bool bval4, layout(offset=32 ) uniform int ival, layout(offset=48 ) uniform 4-component vector of int ival4, layout(offset=64 ) uniform float fval, layout(offset=80 ) uniform 4-component vector of float fval4}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 78 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 74 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 12 "$Global" + MemberName 12($Global) 0 "bval" + MemberName 12($Global) 1 "bval4" + MemberName 12($Global) 2 "ival" + MemberName 12($Global) 3 "ival4" + MemberName 12($Global) 4 "fval" + MemberName 12($Global) 5 "fval4" + Name 14 "" + Name 62 "l_int" + Name 68 "PS_OUTPUT" + MemberName 68(PS_OUTPUT) 0 "Color" + Name 70 "psout" + Name 74 "Color" + MemberDecorate 12($Global) 0 Offset 0 + MemberDecorate 12($Global) 1 Offset 16 + MemberDecorate 12($Global) 2 Offset 32 + MemberDecorate 12($Global) 3 Offset 48 + MemberDecorate 12($Global) 4 Offset 64 + MemberDecorate 12($Global) 5 Offset 80 + Decorate 12($Global) Block + Decorate 14 DescriptorSet 0 + Decorate 74(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 4 + 8: TypeInt 32 1 + 9: TypeVector 8(int) 4 + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12($Global): TypeStruct 6(int) 7(ivec4) 8(int) 9(ivec4) 10(float) 11(fvec4) + 13: TypePointer Uniform 12($Global) + 14: 13(ptr) Variable Uniform + 15: 8(int) Constant 2 + 16: TypePointer Uniform 8(int) + 20: 8(int) Constant 4 + 21: TypePointer Uniform 10(float) + 25: 8(int) Constant 3 + 26: TypePointer Uniform 9(ivec4) + 30: 8(int) Constant 5 + 31: TypePointer Uniform 11(fvec4) + 35: 8(int) Constant 0 + 36: TypePointer Uniform 6(int) + 39: TypeBool + 40: 6(int) Constant 0 + 42: 10(float) Constant 0 + 43: 10(float) Constant 1065353216 + 48: 8(int) Constant 1 + 49: TypePointer Uniform 7(ivec4) + 52: TypeVector 39(bool) 4 + 53: 7(ivec4) ConstantComposite 40 40 40 40 + 55: 11(fvec4) ConstantComposite 42 42 42 42 + 56: 11(fvec4) ConstantComposite 43 43 43 43 + 61: TypePointer Function 8(int) + 68(PS_OUTPUT): TypeStruct 11(fvec4) + 69: TypePointer Function 68(PS_OUTPUT) + 71: TypePointer Function 11(fvec4) + 73: TypePointer Output 11(fvec4) + 74(Color): 73(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 62(l_int): 61(ptr) Variable Function + 70(psout): 69(ptr) Variable Function + 17: 16(ptr) AccessChain 14 15 + 18: 8(int) Load 17 + 19: 10(float) ConvertSToF 18 + 22: 21(ptr) AccessChain 14 20 + 23: 10(float) Load 22 + 24: 10(float) FMod 19 23 + 27: 26(ptr) AccessChain 14 25 + 28: 9(ivec4) Load 27 + 29: 11(fvec4) ConvertSToF 28 + 32: 31(ptr) AccessChain 14 30 + 33: 11(fvec4) Load 32 + 34: 11(fvec4) FMod 29 33 + 37: 36(ptr) AccessChain 14 35 + 38: 6(int) Load 37 + 41: 39(bool) INotEqual 38 40 + 44: 10(float) Select 41 43 42 + 45: 21(ptr) AccessChain 14 20 + 46: 10(float) Load 45 + 47: 10(float) FMod 44 46 + 50: 49(ptr) AccessChain 14 48 + 51: 7(ivec4) Load 50 + 54: 52(bvec4) INotEqual 51 53 + 57: 11(fvec4) Select 54 56 55 + 58: 31(ptr) AccessChain 14 30 + 59: 11(fvec4) Load 58 + 60: 11(fvec4) FMod 57 59 + Store 62(l_int) 48 + 63: 21(ptr) AccessChain 14 20 + 64: 10(float) Load 63 + 65: 8(int) ConvertFToS 64 + 66: 8(int) Load 62(l_int) + 67: 8(int) SMod 66 65 + Store 62(l_int) 67 + 72: 71(ptr) AccessChain 70(psout) 35 + Store 72 55 + 75: 71(ptr) AccessChain 70(psout) 35 + 76: 11(fvec4) Load 75 + Store 74(Color) 76 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out new file mode 100644 index 00000000..e3df54ff --- /dev/null +++ b/Test/baseResults/hlsl.promotions.frag.out @@ -0,0 +1,2367 @@ +hlsl.promotions.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:19 Function Definition: Fn_F3(vf3; (temp void) +0:19 Function Parameters: +0:19 'x' (in 3-component vector of float) +0:20 Function Definition: Fn_I3(vi3; (temp void) +0:20 Function Parameters: +0:20 'x' (in 3-component vector of int) +0:21 Function Definition: Fn_U3(vu3; (temp void) +0:21 Function Parameters: +0:21 'x' (in 3-component vector of uint) +0:22 Function Definition: Fn_B3(vb3; (temp void) +0:22 Function Parameters: +0:22 'x' (in 3-component vector of bool) +0:23 Function Definition: Fn_D3(vd3; (temp void) +0:23 Function Parameters: +0:23 'x' (in 3-component vector of double) +0:26 Function Definition: Fn_R_F3I(vf3; (temp 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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:26 Constant: +0:26 0 (const uint) +0:26 Branch: Return with expression +0:26 Convert int to float (temp 3-component vector of float) +0:26 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:26 Constant: +0:26 0 (const uint) +0:27 Function Definition: Fn_R_F3U(vf3; (temp 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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:27 Constant: +0:27 3 (const uint) +0:27 Branch: Return with expression +0:27 Convert uint to float (temp 3-component vector of float) +0:27 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:27 Constant: +0:27 3 (const uint) +0:28 Function Definition: Fn_R_F3B(vf3; (temp 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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:28 Constant: +0:28 1 (const uint) +0:28 Branch: Return with expression +0:28 Convert bool to float (temp 3-component vector of float) +0:28 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:28 Constant: +0:28 1 (const uint) +0:29 Function Definition: Fn_R_F3D(vf3; (temp 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:29 Constant: +0:29 4 (const uint) +0:29 Branch: Return with expression +0:29 Convert double to float (temp 3-component vector of float) +0:29 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:29 Constant: +0:29 4 (const uint) +0:31 Function Definition: Fn_R_I3U(vi3; (temp 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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:31 Constant: +0:31 3 (const uint) +0:31 Branch: Return with expression +0:31 Convert uint to int (temp 3-component vector of int) +0:31 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:31 Constant: +0:31 3 (const uint) +0:32 Function Definition: Fn_R_I3B(vi3; (temp 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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:32 Constant: +0:32 1 (const uint) +0:32 Branch: Return with expression +0:32 Convert bool to int (temp 3-component vector of int) +0:32 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:32 Constant: +0:32 1 (const uint) +0:33 Function Definition: Fn_R_I3F(vi3; (temp 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:33 Constant: +0:33 2 (const uint) +0:33 Branch: Return with expression +0:33 Convert float to int (temp 3-component vector of int) +0:33 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:33 Constant: +0:33 2 (const uint) +0:34 Function Definition: Fn_R_I3D(vi3; (temp 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:34 Constant: +0:34 4 (const uint) +0:34 Branch: Return with expression +0:34 Convert double to int (temp 3-component vector of int) +0:34 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:34 Constant: +0:34 4 (const uint) +0:36 Function Definition: Fn_R_U3I(vu3; (temp 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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:36 Constant: +0:36 0 (const uint) +0:36 Branch: Return with expression +0:36 Convert int to uint (temp 3-component vector of uint) +0:36 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:36 Constant: +0:36 0 (const uint) +0:37 Function Definition: Fn_R_U3F(vu3; (temp 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:37 Constant: +0:37 2 (const uint) +0:37 Branch: Return with expression +0:37 Convert float to uint (temp 3-component vector of uint) +0:37 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:37 Constant: +0:37 2 (const uint) +0:38 Function Definition: Fn_R_U3B(vu3; (temp 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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:38 Constant: +0:38 1 (const uint) +0:38 Branch: Return with expression +0:38 Convert bool to uint (temp 3-component vector of uint) +0:38 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:38 Constant: +0:38 1 (const uint) +0:39 Function Definition: Fn_R_U3D(vu3; (temp 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:39 Constant: +0:39 4 (const uint) +0:39 Branch: Return with expression +0:39 Convert double to uint (temp 3-component vector of uint) +0:39 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:39 Constant: +0:39 4 (const uint) +0:41 Function Definition: Fn_R_B3I(vb3; (temp 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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:41 Constant: +0:41 0 (const uint) +0:41 Branch: Return with expression +0:41 Convert int to bool (temp 3-component vector of bool) +0:41 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:41 Constant: +0:41 0 (const uint) +0:42 Function Definition: Fn_R_B3U(vb3; (temp 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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:42 Constant: +0:42 3 (const uint) +0:42 Branch: Return with expression +0:42 Convert uint to bool (temp 3-component vector of bool) +0:42 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:42 Constant: +0:42 3 (const uint) +0:43 Function Definition: Fn_R_B3F(vb3; (temp 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:43 Constant: +0:43 2 (const uint) +0:43 Branch: Return with expression +0:43 Convert float to bool (temp 3-component vector of bool) +0:43 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:43 Constant: +0:43 2 (const uint) +0:44 Function Definition: Fn_R_B3D(vb3; (temp 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:44 Constant: +0:44 4 (const uint) +0:44 Branch: Return with expression +0:44 Convert double to bool (temp 3-component vector of bool) +0:44 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:44 Constant: +0:44 4 (const uint) +0:46 Function Definition: Fn_R_D3I(vd3; (temp 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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:46 Constant: +0:46 0 (const uint) +0:46 Branch: Return with expression +0:46 Convert int to double (temp 3-component vector of double) +0:46 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:46 Constant: +0:46 0 (const uint) +0:47 Function Definition: Fn_R_D3U(vd3; (temp 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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:47 Constant: +0:47 3 (const uint) +0:47 Branch: Return with expression +0:47 Convert uint to double (temp 3-component vector of double) +0:47 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:47 Constant: +0:47 3 (const uint) +0:48 Function Definition: Fn_R_D3B(vd3; (temp 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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:48 Constant: +0:48 1 (const uint) +0:48 Branch: Return with expression +0:48 Convert bool to double (temp 3-component vector of double) +0:48 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:48 Constant: +0:48 1 (const uint) +0:49 Function Definition: Fn_R_D3F(vd3; (temp 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:49 Constant: +0:49 2 (const uint) +0:49 Branch: Return with expression +0:49 Convert float to double (temp 3-component vector of double) +0:49 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:49 Constant: +0:49 2 (const uint) +0:52 Function Definition: main( (temp 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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:54 Constant: +0:54 0 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:55 Constant: +0:55 1 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:56 Constant: +0:56 3 (const 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:57 Constant: +0:57 4 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:59 Constant: +0:59 1 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:60 Constant: +0:60 3 (const 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:61 Constant: +0:61 2 (const uint) +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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:62 Constant: +0:62 4 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:64 Constant: +0:64 1 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:65 Constant: +0:65 0 (const uint) +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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:66 Constant: +0:66 2 (const uint) +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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:67 Constant: +0:67 4 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:69 Constant: +0:69 0 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:70 Constant: +0:70 3 (const 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:71 Constant: +0:71 2 (const uint) +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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:72 Constant: +0:72 4 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:74 Constant: +0:74 0 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:75 Constant: +0:75 3 (const 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:76 Constant: +0:76 2 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:77 Constant: +0:77 1 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:80 Constant: +0:80 0 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:81 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:81 Constant: +0:81 1 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:82 Constant: +0:82 3 (const 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:83 Constant: +0:83 4 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:85 Constant: +0:85 1 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:86 Constant: +0:86 3 (const 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:87 Constant: +0:87 2 (const uint) +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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:88 Constant: +0:88 4 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:90 Constant: +0:90 1 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:91 Constant: +0:91 0 (const uint) +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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:92 Constant: +0:92 2 (const uint) +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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:93 Constant: +0:93 4 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:97 Constant: +0:97 0 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:98 Constant: +0:98 3 (const 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:99 Constant: +0:99 2 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:100 Constant: +0:100 1 (const uint) +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: direct index for structure (layout(offset=88 ) uniform int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:103 Constant: +0:103 5 (const uint) +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: direct index for structure (layout(offset=92 ) uniform bool) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:104 Constant: +0:104 6 (const uint) +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: direct index for structure (layout(offset=100 ) uniform uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:105 Constant: +0:105 8 (const 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: direct index for structure (layout(offset=104 ) uniform double) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:106 Constant: +0:106 9 (const uint) +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: direct index for structure (layout(offset=92 ) uniform bool) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:108 Constant: +0:108 6 (const uint) +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: direct index for structure (layout(offset=100 ) uniform uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:109 Constant: +0:109 8 (const 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: direct index for structure (layout(offset=96 ) uniform float) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:110 Constant: +0:110 7 (const uint) +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: direct index for structure (layout(offset=104 ) uniform double) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:111 Constant: +0:111 9 (const uint) +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: direct index for structure (layout(offset=92 ) uniform bool) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:113 Constant: +0:113 6 (const uint) +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: direct index for structure (layout(offset=88 ) uniform int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:114 Constant: +0:114 5 (const uint) +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: direct index for structure (layout(offset=96 ) uniform float) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:115 Constant: +0:115 7 (const uint) +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: direct index for structure (layout(offset=104 ) uniform double) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:116 Constant: +0:116 9 (const uint) +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: direct index for structure (layout(offset=88 ) uniform int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:120 Constant: +0:120 5 (const uint) +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: direct index for structure (layout(offset=100 ) uniform uint) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:121 Constant: +0:121 8 (const 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: direct index for structure (layout(offset=96 ) uniform float) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:122 Constant: +0:122 7 (const uint) +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: direct index for structure (layout(offset=92 ) uniform bool) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:123 Constant: +0:123 6 (const uint) +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:200 Sequence +0:200 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:? 'anon@0' (uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +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; (temp void) +0:19 Function Parameters: +0:19 'x' (in 3-component vector of float) +0:20 Function Definition: Fn_I3(vi3; (temp void) +0:20 Function Parameters: +0:20 'x' (in 3-component vector of int) +0:21 Function Definition: Fn_U3(vu3; (temp void) +0:21 Function Parameters: +0:21 'x' (in 3-component vector of uint) +0:22 Function Definition: Fn_B3(vb3; (temp void) +0:22 Function Parameters: +0:22 'x' (in 3-component vector of bool) +0:23 Function Definition: Fn_D3(vd3; (temp void) +0:23 Function Parameters: +0:23 'x' (in 3-component vector of double) +0:26 Function Definition: Fn_R_F3I(vf3; (temp 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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:26 Constant: +0:26 0 (const uint) +0:26 Branch: Return with expression +0:26 Convert int to float (temp 3-component vector of float) +0:26 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:26 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:26 Constant: +0:26 0 (const uint) +0:27 Function Definition: Fn_R_F3U(vf3; (temp 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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:27 Constant: +0:27 3 (const uint) +0:27 Branch: Return with expression +0:27 Convert uint to float (temp 3-component vector of float) +0:27 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:27 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:27 Constant: +0:27 3 (const uint) +0:28 Function Definition: Fn_R_F3B(vf3; (temp 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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:28 Constant: +0:28 1 (const uint) +0:28 Branch: Return with expression +0:28 Convert bool to float (temp 3-component vector of float) +0:28 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:28 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:28 Constant: +0:28 1 (const uint) +0:29 Function Definition: Fn_R_F3D(vf3; (temp 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:29 Constant: +0:29 4 (const uint) +0:29 Branch: Return with expression +0:29 Convert double to float (temp 3-component vector of float) +0:29 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:29 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:29 Constant: +0:29 4 (const uint) +0:31 Function Definition: Fn_R_I3U(vi3; (temp 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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:31 Constant: +0:31 3 (const uint) +0:31 Branch: Return with expression +0:31 Convert uint to int (temp 3-component vector of int) +0:31 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:31 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:31 Constant: +0:31 3 (const uint) +0:32 Function Definition: Fn_R_I3B(vi3; (temp 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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:32 Constant: +0:32 1 (const uint) +0:32 Branch: Return with expression +0:32 Convert bool to int (temp 3-component vector of int) +0:32 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:32 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:32 Constant: +0:32 1 (const uint) +0:33 Function Definition: Fn_R_I3F(vi3; (temp 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:33 Constant: +0:33 2 (const uint) +0:33 Branch: Return with expression +0:33 Convert float to int (temp 3-component vector of int) +0:33 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:33 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:33 Constant: +0:33 2 (const uint) +0:34 Function Definition: Fn_R_I3D(vi3; (temp 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:34 Constant: +0:34 4 (const uint) +0:34 Branch: Return with expression +0:34 Convert double to int (temp 3-component vector of int) +0:34 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:34 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:34 Constant: +0:34 4 (const uint) +0:36 Function Definition: Fn_R_U3I(vu3; (temp 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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:36 Constant: +0:36 0 (const uint) +0:36 Branch: Return with expression +0:36 Convert int to uint (temp 3-component vector of uint) +0:36 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:36 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:36 Constant: +0:36 0 (const uint) +0:37 Function Definition: Fn_R_U3F(vu3; (temp 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:37 Constant: +0:37 2 (const uint) +0:37 Branch: Return with expression +0:37 Convert float to uint (temp 3-component vector of uint) +0:37 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:37 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:37 Constant: +0:37 2 (const uint) +0:38 Function Definition: Fn_R_U3B(vu3; (temp 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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:38 Constant: +0:38 1 (const uint) +0:38 Branch: Return with expression +0:38 Convert bool to uint (temp 3-component vector of uint) +0:38 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:38 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:38 Constant: +0:38 1 (const uint) +0:39 Function Definition: Fn_R_U3D(vu3; (temp 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:39 Constant: +0:39 4 (const uint) +0:39 Branch: Return with expression +0:39 Convert double to uint (temp 3-component vector of uint) +0:39 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:39 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:39 Constant: +0:39 4 (const uint) +0:41 Function Definition: Fn_R_B3I(vb3; (temp 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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:41 Constant: +0:41 0 (const uint) +0:41 Branch: Return with expression +0:41 Convert int to bool (temp 3-component vector of bool) +0:41 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:41 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:41 Constant: +0:41 0 (const uint) +0:42 Function Definition: Fn_R_B3U(vb3; (temp 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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:42 Constant: +0:42 3 (const uint) +0:42 Branch: Return with expression +0:42 Convert uint to bool (temp 3-component vector of bool) +0:42 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:42 Constant: +0:42 3 (const uint) +0:43 Function Definition: Fn_R_B3F(vb3; (temp 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:43 Constant: +0:43 2 (const uint) +0:43 Branch: Return with expression +0:43 Convert float to bool (temp 3-component vector of bool) +0:43 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:43 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:43 Constant: +0:43 2 (const uint) +0:44 Function Definition: Fn_R_B3D(vb3; (temp 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:44 Constant: +0:44 4 (const uint) +0:44 Branch: Return with expression +0:44 Convert double to bool (temp 3-component vector of bool) +0:44 d3: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:44 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:44 Constant: +0:44 4 (const uint) +0:46 Function Definition: Fn_R_D3I(vd3; (temp 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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:46 Constant: +0:46 0 (const uint) +0:46 Branch: Return with expression +0:46 Convert int to double (temp 3-component vector of double) +0:46 i3: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:46 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:46 Constant: +0:46 0 (const uint) +0:47 Function Definition: Fn_R_D3U(vd3; (temp 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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:47 Constant: +0:47 3 (const uint) +0:47 Branch: Return with expression +0:47 Convert uint to double (temp 3-component vector of double) +0:47 u3: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:47 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:47 Constant: +0:47 3 (const uint) +0:48 Function Definition: Fn_R_D3B(vd3; (temp 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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:48 Constant: +0:48 1 (const uint) +0:48 Branch: Return with expression +0:48 Convert bool to double (temp 3-component vector of double) +0:48 b3: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:48 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:48 Constant: +0:48 1 (const uint) +0:49 Function Definition: Fn_R_D3F(vd3; (temp 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:49 Constant: +0:49 2 (const uint) +0:49 Branch: Return with expression +0:49 Convert float to double (temp 3-component vector of double) +0:49 f3: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:49 Constant: +0:49 2 (const uint) +0:52 Function Definition: main( (temp 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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:54 Constant: +0:54 0 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:55 Constant: +0:55 1 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:56 Constant: +0:56 3 (const 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:57 Constant: +0:57 4 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:59 Constant: +0:59 1 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:60 Constant: +0:60 3 (const 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:61 Constant: +0:61 2 (const uint) +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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:62 Constant: +0:62 4 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:64 Constant: +0:64 1 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:65 Constant: +0:65 0 (const uint) +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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:66 Constant: +0:66 2 (const uint) +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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:67 Constant: +0:67 4 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:69 Constant: +0:69 0 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:70 Constant: +0:70 3 (const 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:71 Constant: +0:71 2 (const uint) +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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:72 Constant: +0:72 4 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:74 Constant: +0:74 0 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:75 Constant: +0:75 3 (const 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:76 Constant: +0:76 2 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:77 Constant: +0:77 1 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:80 Constant: +0:80 0 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:81 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:81 Constant: +0:81 1 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:82 Constant: +0:82 3 (const 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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:83 Constant: +0:83 4 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:85 Constant: +0:85 1 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:86 Constant: +0:86 3 (const 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:87 Constant: +0:87 2 (const uint) +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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:88 Constant: +0:88 4 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:90 Constant: +0:90 1 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:91 Constant: +0:91 0 (const uint) +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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:92 Constant: +0:92 2 (const uint) +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: direct index for structure (layout(offset=64 ) uniform 3-component vector of double) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:93 Constant: +0:93 4 (const uint) +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: direct index for structure (layout(offset=0 ) uniform 3-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:97 Constant: +0:97 0 (const uint) +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: direct index for structure (layout(offset=48 ) uniform 3-component vector of uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:98 Constant: +0:98 3 (const 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: direct index for structure (layout(offset=32 ) uniform 3-component vector of float) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:99 Constant: +0:99 2 (const uint) +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: direct index for structure (layout(offset=16 ) uniform 3-component vector of bool) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:100 Constant: +0:100 1 (const uint) +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: direct index for structure (layout(offset=88 ) uniform int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:103 Constant: +0:103 5 (const uint) +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: direct index for structure (layout(offset=92 ) uniform bool) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:104 Constant: +0:104 6 (const uint) +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: direct index for structure (layout(offset=100 ) uniform uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:105 Constant: +0:105 8 (const 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: direct index for structure (layout(offset=104 ) uniform double) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:106 Constant: +0:106 9 (const uint) +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: direct index for structure (layout(offset=92 ) uniform bool) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:108 Constant: +0:108 6 (const uint) +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: direct index for structure (layout(offset=100 ) uniform uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:109 Constant: +0:109 8 (const 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: direct index for structure (layout(offset=96 ) uniform float) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:110 Constant: +0:110 7 (const uint) +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: direct index for structure (layout(offset=104 ) uniform double) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:111 Constant: +0:111 9 (const uint) +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: direct index for structure (layout(offset=92 ) uniform bool) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:113 Constant: +0:113 6 (const uint) +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: direct index for structure (layout(offset=88 ) uniform int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:114 Constant: +0:114 5 (const uint) +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: direct index for structure (layout(offset=96 ) uniform float) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:115 Constant: +0:115 7 (const uint) +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: direct index for structure (layout(offset=104 ) uniform double) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:116 Constant: +0:116 9 (const uint) +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: direct index for structure (layout(offset=88 ) uniform int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:120 Constant: +0:120 5 (const uint) +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: direct index for structure (layout(offset=100 ) uniform uint) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:121 Constant: +0:121 8 (const 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: direct index for structure (layout(offset=96 ) uniform float) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:122 Constant: +0:122 7 (const uint) +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: direct index for structure (layout(offset=92 ) uniform bool) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:123 Constant: +0:123 6 (const uint) +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:200 Sequence +0:200 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:? 'anon@0' (uniform block{layout(offset=0 ) uniform 3-component vector of int i3, layout(offset=16 ) uniform 3-component vector of bool b3, layout(offset=32 ) uniform 3-component vector of float f3, layout(offset=48 ) uniform 3-component vector of uint u3, layout(offset=64 ) uniform 3-component vector of double d3, layout(offset=88 ) uniform int is, layout(offset=92 ) uniform bool bs, layout(offset=96 ) uniform float fs, layout(offset=100 ) uniform uint us, layout(offset=104 ) uniform double ds}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 591 + + Capability Shader + Capability Float64 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 587 + 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 106 "$Global" + MemberName 106($Global) 0 "i3" + MemberName 106($Global) 1 "b3" + MemberName 106($Global) 2 "f3" + MemberName 106($Global) 3 "u3" + MemberName 106($Global) 4 "d3" + MemberName 106($Global) 5 "is" + MemberName 106($Global) 6 "bs" + MemberName 106($Global) 7 "fs" + MemberName 106($Global) 8 "us" + MemberName 106($Global) 9 "ds" + Name 108 "" + Name 300 "r00" + Name 304 "r01" + Name 309 "r02" + Name 313 "r03" + Name 317 "r10" + Name 322 "r11" + Name 326 "r12" + Name 330 "r13" + Name 334 "r20" + Name 339 "r21" + Name 343 "r22" + Name 347 "r23" + Name 351 "r30" + Name 355 "r31" + Name 359 "r32" + Name 363 "r33" + Name 367 "r40" + Name 371 "r41" + Name 375 "r42" + Name 379 "r43" + Name 570 "c1" + Name 571 "c2" + Name 574 "outval" + Name 581 "PS_OUTPUT" + MemberName 581(PS_OUTPUT) 0 "Color" + Name 583 "psout" + Name 587 "Color" + MemberDecorate 106($Global) 0 Offset 0 + MemberDecorate 106($Global) 1 Offset 16 + MemberDecorate 106($Global) 2 Offset 32 + MemberDecorate 106($Global) 3 Offset 48 + MemberDecorate 106($Global) 4 Offset 64 + MemberDecorate 106($Global) 5 Offset 88 + MemberDecorate 106($Global) 6 Offset 92 + MemberDecorate 106($Global) 7 Offset 96 + MemberDecorate 106($Global) 8 Offset 100 + MemberDecorate 106($Global) 9 Offset 104 + Decorate 106($Global) Block + Decorate 108 DescriptorSet 0 + Decorate 587(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($Global): TypeStruct 14(ivec3) 21(ivec3) 7(fvec3) 21(ivec3) 35(fvec3) 13(int) 20(int) 6(float) 20(int) 34(float) + 107: TypePointer Uniform 106($Global) + 108: 107(ptr) Variable Uniform + 109: 13(int) Constant 0 + 110: TypePointer Uniform 14(ivec3) + 119: 13(int) Constant 3 + 120: TypePointer Uniform 21(ivec3) + 129: 13(int) Constant 1 + 132: 20(int) Constant 0 + 133: 21(ivec3) ConstantComposite 132 132 132 + 135: 6(float) Constant 0 + 136: 6(float) Constant 1065353216 + 137: 7(fvec3) ConstantComposite 135 135 135 + 138: 7(fvec3) ConstantComposite 136 136 136 + 146: 13(int) Constant 4 + 147: TypePointer Uniform 35(fvec3) + 167: 14(ivec3) ConstantComposite 109 109 109 + 168: 14(ivec3) ConstantComposite 129 129 129 + 176: 13(int) Constant 2 + 177: TypePointer Uniform 7(fvec3) + 213: 20(int) Constant 1 + 214: 21(ivec3) ConstantComposite 213 213 213 + 256: 34(float) Constant 0 0 + 257: 35(fvec3) ConstantComposite 256 256 256 + 283: 34(float) Constant 0 1072693248 + 284: 35(fvec3) ConstantComposite 283 283 283 + 468: 13(int) Constant 5 + 469: TypePointer Uniform 13(int) + 475: 13(int) Constant 6 + 476: TypePointer Uniform 20(int) + 483: 13(int) Constant 8 + 489: 13(int) Constant 9 + 490: TypePointer Uniform 34(float) + 509: 13(int) Constant 7 + 510: TypePointer Uniform 6(float) + 569: TypePointer Function 13(int) + 572: TypeVector 6(float) 4 + 573: TypePointer Function 572(fvec4) + 575: 6(float) Constant 1080452710 + 581(PS_OUTPUT): TypeStruct 572(fvec4) + 582: TypePointer Function 581(PS_OUTPUT) + 586: TypePointer Output 572(fvec4) + 587(Color): 586(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 300(r00): 8(ptr) Variable Function + 304(r01): 8(ptr) Variable Function + 309(r02): 8(ptr) Variable Function + 313(r03): 8(ptr) Variable Function + 317(r10): 15(ptr) Variable Function + 322(r11): 15(ptr) Variable Function + 326(r12): 15(ptr) Variable Function + 330(r13): 15(ptr) Variable Function + 334(r20): 22(ptr) Variable Function + 339(r21): 22(ptr) Variable Function + 343(r22): 22(ptr) Variable Function + 347(r23): 22(ptr) Variable Function + 351(r30): 29(ptr) Variable Function + 355(r31): 29(ptr) Variable Function + 359(r32): 29(ptr) Variable Function + 363(r33): 29(ptr) Variable Function + 367(r40): 36(ptr) Variable Function + 371(r41): 36(ptr) Variable Function + 375(r42): 36(ptr) Variable Function + 379(r43): 36(ptr) Variable Function + 570(c1): 569(ptr) Variable Function + 571(c2): 569(ptr) Variable Function + 574(outval): 573(ptr) Variable Function + 583(psout): 582(ptr) Variable Function + 301: 110(ptr) AccessChain 108 109 + 302: 14(ivec3) Load 301 + 303: 7(fvec3) ConvertSToF 302 + Store 300(r00) 303 + 305: 120(ptr) AccessChain 108 129 + 306: 21(ivec3) Load 305 + 307: 28(bvec3) INotEqual 306 133 + 308: 7(fvec3) Select 307 138 137 + Store 304(r01) 308 + 310: 120(ptr) AccessChain 108 119 + 311: 21(ivec3) Load 310 + 312: 7(fvec3) ConvertUToF 311 + Store 309(r02) 312 + 314: 147(ptr) AccessChain 108 146 + 315: 35(fvec3) Load 314 + 316: 7(fvec3) FConvert 315 + Store 313(r03) 316 + 318: 120(ptr) AccessChain 108 129 + 319: 21(ivec3) Load 318 + 320: 28(bvec3) INotEqual 319 133 + 321: 14(ivec3) Select 320 168 167 + Store 317(r10) 321 + 323: 120(ptr) AccessChain 108 119 + 324: 21(ivec3) Load 323 + 325: 14(ivec3) Bitcast 324 + Store 322(r11) 325 + 327: 177(ptr) AccessChain 108 176 + 328: 7(fvec3) Load 327 + 329: 14(ivec3) ConvertFToS 328 + Store 326(r12) 329 + 331: 147(ptr) AccessChain 108 146 + 332: 35(fvec3) Load 331 + 333: 14(ivec3) ConvertFToS 332 + Store 330(r13) 333 + 335: 120(ptr) AccessChain 108 129 + 336: 21(ivec3) Load 335 + 337: 28(bvec3) INotEqual 336 133 + 338: 21(ivec3) Select 337 214 133 + Store 334(r20) 338 + 340: 110(ptr) AccessChain 108 109 + 341: 14(ivec3) Load 340 + 342: 21(ivec3) Bitcast 341 + Store 339(r21) 342 + 344: 177(ptr) AccessChain 108 176 + 345: 7(fvec3) Load 344 + 346: 21(ivec3) ConvertFToU 345 + Store 343(r22) 346 + 348: 147(ptr) AccessChain 108 146 + 349: 35(fvec3) Load 348 + 350: 21(ivec3) ConvertFToU 349 + Store 347(r23) 350 + 352: 110(ptr) AccessChain 108 109 + 353: 14(ivec3) Load 352 + 354: 28(bvec3) INotEqual 353 133 + Store 351(r30) 354 + 356: 120(ptr) AccessChain 108 119 + 357: 21(ivec3) Load 356 + 358: 28(bvec3) INotEqual 357 133 + Store 355(r31) 358 + 360: 177(ptr) AccessChain 108 176 + 361: 7(fvec3) Load 360 + 362: 28(bvec3) FOrdNotEqual 361 137 + Store 359(r32) 362 + 364: 147(ptr) AccessChain 108 146 + 365: 35(fvec3) Load 364 + 366: 28(bvec3) FOrdNotEqual 365 257 + Store 363(r33) 366 + 368: 110(ptr) AccessChain 108 109 + 369: 14(ivec3) Load 368 + 370: 35(fvec3) ConvertSToF 369 + Store 367(r40) 370 + 372: 120(ptr) AccessChain 108 119 + 373: 21(ivec3) Load 372 + 374: 35(fvec3) ConvertUToF 373 + Store 371(r41) 374 + 376: 177(ptr) AccessChain 108 176 + 377: 7(fvec3) Load 376 + 378: 35(fvec3) FConvert 377 + Store 375(r42) 378 + 380: 120(ptr) AccessChain 108 129 + 381: 21(ivec3) Load 380 + 382: 28(bvec3) INotEqual 381 133 + 383: 35(fvec3) Select 382 284 257 + Store 379(r43) 383 + 384: 110(ptr) AccessChain 108 109 + 385: 14(ivec3) Load 384 + 386: 7(fvec3) ConvertSToF 385 + 387: 7(fvec3) Load 300(r00) + 388: 7(fvec3) FMul 387 386 + Store 300(r00) 388 + 389: 120(ptr) AccessChain 108 129 + 390: 21(ivec3) Load 389 + 391: 28(bvec3) INotEqual 390 133 + 392: 7(fvec3) Select 391 138 137 + 393: 7(fvec3) Load 304(r01) + 394: 7(fvec3) FMul 393 392 + Store 304(r01) 394 + 395: 120(ptr) AccessChain 108 119 + 396: 21(ivec3) Load 395 + 397: 7(fvec3) ConvertUToF 396 + 398: 7(fvec3) Load 309(r02) + 399: 7(fvec3) FMul 398 397 + Store 309(r02) 399 + 400: 147(ptr) AccessChain 108 146 + 401: 35(fvec3) Load 400 + 402: 7(fvec3) FConvert 401 + 403: 7(fvec3) Load 313(r03) + 404: 7(fvec3) FMul 403 402 + Store 313(r03) 404 + 405: 120(ptr) AccessChain 108 129 + 406: 21(ivec3) Load 405 + 407: 28(bvec3) INotEqual 406 133 + 408: 14(ivec3) Select 407 168 167 + 409: 14(ivec3) Load 317(r10) + 410: 14(ivec3) IMul 409 408 + Store 317(r10) 410 + 411: 120(ptr) AccessChain 108 119 + 412: 21(ivec3) Load 411 + 413: 14(ivec3) Bitcast 412 + 414: 14(ivec3) Load 322(r11) + 415: 14(ivec3) IMul 414 413 + Store 322(r11) 415 + 416: 177(ptr) AccessChain 108 176 + 417: 7(fvec3) Load 416 + 418: 14(ivec3) ConvertFToS 417 + 419: 14(ivec3) Load 326(r12) + 420: 14(ivec3) IMul 419 418 + Store 326(r12) 420 + 421: 147(ptr) AccessChain 108 146 + 422: 35(fvec3) Load 421 + 423: 14(ivec3) ConvertFToS 422 + 424: 14(ivec3) Load 330(r13) + 425: 14(ivec3) IMul 424 423 + Store 330(r13) 425 + 426: 120(ptr) AccessChain 108 129 + 427: 21(ivec3) Load 426 + 428: 28(bvec3) INotEqual 427 133 + 429: 21(ivec3) Select 428 214 133 + 430: 21(ivec3) Load 334(r20) + 431: 21(ivec3) IMul 430 429 + Store 334(r20) 431 + 432: 110(ptr) AccessChain 108 109 + 433: 14(ivec3) Load 432 + 434: 21(ivec3) Bitcast 433 + 435: 21(ivec3) Load 339(r21) + 436: 21(ivec3) IMul 435 434 + Store 339(r21) 436 + 437: 177(ptr) AccessChain 108 176 + 438: 7(fvec3) Load 437 + 439: 21(ivec3) ConvertFToU 438 + 440: 21(ivec3) Load 343(r22) + 441: 21(ivec3) IMul 440 439 + Store 343(r22) 441 + 442: 147(ptr) AccessChain 108 146 + 443: 35(fvec3) Load 442 + 444: 21(ivec3) ConvertFToU 443 + 445: 21(ivec3) Load 347(r23) + 446: 21(ivec3) IMul 445 444 + Store 347(r23) 446 + 447: 110(ptr) AccessChain 108 109 + 448: 14(ivec3) Load 447 + 449: 35(fvec3) ConvertSToF 448 + 450: 35(fvec3) Load 367(r40) + 451: 35(fvec3) FMul 450 449 + Store 367(r40) 451 + 452: 120(ptr) AccessChain 108 119 + 453: 21(ivec3) Load 452 + 454: 35(fvec3) ConvertUToF 453 + 455: 35(fvec3) Load 371(r41) + 456: 35(fvec3) FMul 455 454 + Store 371(r41) 456 + 457: 177(ptr) AccessChain 108 176 + 458: 7(fvec3) Load 457 + 459: 35(fvec3) FConvert 458 + 460: 35(fvec3) Load 375(r42) + 461: 35(fvec3) FMul 460 459 + Store 375(r42) 461 + 462: 120(ptr) AccessChain 108 129 + 463: 21(ivec3) Load 462 + 464: 28(bvec3) INotEqual 463 133 + 465: 35(fvec3) Select 464 284 257 + 466: 35(fvec3) Load 379(r43) + 467: 35(fvec3) FMul 466 465 + Store 379(r43) 467 + 470: 469(ptr) AccessChain 108 468 + 471: 13(int) Load 470 + 472: 6(float) ConvertSToF 471 + 473: 7(fvec3) Load 300(r00) + 474: 7(fvec3) VectorTimesScalar 473 472 + Store 300(r00) 474 + 477: 476(ptr) AccessChain 108 475 + 478: 20(int) Load 477 + 479: 27(bool) INotEqual 478 132 + 480: 6(float) Select 479 136 135 + 481: 7(fvec3) Load 304(r01) + 482: 7(fvec3) VectorTimesScalar 481 480 + Store 304(r01) 482 + 484: 476(ptr) AccessChain 108 483 + 485: 20(int) Load 484 + 486: 6(float) ConvertUToF 485 + 487: 7(fvec3) Load 309(r02) + 488: 7(fvec3) VectorTimesScalar 487 486 + Store 309(r02) 488 + 491: 490(ptr) AccessChain 108 489 + 492: 34(float) Load 491 + 493: 6(float) FConvert 492 + 494: 7(fvec3) Load 313(r03) + 495: 7(fvec3) VectorTimesScalar 494 493 + Store 313(r03) 495 + 496: 476(ptr) AccessChain 108 475 + 497: 20(int) Load 496 + 498: 27(bool) INotEqual 497 132 + 499: 13(int) Select 498 129 109 + 500: 14(ivec3) Load 317(r10) + 501: 14(ivec3) CompositeConstruct 499 499 499 + 502: 14(ivec3) IMul 500 501 + Store 317(r10) 502 + 503: 476(ptr) AccessChain 108 483 + 504: 20(int) Load 503 + 505: 13(int) Bitcast 504 + 506: 14(ivec3) Load 322(r11) + 507: 14(ivec3) CompositeConstruct 505 505 505 + 508: 14(ivec3) IMul 506 507 + Store 322(r11) 508 + 511: 510(ptr) AccessChain 108 509 + 512: 6(float) Load 511 + 513: 13(int) ConvertFToS 512 + 514: 14(ivec3) Load 326(r12) + 515: 14(ivec3) CompositeConstruct 513 513 513 + 516: 14(ivec3) IMul 514 515 + Store 326(r12) 516 + 517: 490(ptr) AccessChain 108 489 + 518: 34(float) Load 517 + 519: 13(int) ConvertFToS 518 + 520: 14(ivec3) Load 330(r13) + 521: 14(ivec3) CompositeConstruct 519 519 519 + 522: 14(ivec3) IMul 520 521 + Store 330(r13) 522 + 523: 476(ptr) AccessChain 108 475 + 524: 20(int) Load 523 + 525: 27(bool) INotEqual 524 132 + 526: 20(int) Select 525 213 132 + 527: 21(ivec3) Load 334(r20) + 528: 21(ivec3) CompositeConstruct 526 526 526 + 529: 21(ivec3) IMul 527 528 + Store 334(r20) 529 + 530: 469(ptr) AccessChain 108 468 + 531: 13(int) Load 530 + 532: 20(int) Bitcast 531 + 533: 21(ivec3) Load 339(r21) + 534: 21(ivec3) CompositeConstruct 532 532 532 + 535: 21(ivec3) IMul 533 534 + Store 339(r21) 535 + 536: 510(ptr) AccessChain 108 509 + 537: 6(float) Load 536 + 538: 20(int) ConvertFToU 537 + 539: 21(ivec3) Load 343(r22) + 540: 21(ivec3) CompositeConstruct 538 538 538 + 541: 21(ivec3) IMul 539 540 + Store 343(r22) 541 + 542: 490(ptr) AccessChain 108 489 + 543: 34(float) Load 542 + 544: 20(int) ConvertFToU 543 + 545: 21(ivec3) Load 347(r23) + 546: 21(ivec3) CompositeConstruct 544 544 544 + 547: 21(ivec3) IMul 545 546 + Store 347(r23) 547 + 548: 469(ptr) AccessChain 108 468 + 549: 13(int) Load 548 + 550: 34(float) ConvertSToF 549 + 551: 35(fvec3) Load 367(r40) + 552: 35(fvec3) VectorTimesScalar 551 550 + Store 367(r40) 552 + 553: 476(ptr) AccessChain 108 483 + 554: 20(int) Load 553 + 555: 34(float) ConvertUToF 554 + 556: 35(fvec3) Load 371(r41) + 557: 35(fvec3) VectorTimesScalar 556 555 + Store 371(r41) 557 + 558: 510(ptr) AccessChain 108 509 + 559: 6(float) Load 558 + 560: 34(float) FConvert 559 + 561: 35(fvec3) Load 375(r42) + 562: 35(fvec3) VectorTimesScalar 561 560 + Store 375(r42) 562 + 563: 476(ptr) AccessChain 108 475 + 564: 20(int) Load 563 + 565: 27(bool) INotEqual 564 132 + 566: 34(float) Select 565 283 256 + 567: 35(fvec3) Load 379(r43) + 568: 35(fvec3) VectorTimesScalar 567 566 + Store 379(r43) 568 + Store 570(c1) 119 + Store 571(c2) 119 + 576: 13(int) Load 570(c1) + 577: 6(float) ConvertSToF 576 + 578: 13(int) Load 571(c2) + 579: 6(float) ConvertSToF 578 + 580: 572(fvec4) CompositeConstruct 575 575 577 579 + Store 574(outval) 580 + 584: 572(fvec4) Load 574(outval) + 585: 573(ptr) AccessChain 583(psout) 109 + Store 585 584 + 588: 573(ptr) AccessChain 583(psout) 109 + 589: 572(fvec4) Load 588 + Store 587(Color) 589 + 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 + 111: 110(ptr) AccessChain 108 109 + 112: 14(ivec3) Load 111 + 113: 7(fvec3) ConvertSToF 112 + Store 42(p) 113 + 114: 110(ptr) AccessChain 108 109 + 115: 14(ivec3) Load 114 + 116: 7(fvec3) ConvertSToF 115 + ReturnValue 116 + FunctionEnd +46(Fn_R_F3U(vf3;): 7(fvec3) Function None 41 + 45(p): 8(ptr) FunctionParameter + 47: Label + 121: 120(ptr) AccessChain 108 119 + 122: 21(ivec3) Load 121 + 123: 7(fvec3) ConvertUToF 122 + Store 45(p) 123 + 124: 120(ptr) AccessChain 108 119 + 125: 21(ivec3) Load 124 + 126: 7(fvec3) ConvertUToF 125 + ReturnValue 126 + FunctionEnd +49(Fn_R_F3B(vf3;): 7(fvec3) Function None 41 + 48(p): 8(ptr) FunctionParameter + 50: Label + 130: 120(ptr) AccessChain 108 129 + 131: 21(ivec3) Load 130 + 134: 28(bvec3) INotEqual 131 133 + 139: 7(fvec3) Select 134 138 137 + Store 48(p) 139 + 140: 120(ptr) AccessChain 108 129 + 141: 21(ivec3) Load 140 + 142: 28(bvec3) INotEqual 141 133 + 143: 7(fvec3) Select 142 138 137 + ReturnValue 143 + FunctionEnd +52(Fn_R_F3D(vf3;): 7(fvec3) Function None 41 + 51(p): 8(ptr) FunctionParameter + 53: Label + 148: 147(ptr) AccessChain 108 146 + 149: 35(fvec3) Load 148 + 150: 7(fvec3) FConvert 149 + Store 51(p) 150 + 151: 147(ptr) AccessChain 108 146 + 152: 35(fvec3) Load 151 + 153: 7(fvec3) FConvert 152 + ReturnValue 153 + FunctionEnd +56(Fn_R_I3U(vi3;): 14(ivec3) Function None 54 + 55(p): 15(ptr) FunctionParameter + 57: Label + 156: 120(ptr) AccessChain 108 119 + 157: 21(ivec3) Load 156 + 158: 14(ivec3) Bitcast 157 + Store 55(p) 158 + 159: 120(ptr) AccessChain 108 119 + 160: 21(ivec3) Load 159 + 161: 14(ivec3) Bitcast 160 + ReturnValue 161 + FunctionEnd +59(Fn_R_I3B(vi3;): 14(ivec3) Function None 54 + 58(p): 15(ptr) FunctionParameter + 60: Label + 164: 120(ptr) AccessChain 108 129 + 165: 21(ivec3) Load 164 + 166: 28(bvec3) INotEqual 165 133 + 169: 14(ivec3) Select 166 168 167 + Store 58(p) 169 + 170: 120(ptr) AccessChain 108 129 + 171: 21(ivec3) Load 170 + 172: 28(bvec3) INotEqual 171 133 + 173: 14(ivec3) Select 172 168 167 + ReturnValue 173 + FunctionEnd +62(Fn_R_I3F(vi3;): 14(ivec3) Function None 54 + 61(p): 15(ptr) FunctionParameter + 63: Label + 178: 177(ptr) AccessChain 108 176 + 179: 7(fvec3) Load 178 + 180: 14(ivec3) ConvertFToS 179 + Store 61(p) 180 + 181: 177(ptr) AccessChain 108 176 + 182: 7(fvec3) Load 181 + 183: 14(ivec3) ConvertFToS 182 + ReturnValue 183 + FunctionEnd +65(Fn_R_I3D(vi3;): 14(ivec3) Function None 54 + 64(p): 15(ptr) FunctionParameter + 66: Label + 186: 147(ptr) AccessChain 108 146 + 187: 35(fvec3) Load 186 + 188: 14(ivec3) ConvertFToS 187 + Store 64(p) 188 + 189: 147(ptr) AccessChain 108 146 + 190: 35(fvec3) Load 189 + 191: 14(ivec3) ConvertFToS 190 + ReturnValue 191 + FunctionEnd +69(Fn_R_U3I(vu3;): 21(ivec3) Function None 67 + 68(p): 22(ptr) FunctionParameter + 70: Label + 194: 110(ptr) AccessChain 108 109 + 195: 14(ivec3) Load 194 + 196: 21(ivec3) Bitcast 195 + Store 68(p) 196 + 197: 110(ptr) AccessChain 108 109 + 198: 14(ivec3) Load 197 + 199: 21(ivec3) Bitcast 198 + ReturnValue 199 + FunctionEnd +72(Fn_R_U3F(vu3;): 21(ivec3) Function None 67 + 71(p): 22(ptr) FunctionParameter + 73: Label + 202: 177(ptr) AccessChain 108 176 + 203: 7(fvec3) Load 202 + 204: 21(ivec3) ConvertFToU 203 + Store 71(p) 204 + 205: 177(ptr) AccessChain 108 176 + 206: 7(fvec3) Load 205 + 207: 21(ivec3) ConvertFToU 206 + ReturnValue 207 + FunctionEnd +75(Fn_R_U3B(vu3;): 21(ivec3) Function None 67 + 74(p): 22(ptr) FunctionParameter + 76: Label + 210: 120(ptr) AccessChain 108 129 + 211: 21(ivec3) Load 210 + 212: 28(bvec3) INotEqual 211 133 + 215: 21(ivec3) Select 212 214 133 + Store 74(p) 215 + 216: 120(ptr) AccessChain 108 129 + 217: 21(ivec3) Load 216 + 218: 28(bvec3) INotEqual 217 133 + 219: 21(ivec3) Select 218 214 133 + ReturnValue 219 + FunctionEnd +78(Fn_R_U3D(vu3;): 21(ivec3) Function None 67 + 77(p): 22(ptr) FunctionParameter + 79: Label + 222: 147(ptr) AccessChain 108 146 + 223: 35(fvec3) Load 222 + 224: 21(ivec3) ConvertFToU 223 + Store 77(p) 224 + 225: 147(ptr) AccessChain 108 146 + 226: 35(fvec3) Load 225 + 227: 21(ivec3) ConvertFToU 226 + ReturnValue 227 + FunctionEnd +82(Fn_R_B3I(vb3;): 28(bvec3) Function None 80 + 81(p): 29(ptr) FunctionParameter + 83: Label + 230: 110(ptr) AccessChain 108 109 + 231: 14(ivec3) Load 230 + 232: 28(bvec3) INotEqual 231 133 + Store 81(p) 232 + 233: 110(ptr) AccessChain 108 109 + 234: 14(ivec3) Load 233 + 235: 28(bvec3) INotEqual 234 133 + ReturnValue 235 + FunctionEnd +85(Fn_R_B3U(vb3;): 28(bvec3) Function None 80 + 84(p): 29(ptr) FunctionParameter + 86: Label + 238: 120(ptr) AccessChain 108 119 + 239: 21(ivec3) Load 238 + 240: 28(bvec3) INotEqual 239 133 + Store 84(p) 240 + 241: 120(ptr) AccessChain 108 119 + 242: 21(ivec3) Load 241 + 243: 28(bvec3) INotEqual 242 133 + ReturnValue 243 + FunctionEnd +88(Fn_R_B3F(vb3;): 28(bvec3) Function None 80 + 87(p): 29(ptr) FunctionParameter + 89: Label + 246: 177(ptr) AccessChain 108 176 + 247: 7(fvec3) Load 246 + 248: 28(bvec3) FOrdNotEqual 247 137 + Store 87(p) 248 + 249: 177(ptr) AccessChain 108 176 + 250: 7(fvec3) Load 249 + 251: 28(bvec3) FOrdNotEqual 250 137 + ReturnValue 251 + FunctionEnd +91(Fn_R_B3D(vb3;): 28(bvec3) Function None 80 + 90(p): 29(ptr) FunctionParameter + 92: Label + 254: 147(ptr) AccessChain 108 146 + 255: 35(fvec3) Load 254 + 258: 28(bvec3) FOrdNotEqual 255 257 + Store 90(p) 258 + 259: 147(ptr) AccessChain 108 146 + 260: 35(fvec3) Load 259 + 261: 28(bvec3) FOrdNotEqual 260 257 + ReturnValue 261 + FunctionEnd +95(Fn_R_D3I(vd3;): 35(fvec3) Function None 93 + 94(p): 36(ptr) FunctionParameter + 96: Label + 264: 110(ptr) AccessChain 108 109 + 265: 14(ivec3) Load 264 + 266: 35(fvec3) ConvertSToF 265 + Store 94(p) 266 + 267: 110(ptr) AccessChain 108 109 + 268: 14(ivec3) Load 267 + 269: 35(fvec3) ConvertSToF 268 + ReturnValue 269 + FunctionEnd +98(Fn_R_D3U(vd3;): 35(fvec3) Function None 93 + 97(p): 36(ptr) FunctionParameter + 99: Label + 272: 120(ptr) AccessChain 108 119 + 273: 21(ivec3) Load 272 + 274: 35(fvec3) ConvertUToF 273 + Store 97(p) 274 + 275: 120(ptr) AccessChain 108 119 + 276: 21(ivec3) Load 275 + 277: 35(fvec3) ConvertUToF 276 + ReturnValue 277 + FunctionEnd +101(Fn_R_D3B(vd3;): 35(fvec3) Function None 93 + 100(p): 36(ptr) FunctionParameter + 102: Label + 280: 120(ptr) AccessChain 108 129 + 281: 21(ivec3) Load 280 + 282: 28(bvec3) INotEqual 281 133 + 285: 35(fvec3) Select 282 284 257 + Store 100(p) 285 + 286: 120(ptr) AccessChain 108 129 + 287: 21(ivec3) Load 286 + 288: 28(bvec3) INotEqual 287 133 + 289: 35(fvec3) Select 288 284 257 + ReturnValue 289 + FunctionEnd +104(Fn_R_D3F(vd3;): 35(fvec3) Function None 93 + 103(p): 36(ptr) FunctionParameter + 105: Label + 292: 177(ptr) AccessChain 108 176 + 293: 7(fvec3) Load 292 + 294: 35(fvec3) FConvert 293 + Store 103(p) 294 + 295: 177(ptr) AccessChain 108 176 + 296: 7(fvec3) Load 295 + 297: 35(fvec3) FConvert 296 + ReturnValue 297 + FunctionEnd diff --git a/Test/baseResults/hlsl.reflection.binding.frag.out b/Test/baseResults/hlsl.reflection.binding.frag.out new file mode 100644 index 00000000..e26e0f6c --- /dev/null +++ b/Test/baseResults/hlsl.reflection.binding.frag.out @@ -0,0 +1,23 @@ +hlsl.reflection.binding.frag + +Linked fragment stage: + + +Uniform reflection: +t1: offset -1, type 8b5d, size 1, index -1, binding 15 +s1: offset -1, type 0, size 1, index -1, binding 5 +t1a: offset -1, type 8b5d, size 1, index -1, binding 16 +s1a: offset -1, type 0, size 1, index -1, binding 6 +c1_a: offset 0, type 8b52, size 1, index 0, binding -1 +c1_b: offset 16, type 1404, size 1, index 0, binding -1 +c1_c: offset 20, type 1406, size 1, index 0, binding -1 +c2_a: offset 0, type 8b52, size 1, index 1, binding -1 +c2_b: offset 16, type 1404, size 1, index 1, binding -1 +c2_c: offset 20, type 1406, size 1, index 1, binding -1 + +Uniform block reflection: +cbuff1: offset -1, type ffffffff, size 24, index -1, binding 2 +cbuff2: offset -1, type ffffffff, size 24, index -1, binding 3 + +Vertex attribute reflection: + diff --git a/Test/baseResults/hlsl.reflection.binding.vert.out b/Test/baseResults/hlsl.reflection.binding.vert.out new file mode 100644 index 00000000..f1368df9 --- /dev/null +++ b/Test/baseResults/hlsl.reflection.binding.vert.out @@ -0,0 +1,15 @@ +hlsl.reflection.binding.vert + +Linked vertex stage: + + +Uniform reflection: +t1: offset -1, type 8b5d, size 1, index -1, binding 15 +s1: offset -1, type 0, size 1, index -1, binding 5 +t1a: offset -1, type 8b5d, size 1, index -1, binding 16 +s1a: offset -1, type 0, size 1, index -1, binding 6 + +Uniform block reflection: + +Vertex attribute reflection: + diff --git a/Test/baseResults/hlsl.reflection.vert.out b/Test/baseResults/hlsl.reflection.vert.out new file mode 100644 index 00000000..cbce25ea --- /dev/null +++ b/Test/baseResults/hlsl.reflection.vert.out @@ -0,0 +1,88 @@ +hlsl.reflection.vert + +Linked vertex stage: + + +Uniform reflection: +anonMember3: offset 80, type 8b52, size 1, index 0, binding -1 +s.a: offset 0, type 1404, size 1, index 1, binding -1 +ablock.scalar: offset 12, type 1404, size 1, index 2, binding -1 +m23: offset 16, type 8b67, size 1, index 0, binding -1 +scalarAfterm23: offset 48, type 1404, size 1, index 0, binding -1 +c_m23: offset 16, type 8b67, size 1, index 3, binding -1 +c_scalarAfterm23: offset 48, type 1404, size 1, index 3, binding -1 +scalarBeforeArray: offset 96, type 1404, size 1, index 0, binding -1 +floatArray: offset 112, type 1406, size 5, index 0, binding -1 +scalarAfterArray: offset 192, type 1404, size 1, index 0, binding -1 +ablock.memfloat2: offset 48, type 8b50, size 1, index 2, binding -1 +ablock.memf1: offset 56, type 1406, size 1, index 2, binding -1 +ablock.memf2: offset 60, type 8b56, size 1, index 2, binding -1 +ablock.memf3: offset 64, type 1404, size 1, index 2, binding -1 +ablock.memfloat2a: offset 72, type 8b50, size 1, index 2, binding -1 +ablock.m22: offset 80, type 8b5a, size 7, index 2, binding -1 +dm22: offset 32, type 8b5a, size 4, index 1, binding -1 +m22: offset 208, type 8b5a, size 3, index 0, binding -1 +nest.foo.n1.a: offset 0, type 1406, size 1, index 4, binding -1 +nest.foo.n2.b: offset 16, type 1406, size 1, index 4, binding -1 +nest.foo.n2.c: offset 20, type 1406, size 1, index 4, binding -1 +nest.foo.n2.d: offset 24, type 1406, size 1, index 4, binding -1 +deepA.d2.d1[2].va: offset 376, type 8b50, size 2, index 1, binding -1 +deepB.d2.d1.va: offset 984, type 8b50, size 2, index 1, binding -1 +deepB.d2.d1[0].va: offset 984, type 8b50, size 2, index 1, binding -1 +deepB.d2.d1[1].va: offset 984, type 8b50, size 2, index 1, binding -1 +deepB.d2.d1[2].va: offset 984, type 8b50, size 2, index 1, binding -1 +deepB.d2.d1[3].va: offset 984, type 8b50, size 2, index 1, binding -1 +deepC.iv4: offset 1568, type 8b52, size 1, index 1, binding -1 +deepC.d2.i: offset 1568, type 1404, size 1, index 1, binding -1 +deepC.d2.d1[0].va: offset 1568, type 8b50, size 3, index 1, binding -1 +deepC.d2.d1[0].b: offset 1568, type 8b56, size 1, index 1, binding -1 +deepC.d2.d1[1].va: offset 1568, type 8b50, size 3, index 1, binding -1 +deepC.d2.d1[1].b: offset 1568, type 8b56, size 1, index 1, binding -1 +deepC.d2.d1[2].va: offset 1568, type 8b50, size 3, index 1, binding -1 +deepC.d2.d1[2].b: offset 1568, type 8b56, size 1, index 1, binding -1 +deepC.d2.d1[3].va: offset 1568, type 8b50, size 3, index 1, binding -1 +deepC.d2.d1[3].b: offset 1568, type 8b56, size 1, index 1, binding -1 +deepC.v3: offset 1568, type 8b54, size 1, index 1, binding -1 +deepD[0].iv4: offset 2480, type 8b52, size 1, index 1, binding -1 +deepD[0].d2.i: offset 2480, type 1404, size 1, index 1, binding -1 +deepD[0].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[0].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[0].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[0].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[0].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[0].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[0].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[0].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[0].v3: offset 2480, type 8b54, size 1, index 1, binding -1 +deepD[1].iv4: offset 2480, type 8b52, size 1, index 1, binding -1 +deepD[1].d2.i: offset 2480, type 1404, size 1, index 1, binding -1 +deepD[1].d2.d1[0].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[1].d2.d1[0].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[1].d2.d1[1].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[1].d2.d1[1].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[1].d2.d1[2].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[1].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[1].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1, binding -1 +deepD[1].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1, binding -1 +deepD[1].v3: offset 2480, type 8b54, size 1, index 1, binding -1 +arrBl.foo: offset 0, type 1406, size 1, index 5, binding -1 +arrBl2.foo: offset 0, type 1406, size 1, index 6, binding -1 +anonMember1: offset 0, type 8b51, size 1, index 0, binding -1 +uf1: offset 16, type 1406, size 1, index 1, binding -1 + +Uniform block reflection: +nameless: offset -1, type ffffffff, size 496, index -1, binding -1 +$Global: offset -1, type ffffffff, size 3088, index -1, binding -1 +ablock: offset -1, type ffffffff, size 304, index -1, binding -1 +c_nameless: offset -1, type ffffffff, size 96, index -1, binding -1 +nest: offset -1, type ffffffff, size 32, index -1, binding -1 +arrBl: offset -1, type ffffffff, size 4, index -1, binding -1 +arrBl2: offset -1, type ffffffff, size 4, index -1, binding -1 + +Vertex attribute reflection: +attributeFloat: offset 0, type 1406, size 0, index 0, binding -1 +attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1 +attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1 +attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1 +attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1 + diff --git a/Test/baseResults/hlsl.rw.atomics.frag.out b/Test/baseResults/hlsl.rw.atomics.frag.out new file mode 100644 index 00000000..22716ef1 --- /dev/null +++ b/Test/baseResults/hlsl.rw.atomics.frag.out @@ -0,0 +1,5261 @@ +hlsl.rw.atomics.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:45 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:45 Function Parameters: +0:? Sequence +0:50 imageAtomicAdd (temp int) +0:50 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:50 i1: direct index for structure (layout(offset=36 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:50 Constant: +0:50 5 (const uint) +0:50 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:50 Constant: +0:50 8 (const uint) +0:51 move second child to first child (temp int) +0:51 'out_i1' (temp int) +0:51 imageAtomicAdd (temp int) +0:51 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:51 i1: direct index for structure (layout(offset=36 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:51 Constant: +0:51 5 (const uint) +0:51 i1: direct index for structure (layout(offset=36 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:51 Constant: +0:51 5 (const uint) +0:52 imageAtomicAnd (temp int) +0:52 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:52 i1: direct index for structure (layout(offset=36 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:52 Constant: +0:52 5 (const uint) +0:52 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:52 Constant: +0:52 8 (const uint) +0:53 move second child to first child (temp int) +0:53 'out_i1' (temp int) +0:53 imageAtomicAnd (temp int) +0:53 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:53 i1: direct index for structure (layout(offset=36 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:53 Constant: +0:53 5 (const uint) +0:53 i1: direct index for structure (layout(offset=36 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:53 Constant: +0:53 5 (const uint) +0:54 move second child to first child (temp int) +0:54 'out_i1' (temp int) +0:54 imageAtomicCompSwap (temp int) +0:54 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:54 i1: direct index for structure (layout(offset=36 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 5 (const uint) +0:54 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 8 (const uint) +0:54 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 9 (const uint) +0:55 move second child to first child (temp int) +0:55 'out_i1' (temp int) +0:55 imageAtomicExchange (temp int) +0:55 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:55 i1: direct index for structure (layout(offset=36 ) uniform int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:55 Constant: +0:55 5 (const uint) +0:55 i1: direct index for structure (layout(offset=36 ) uniform int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:55 Constant: +0:55 5 (const uint) +0:56 imageAtomicMax (temp int) +0:56 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:56 i1: direct index for structure (layout(offset=36 ) uniform int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:56 Constant: +0:56 5 (const uint) +0:56 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:56 Constant: +0:56 8 (const uint) +0:57 move second child to first child (temp int) +0:57 'out_i1' (temp int) +0:57 imageAtomicMax (temp int) +0:57 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:57 i1: direct index for structure (layout(offset=36 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:57 Constant: +0:57 5 (const uint) +0:57 i1: direct index for structure (layout(offset=36 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:57 Constant: +0:57 5 (const uint) +0:58 imageAtomicMin (temp int) +0:58 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:58 i1: direct index for structure (layout(offset=36 ) uniform int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:58 Constant: +0:58 5 (const uint) +0:58 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:58 Constant: +0:58 8 (const uint) +0:59 move second child to first child (temp int) +0:59 'out_i1' (temp int) +0:59 imageAtomicMin (temp int) +0:59 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:59 i1: direct index for structure (layout(offset=36 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:59 Constant: +0:59 5 (const uint) +0:59 i1: direct index for structure (layout(offset=36 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:59 Constant: +0:59 5 (const uint) +0:60 imageAtomicOr (temp int) +0:60 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:60 i1: direct index for structure (layout(offset=36 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:60 Constant: +0:60 5 (const uint) +0:60 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:60 Constant: +0:60 8 (const uint) +0:61 move second child to first child (temp int) +0:61 'out_i1' (temp int) +0:61 imageAtomicOr (temp int) +0:61 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:61 i1: direct index for structure (layout(offset=36 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:61 Constant: +0:61 5 (const uint) +0:61 i1: direct index for structure (layout(offset=36 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:61 Constant: +0:61 5 (const uint) +0:62 imageAtomicXor (temp int) +0:62 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:62 i1: direct index for structure (layout(offset=36 ) uniform int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:62 Constant: +0:62 5 (const uint) +0:62 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:62 Constant: +0:62 8 (const uint) +0:63 move second child to first child (temp int) +0:63 'out_i1' (temp int) +0:63 imageAtomicXor (temp int) +0:63 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:63 i1: direct index for structure (layout(offset=36 ) uniform int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:63 Constant: +0:63 5 (const uint) +0:63 i1: direct index for structure (layout(offset=36 ) uniform int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:63 Constant: +0:63 5 (const uint) +0:66 imageAtomicAdd (temp uint) +0:66 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:66 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:66 Constant: +0:66 0 (const uint) +0:66 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:66 Constant: +0:66 0 (const uint) +0:67 move second child to first child (temp uint) +0:67 'out_u1' (temp uint) +0:67 imageAtomicAdd (temp uint) +0:67 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:67 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:67 Constant: +0:67 0 (const uint) +0:67 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:67 Constant: +0:67 0 (const uint) +0:68 imageAtomicAnd (temp uint) +0:68 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:68 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:68 Constant: +0:68 0 (const uint) +0:68 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:68 Constant: +0:68 0 (const uint) +0:69 move second child to first child (temp uint) +0:69 'out_u1' (temp uint) +0:69 imageAtomicAnd (temp uint) +0:69 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:69 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:69 Constant: +0:69 0 (const uint) +0:69 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:69 Constant: +0:69 0 (const uint) +0:70 move second child to first child (temp uint) +0:70 'out_u1' (temp uint) +0:70 imageAtomicCompSwap (temp uint) +0:70 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:70 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 0 (const uint) +0:70 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 3 (const uint) +0:70 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 4 (const uint) +0:71 move second child to first child (temp uint) +0:71 'out_u1' (temp uint) +0:71 imageAtomicExchange (temp uint) +0:71 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:71 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:71 Constant: +0:71 0 (const uint) +0:71 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:71 Constant: +0:71 0 (const uint) +0:72 imageAtomicMax (temp uint) +0:72 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:72 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:72 Constant: +0:72 0 (const uint) +0:72 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:72 Constant: +0:72 0 (const uint) +0:73 move second child to first child (temp uint) +0:73 'out_u1' (temp uint) +0:73 imageAtomicMax (temp uint) +0:73 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:73 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:73 Constant: +0:73 0 (const uint) +0:73 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:73 Constant: +0:73 0 (const uint) +0:74 imageAtomicMin (temp uint) +0:74 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:74 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:74 Constant: +0:74 0 (const uint) +0:74 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:74 Constant: +0:74 0 (const uint) +0:75 move second child to first child (temp uint) +0:75 'out_u1' (temp uint) +0:75 imageAtomicMin (temp uint) +0:75 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:75 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:75 Constant: +0:75 0 (const uint) +0:75 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:75 Constant: +0:75 0 (const uint) +0:76 imageAtomicOr (temp uint) +0:76 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:76 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:76 Constant: +0:76 0 (const uint) +0:76 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:76 Constant: +0:76 0 (const uint) +0:77 move second child to first child (temp uint) +0:77 'out_u1' (temp uint) +0:77 imageAtomicOr (temp uint) +0:77 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:77 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:77 Constant: +0:77 0 (const uint) +0:77 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:77 Constant: +0:77 0 (const uint) +0:78 imageAtomicXor (temp uint) +0:78 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:78 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:78 Constant: +0:78 0 (const uint) +0:78 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:78 Constant: +0:78 0 (const uint) +0:79 move second child to first child (temp uint) +0:79 'out_u1' (temp uint) +0:79 imageAtomicXor (temp uint) +0:79 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:79 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:79 Constant: +0:79 0 (const uint) +0:79 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:79 Constant: +0:79 0 (const uint) +0:82 imageAtomicAdd (temp int) +0:82 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:82 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:82 Constant: +0:82 6 (const uint) +0:82 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:82 Constant: +0:82 8 (const uint) +0:83 move second child to first child (temp int) +0:83 'out_i1' (temp int) +0:83 imageAtomicAdd (temp int) +0:83 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:83 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:83 Constant: +0:83 6 (const uint) +0:83 i1: direct index for structure (layout(offset=36 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:83 Constant: +0:83 5 (const uint) +0:84 imageAtomicAnd (temp int) +0:84 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:84 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:84 Constant: +0:84 6 (const uint) +0:84 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:84 Constant: +0:84 8 (const uint) +0:85 move second child to first child (temp int) +0:85 'out_i1' (temp int) +0:85 imageAtomicAnd (temp int) +0:85 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:85 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:85 Constant: +0:85 6 (const uint) +0:85 i1: direct index for structure (layout(offset=36 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:85 Constant: +0:85 5 (const uint) +0:86 move second child to first child (temp int) +0:86 'out_i1' (temp int) +0:86 imageAtomicCompSwap (temp int) +0:86 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:86 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 6 (const uint) +0:86 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 8 (const uint) +0:86 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 9 (const uint) +0:87 move second child to first child (temp int) +0:87 'out_i1' (temp int) +0:87 imageAtomicExchange (temp int) +0:87 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:87 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:87 Constant: +0:87 6 (const uint) +0:87 i1: direct index for structure (layout(offset=36 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:87 Constant: +0:87 5 (const uint) +0:88 imageAtomicMax (temp int) +0:88 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:88 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:88 Constant: +0:88 6 (const uint) +0:88 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:88 Constant: +0:88 8 (const uint) +0:89 move second child to first child (temp int) +0:89 'out_i1' (temp int) +0:89 imageAtomicMax (temp int) +0:89 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:89 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:89 Constant: +0:89 6 (const uint) +0:89 i1: direct index for structure (layout(offset=36 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:89 Constant: +0:89 5 (const uint) +0:90 imageAtomicMin (temp int) +0:90 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:90 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:90 Constant: +0:90 6 (const uint) +0:90 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:90 Constant: +0:90 8 (const uint) +0:91 move second child to first child (temp int) +0:91 'out_i1' (temp int) +0:91 imageAtomicMin (temp int) +0:91 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:91 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:91 Constant: +0:91 6 (const uint) +0:91 i1: direct index for structure (layout(offset=36 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:91 Constant: +0:91 5 (const uint) +0:92 imageAtomicOr (temp int) +0:92 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:92 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:92 Constant: +0:92 6 (const uint) +0:92 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:92 Constant: +0:92 8 (const uint) +0:93 move second child to first child (temp int) +0:93 'out_i1' (temp int) +0:93 imageAtomicOr (temp int) +0:93 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:93 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:93 Constant: +0:93 6 (const uint) +0:93 i1: direct index for structure (layout(offset=36 ) uniform int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:93 Constant: +0:93 5 (const uint) +0:94 imageAtomicXor (temp int) +0:94 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:94 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:94 Constant: +0:94 6 (const uint) +0:94 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:94 Constant: +0:94 8 (const uint) +0:95 move second child to first child (temp int) +0:95 'out_i1' (temp int) +0:95 imageAtomicXor (temp int) +0:95 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:95 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:95 Constant: +0:95 6 (const uint) +0:95 i1: direct index for structure (layout(offset=36 ) uniform int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:95 Constant: +0:95 5 (const uint) +0:98 imageAtomicAdd (temp uint) +0:98 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:98 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:98 Constant: +0:98 1 (const uint) +0:98 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:98 Constant: +0:98 0 (const uint) +0:99 move second child to first child (temp uint) +0:99 'out_u1' (temp uint) +0:99 imageAtomicAdd (temp uint) +0:99 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:99 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:99 Constant: +0:99 1 (const uint) +0:99 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:99 Constant: +0:99 0 (const uint) +0:100 imageAtomicAnd (temp uint) +0:100 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:100 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:100 Constant: +0:100 1 (const uint) +0:100 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:100 Constant: +0:100 0 (const uint) +0:101 move second child to first child (temp uint) +0:101 'out_u1' (temp uint) +0:101 imageAtomicAnd (temp uint) +0:101 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:101 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:101 Constant: +0:101 1 (const uint) +0:101 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:101 Constant: +0:101 0 (const uint) +0:102 move second child to first child (temp uint) +0:102 'out_u1' (temp uint) +0:102 imageAtomicCompSwap (temp uint) +0:102 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:102 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 1 (const uint) +0:102 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 3 (const uint) +0:102 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 4 (const uint) +0:103 move second child to first child (temp uint) +0:103 'out_u1' (temp uint) +0:103 imageAtomicExchange (temp uint) +0:103 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:103 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:103 Constant: +0:103 1 (const uint) +0:103 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:103 Constant: +0:103 0 (const uint) +0:104 imageAtomicMax (temp uint) +0:104 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:104 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:104 Constant: +0:104 1 (const uint) +0:104 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:104 Constant: +0:104 0 (const uint) +0:105 move second child to first child (temp uint) +0:105 'out_u1' (temp uint) +0:105 imageAtomicMax (temp uint) +0:105 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:105 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:105 Constant: +0:105 1 (const uint) +0:105 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:105 Constant: +0:105 0 (const uint) +0:106 imageAtomicMin (temp uint) +0:106 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:106 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:106 Constant: +0:106 1 (const uint) +0:106 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:106 Constant: +0:106 0 (const uint) +0:107 move second child to first child (temp uint) +0:107 'out_u1' (temp uint) +0:107 imageAtomicMin (temp uint) +0:107 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:107 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:107 Constant: +0:107 1 (const uint) +0:107 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:107 Constant: +0:107 0 (const uint) +0:108 imageAtomicOr (temp uint) +0:108 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:108 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:108 Constant: +0:108 1 (const uint) +0:108 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:108 Constant: +0:108 0 (const uint) +0:109 move second child to first child (temp uint) +0:109 'out_u1' (temp uint) +0:109 imageAtomicOr (temp uint) +0:109 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:109 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:109 Constant: +0:109 1 (const uint) +0:109 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:109 Constant: +0:109 0 (const uint) +0:110 imageAtomicXor (temp uint) +0:110 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:110 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:110 Constant: +0:110 1 (const uint) +0:110 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:110 Constant: +0:110 0 (const uint) +0:111 move second child to first child (temp uint) +0:111 'out_u1' (temp uint) +0:111 imageAtomicXor (temp uint) +0:111 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:111 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:111 Constant: +0:111 1 (const uint) +0:111 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:111 Constant: +0:111 0 (const uint) +0:114 imageAtomicAdd (temp int) +0:114 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:114 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:114 Constant: +0:114 7 (const uint) +0:114 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:114 Constant: +0:114 8 (const uint) +0:115 move second child to first child (temp int) +0:115 'out_i1' (temp int) +0:115 imageAtomicAdd (temp int) +0:115 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:115 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:115 Constant: +0:115 7 (const uint) +0:115 i1: direct index for structure (layout(offset=36 ) uniform int) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:115 Constant: +0:115 5 (const uint) +0:116 imageAtomicAnd (temp int) +0:116 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:116 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:116 Constant: +0:116 7 (const uint) +0:116 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:116 Constant: +0:116 8 (const uint) +0:117 move second child to first child (temp int) +0:117 'out_i1' (temp int) +0:117 imageAtomicAnd (temp int) +0:117 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:117 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:117 Constant: +0:117 7 (const uint) +0:117 i1: direct index for structure (layout(offset=36 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:117 Constant: +0:117 5 (const uint) +0:118 move second child to first child (temp int) +0:118 'out_i1' (temp int) +0:118 imageAtomicCompSwap (temp int) +0:118 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:118 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 7 (const uint) +0:118 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 8 (const uint) +0:118 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 9 (const uint) +0:119 move second child to first child (temp int) +0:119 'out_i1' (temp int) +0:119 imageAtomicExchange (temp int) +0:119 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:119 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:119 Constant: +0:119 7 (const uint) +0:119 i1: direct index for structure (layout(offset=36 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:119 Constant: +0:119 5 (const uint) +0:120 imageAtomicMax (temp int) +0:120 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:120 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:120 Constant: +0:120 7 (const uint) +0:120 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:120 Constant: +0:120 8 (const uint) +0:121 move second child to first child (temp int) +0:121 'out_i1' (temp int) +0:121 imageAtomicMax (temp int) +0:121 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:121 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:121 Constant: +0:121 7 (const uint) +0:121 i1: direct index for structure (layout(offset=36 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:121 Constant: +0:121 5 (const uint) +0:122 imageAtomicMin (temp int) +0:122 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:122 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:122 Constant: +0:122 7 (const uint) +0:122 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:122 Constant: +0:122 8 (const uint) +0:123 move second child to first child (temp int) +0:123 'out_i1' (temp int) +0:123 imageAtomicMin (temp int) +0:123 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:123 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:123 Constant: +0:123 7 (const uint) +0:123 i1: direct index for structure (layout(offset=36 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:123 Constant: +0:123 5 (const uint) +0:124 imageAtomicOr (temp int) +0:124 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:124 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:124 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:124 Constant: +0:124 7 (const uint) +0:124 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:124 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:124 Constant: +0:124 8 (const uint) +0:125 move second child to first child (temp int) +0:125 'out_i1' (temp int) +0:125 imageAtomicOr (temp int) +0:125 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:125 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:125 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:125 Constant: +0:125 7 (const uint) +0:125 i1: direct index for structure (layout(offset=36 ) uniform int) +0:125 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:125 Constant: +0:125 5 (const uint) +0:126 imageAtomicXor (temp int) +0:126 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:126 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:126 Constant: +0:126 7 (const uint) +0:126 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:126 Constant: +0:126 8 (const uint) +0:127 move second child to first child (temp int) +0:127 'out_i1' (temp int) +0:127 imageAtomicXor (temp int) +0:127 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:127 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:127 Constant: +0:127 7 (const uint) +0:127 i1: direct index for structure (layout(offset=36 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:127 Constant: +0:127 5 (const uint) +0:130 imageAtomicAdd (temp uint) +0:130 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:130 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:130 Constant: +0:130 2 (const uint) +0:130 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:130 Constant: +0:130 0 (const uint) +0:131 move second child to first child (temp uint) +0:131 'out_u1' (temp uint) +0:131 imageAtomicAdd (temp uint) +0:131 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:131 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:131 Constant: +0:131 2 (const uint) +0:131 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:131 Constant: +0:131 0 (const uint) +0:132 imageAtomicAnd (temp uint) +0:132 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:132 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:132 Constant: +0:132 2 (const uint) +0:132 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:132 Constant: +0:132 0 (const uint) +0:133 move second child to first child (temp uint) +0:133 'out_u1' (temp uint) +0:133 imageAtomicAnd (temp uint) +0:133 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:133 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:133 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:133 Constant: +0:133 2 (const uint) +0:133 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:133 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:133 Constant: +0:133 0 (const uint) +0:134 move second child to first child (temp uint) +0:134 'out_u1' (temp uint) +0:134 imageAtomicCompSwap (temp uint) +0:134 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:134 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 2 (const uint) +0:134 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 3 (const uint) +0:134 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 4 (const uint) +0:135 move second child to first child (temp uint) +0:135 'out_u1' (temp uint) +0:135 imageAtomicExchange (temp uint) +0:135 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:135 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:135 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:135 Constant: +0:135 2 (const uint) +0:135 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:135 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:135 Constant: +0:135 0 (const uint) +0:136 imageAtomicMax (temp uint) +0:136 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:136 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:136 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:136 Constant: +0:136 2 (const uint) +0:136 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:136 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:136 Constant: +0:136 0 (const uint) +0:137 move second child to first child (temp uint) +0:137 'out_u1' (temp uint) +0:137 imageAtomicMax (temp uint) +0:137 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:137 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:137 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:137 Constant: +0:137 2 (const uint) +0:137 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:137 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:137 Constant: +0:137 0 (const uint) +0:138 imageAtomicMin (temp uint) +0:138 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:138 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:138 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:138 Constant: +0:138 2 (const uint) +0:138 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:138 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:138 Constant: +0:138 0 (const uint) +0:139 move second child to first child (temp uint) +0:139 'out_u1' (temp uint) +0:139 imageAtomicMin (temp uint) +0:139 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:139 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:139 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:139 Constant: +0:139 2 (const uint) +0:139 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:139 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:139 Constant: +0:139 0 (const uint) +0:140 imageAtomicOr (temp uint) +0:140 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:140 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:140 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:140 Constant: +0:140 2 (const uint) +0:140 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:140 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:140 Constant: +0:140 0 (const uint) +0:141 move second child to first child (temp uint) +0:141 'out_u1' (temp uint) +0:141 imageAtomicOr (temp uint) +0:141 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:141 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:141 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:141 Constant: +0:141 2 (const uint) +0:141 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:141 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:141 Constant: +0:141 0 (const uint) +0:142 imageAtomicXor (temp uint) +0:142 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:142 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:142 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:142 Constant: +0:142 2 (const uint) +0:142 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:142 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:142 Constant: +0:142 0 (const uint) +0:143 move second child to first child (temp uint) +0:143 'out_u1' (temp uint) +0:143 imageAtomicXor (temp uint) +0:143 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:143 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:143 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:143 Constant: +0:143 2 (const uint) +0:143 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:143 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:143 Constant: +0:143 0 (const uint) +0:146 imageAtomicAdd (temp int) +0:146 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:146 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:146 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:146 Constant: +0:146 6 (const uint) +0:146 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:146 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:146 Constant: +0:146 8 (const uint) +0:147 move second child to first child (temp int) +0:147 'out_i1' (temp int) +0:147 imageAtomicAdd (temp int) +0:147 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:147 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:147 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:147 Constant: +0:147 6 (const uint) +0:147 i1: direct index for structure (layout(offset=36 ) uniform int) +0:147 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:147 Constant: +0:147 5 (const uint) +0:148 imageAtomicAnd (temp int) +0:148 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:148 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:148 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:148 Constant: +0:148 6 (const uint) +0:148 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:148 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:148 Constant: +0:148 8 (const uint) +0:149 move second child to first child (temp int) +0:149 'out_i1' (temp int) +0:149 imageAtomicAnd (temp int) +0:149 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:149 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:149 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:149 Constant: +0:149 6 (const uint) +0:149 i1: direct index for structure (layout(offset=36 ) uniform int) +0:149 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:149 Constant: +0:149 5 (const uint) +0:150 move second child to first child (temp int) +0:150 'out_i1' (temp int) +0:150 imageAtomicCompSwap (temp int) +0:150 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:150 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 6 (const uint) +0:150 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 8 (const uint) +0:150 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 9 (const uint) +0:151 move second child to first child (temp int) +0:151 'out_i1' (temp int) +0:151 imageAtomicExchange (temp int) +0:151 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:151 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:151 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:151 Constant: +0:151 6 (const uint) +0:151 i1: direct index for structure (layout(offset=36 ) uniform int) +0:151 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:151 Constant: +0:151 5 (const uint) +0:152 imageAtomicMax (temp int) +0:152 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:152 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:152 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:152 Constant: +0:152 6 (const uint) +0:152 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:152 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:152 Constant: +0:152 8 (const uint) +0:153 move second child to first child (temp int) +0:153 'out_i1' (temp int) +0:153 imageAtomicMax (temp int) +0:153 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:153 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:153 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:153 Constant: +0:153 6 (const uint) +0:153 i1: direct index for structure (layout(offset=36 ) uniform int) +0:153 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:153 Constant: +0:153 5 (const uint) +0:154 imageAtomicMin (temp int) +0:154 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:154 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:154 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:154 Constant: +0:154 6 (const uint) +0:154 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:154 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:154 Constant: +0:154 8 (const uint) +0:155 move second child to first child (temp int) +0:155 'out_i1' (temp int) +0:155 imageAtomicMin (temp int) +0:155 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:155 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:155 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:155 Constant: +0:155 6 (const uint) +0:155 i1: direct index for structure (layout(offset=36 ) uniform int) +0:155 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:155 Constant: +0:155 5 (const uint) +0:156 imageAtomicOr (temp int) +0:156 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:156 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:156 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:156 Constant: +0:156 6 (const uint) +0:156 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:156 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:156 Constant: +0:156 8 (const uint) +0:157 move second child to first child (temp int) +0:157 'out_i1' (temp int) +0:157 imageAtomicOr (temp int) +0:157 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:157 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:157 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:157 Constant: +0:157 6 (const uint) +0:157 i1: direct index for structure (layout(offset=36 ) uniform int) +0:157 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:157 Constant: +0:157 5 (const uint) +0:158 imageAtomicXor (temp int) +0:158 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:158 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:158 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:158 Constant: +0:158 6 (const uint) +0:158 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:158 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:158 Constant: +0:158 8 (const uint) +0:159 move second child to first child (temp int) +0:159 'out_i1' (temp int) +0:159 imageAtomicXor (temp int) +0:159 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:159 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:159 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:159 Constant: +0:159 6 (const uint) +0:159 i1: direct index for structure (layout(offset=36 ) uniform int) +0:159 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:159 Constant: +0:159 5 (const uint) +0:162 imageAtomicAdd (temp uint) +0:162 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:162 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:162 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:162 Constant: +0:162 1 (const uint) +0:162 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:162 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:162 Constant: +0:162 0 (const uint) +0:163 move second child to first child (temp uint) +0:163 'out_u1' (temp uint) +0:163 imageAtomicAdd (temp uint) +0:163 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:163 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:163 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:163 Constant: +0:163 1 (const uint) +0:163 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:163 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:163 Constant: +0:163 0 (const uint) +0:164 imageAtomicAnd (temp uint) +0:164 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:164 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:164 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:164 Constant: +0:164 1 (const uint) +0:164 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:164 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:164 Constant: +0:164 0 (const uint) +0:165 move second child to first child (temp uint) +0:165 'out_u1' (temp uint) +0:165 imageAtomicAnd (temp uint) +0:165 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:165 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:165 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:165 Constant: +0:165 1 (const uint) +0:165 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:165 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:165 Constant: +0:165 0 (const uint) +0:166 move second child to first child (temp uint) +0:166 'out_u1' (temp uint) +0:166 imageAtomicCompSwap (temp uint) +0:166 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:166 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 1 (const uint) +0:166 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 3 (const uint) +0:166 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 4 (const uint) +0:167 move second child to first child (temp uint) +0:167 'out_u1' (temp uint) +0:167 imageAtomicExchange (temp uint) +0:167 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:167 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:167 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:167 Constant: +0:167 1 (const uint) +0:167 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:167 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:167 Constant: +0:167 0 (const uint) +0:168 imageAtomicMax (temp uint) +0:168 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:168 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:168 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:168 Constant: +0:168 1 (const uint) +0:168 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:168 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:168 Constant: +0:168 0 (const uint) +0:169 move second child to first child (temp uint) +0:169 'out_u1' (temp uint) +0:169 imageAtomicMax (temp uint) +0:169 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:169 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:169 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:169 Constant: +0:169 1 (const uint) +0:169 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:169 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:169 Constant: +0:169 0 (const uint) +0:170 imageAtomicMin (temp uint) +0:170 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:170 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:170 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:170 Constant: +0:170 1 (const uint) +0:170 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:170 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:170 Constant: +0:170 0 (const uint) +0:171 move second child to first child (temp uint) +0:171 'out_u1' (temp uint) +0:171 imageAtomicMin (temp uint) +0:171 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:171 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:171 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:171 Constant: +0:171 1 (const uint) +0:171 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:171 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:171 Constant: +0:171 0 (const uint) +0:172 imageAtomicOr (temp uint) +0:172 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:172 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:172 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:172 Constant: +0:172 1 (const uint) +0:172 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:172 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:172 Constant: +0:172 0 (const uint) +0:173 move second child to first child (temp uint) +0:173 'out_u1' (temp uint) +0:173 imageAtomicOr (temp uint) +0:173 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:173 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:173 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:173 Constant: +0:173 1 (const uint) +0:173 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:173 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:173 Constant: +0:173 0 (const uint) +0:174 imageAtomicXor (temp uint) +0:174 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:174 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:174 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:174 Constant: +0:174 1 (const uint) +0:174 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:174 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:174 Constant: +0:174 0 (const uint) +0:175 move second child to first child (temp uint) +0:175 'out_u1' (temp uint) +0:175 imageAtomicXor (temp uint) +0:175 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:175 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:175 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:175 Constant: +0:175 1 (const uint) +0:175 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:175 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:175 Constant: +0:175 0 (const uint) +0:178 imageAtomicAdd (temp int) +0:178 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:178 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:178 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:178 Constant: +0:178 6 (const uint) +0:178 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:178 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:178 Constant: +0:178 8 (const uint) +0:179 move second child to first child (temp int) +0:179 'out_i1' (temp int) +0:179 imageAtomicAdd (temp int) +0:179 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:179 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:179 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:179 Constant: +0:179 6 (const uint) +0:179 i1: direct index for structure (layout(offset=36 ) uniform int) +0:179 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:179 Constant: +0:179 5 (const uint) +0:180 imageAtomicAnd (temp int) +0:180 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:180 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:180 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:180 Constant: +0:180 6 (const uint) +0:180 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:180 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:180 Constant: +0:180 8 (const uint) +0:181 move second child to first child (temp int) +0:181 'out_i1' (temp int) +0:181 imageAtomicAnd (temp int) +0:181 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:181 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:181 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:181 Constant: +0:181 6 (const uint) +0:181 i1: direct index for structure (layout(offset=36 ) uniform int) +0:181 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:181 Constant: +0:181 5 (const uint) +0:182 move second child to first child (temp int) +0:182 'out_i1' (temp int) +0:182 imageAtomicCompSwap (temp int) +0:182 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:182 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 6 (const uint) +0:182 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 8 (const uint) +0:182 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 9 (const uint) +0:183 move second child to first child (temp int) +0:183 'out_i1' (temp int) +0:183 imageAtomicExchange (temp int) +0:183 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:183 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:183 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:183 Constant: +0:183 6 (const uint) +0:183 i1: direct index for structure (layout(offset=36 ) uniform int) +0:183 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:183 Constant: +0:183 5 (const uint) +0:184 imageAtomicMax (temp int) +0:184 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:184 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:184 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:184 Constant: +0:184 6 (const uint) +0:184 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:184 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:184 Constant: +0:184 8 (const uint) +0:185 move second child to first child (temp int) +0:185 'out_i1' (temp int) +0:185 imageAtomicMax (temp int) +0:185 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:185 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:185 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:185 Constant: +0:185 6 (const uint) +0:185 i1: direct index for structure (layout(offset=36 ) uniform int) +0:185 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:185 Constant: +0:185 5 (const uint) +0:186 imageAtomicMin (temp int) +0:186 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:186 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:186 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:186 Constant: +0:186 6 (const uint) +0:186 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:186 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:186 Constant: +0:186 8 (const uint) +0:187 move second child to first child (temp int) +0:187 'out_i1' (temp int) +0:187 imageAtomicMin (temp int) +0:187 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:187 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:187 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:187 Constant: +0:187 6 (const uint) +0:187 i1: direct index for structure (layout(offset=36 ) uniform int) +0:187 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:187 Constant: +0:187 5 (const uint) +0:188 imageAtomicOr (temp int) +0:188 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:188 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:188 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:188 Constant: +0:188 6 (const uint) +0:188 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:188 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:188 Constant: +0:188 8 (const uint) +0:189 move second child to first child (temp int) +0:189 'out_i1' (temp int) +0:189 imageAtomicOr (temp int) +0:189 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:189 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:189 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:189 Constant: +0:189 6 (const uint) +0:189 i1: direct index for structure (layout(offset=36 ) uniform int) +0:189 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:189 Constant: +0:189 5 (const uint) +0:190 imageAtomicXor (temp int) +0:190 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:190 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:190 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:190 Constant: +0:190 6 (const uint) +0:190 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:190 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:190 Constant: +0:190 8 (const uint) +0:191 move second child to first child (temp int) +0:191 'out_i1' (temp int) +0:191 imageAtomicXor (temp int) +0:191 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:191 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:191 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:191 Constant: +0:191 6 (const uint) +0:191 i1: direct index for structure (layout(offset=36 ) uniform int) +0:191 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:191 Constant: +0:191 5 (const uint) +0:194 imageAtomicAdd (temp uint) +0:194 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:194 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:194 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:194 Constant: +0:194 1 (const uint) +0:194 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:194 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:194 Constant: +0:194 0 (const uint) +0:195 move second child to first child (temp uint) +0:195 'out_u1' (temp uint) +0:195 imageAtomicAdd (temp uint) +0:195 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:195 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:195 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:195 Constant: +0:195 1 (const uint) +0:195 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:195 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:195 Constant: +0:195 0 (const uint) +0:196 imageAtomicAnd (temp uint) +0:196 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:196 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:196 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:196 Constant: +0:196 1 (const uint) +0:196 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:196 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:196 Constant: +0:196 0 (const uint) +0:197 move second child to first child (temp uint) +0:197 'out_u1' (temp uint) +0:197 imageAtomicAnd (temp uint) +0:197 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:197 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:197 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:197 Constant: +0:197 1 (const uint) +0:197 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:197 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:197 Constant: +0:197 0 (const uint) +0:198 move second child to first child (temp uint) +0:198 'out_u1' (temp uint) +0:198 imageAtomicCompSwap (temp uint) +0:198 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:198 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 1 (const uint) +0:198 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 3 (const uint) +0:198 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 4 (const uint) +0:199 move second child to first child (temp uint) +0:199 'out_u1' (temp uint) +0:199 imageAtomicExchange (temp uint) +0:199 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:199 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:199 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:199 Constant: +0:199 1 (const uint) +0:199 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:199 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:199 Constant: +0:199 0 (const uint) +0:200 imageAtomicMax (temp uint) +0:200 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:200 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:200 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:200 Constant: +0:200 1 (const uint) +0:200 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:200 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:200 Constant: +0:200 0 (const uint) +0:201 move second child to first child (temp uint) +0:201 'out_u1' (temp uint) +0:201 imageAtomicMax (temp uint) +0:201 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:201 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:201 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:201 Constant: +0:201 1 (const uint) +0:201 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:201 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:201 Constant: +0:201 0 (const uint) +0:202 imageAtomicMin (temp uint) +0:202 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:202 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:202 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:202 Constant: +0:202 1 (const uint) +0:202 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:202 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:202 Constant: +0:202 0 (const uint) +0:203 move second child to first child (temp uint) +0:203 'out_u1' (temp uint) +0:203 imageAtomicMin (temp uint) +0:203 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:203 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:203 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:203 Constant: +0:203 1 (const uint) +0:203 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:203 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:203 Constant: +0:203 0 (const uint) +0:204 imageAtomicOr (temp uint) +0:204 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:204 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:204 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:204 Constant: +0:204 1 (const uint) +0:204 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:204 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:204 Constant: +0:204 0 (const uint) +0:205 move second child to first child (temp uint) +0:205 'out_u1' (temp uint) +0:205 imageAtomicOr (temp uint) +0:205 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:205 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:205 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:205 Constant: +0:205 1 (const uint) +0:205 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:205 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:205 Constant: +0:205 0 (const uint) +0:206 imageAtomicXor (temp uint) +0:206 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:206 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:206 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:206 Constant: +0:206 1 (const uint) +0:206 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:206 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:206 Constant: +0:206 0 (const uint) +0:207 move second child to first child (temp uint) +0:207 'out_u1' (temp uint) +0:207 imageAtomicXor (temp uint) +0:207 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:207 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:207 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:207 Constant: +0:207 1 (const uint) +0:207 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:207 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:207 Constant: +0:207 0 (const uint) +0:210 imageAtomicAdd (temp int) +0:210 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:210 i1: direct index for structure (layout(offset=36 ) uniform int) +0:210 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:210 Constant: +0:210 5 (const uint) +0:210 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:210 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:210 Constant: +0:210 8 (const uint) +0:211 move second child to first child (temp int) +0:211 'out_i1' (temp int) +0:211 imageAtomicAdd (temp int) +0:211 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:211 i1: direct index for structure (layout(offset=36 ) uniform int) +0:211 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:211 Constant: +0:211 5 (const uint) +0:211 i1: direct index for structure (layout(offset=36 ) uniform int) +0:211 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:211 Constant: +0:211 5 (const uint) +0:212 imageAtomicAnd (temp int) +0:212 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:212 i1: direct index for structure (layout(offset=36 ) uniform int) +0:212 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:212 Constant: +0:212 5 (const uint) +0:212 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:212 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:212 Constant: +0:212 8 (const uint) +0:213 move second child to first child (temp int) +0:213 'out_i1' (temp int) +0:213 imageAtomicAnd (temp int) +0:213 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:213 i1: direct index for structure (layout(offset=36 ) uniform int) +0:213 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:213 Constant: +0:213 5 (const uint) +0:213 i1: direct index for structure (layout(offset=36 ) uniform int) +0:213 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:213 Constant: +0:213 5 (const uint) +0:214 move second child to first child (temp int) +0:214 'out_i1' (temp int) +0:214 imageAtomicCompSwap (temp int) +0:214 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:214 i1: direct index for structure (layout(offset=36 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 5 (const uint) +0:214 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 8 (const uint) +0:214 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 9 (const uint) +0:215 move second child to first child (temp int) +0:215 'out_i1' (temp int) +0:215 imageAtomicExchange (temp int) +0:215 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:215 i1: direct index for structure (layout(offset=36 ) uniform int) +0:215 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:215 Constant: +0:215 5 (const uint) +0:215 i1: direct index for structure (layout(offset=36 ) uniform int) +0:215 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:215 Constant: +0:215 5 (const uint) +0:216 imageAtomicMax (temp int) +0:216 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:216 i1: direct index for structure (layout(offset=36 ) uniform int) +0:216 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:216 Constant: +0:216 5 (const uint) +0:216 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:216 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:216 Constant: +0:216 8 (const uint) +0:217 move second child to first child (temp int) +0:217 'out_i1' (temp int) +0:217 imageAtomicMax (temp int) +0:217 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:217 i1: direct index for structure (layout(offset=36 ) uniform int) +0:217 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:217 Constant: +0:217 5 (const uint) +0:217 i1: direct index for structure (layout(offset=36 ) uniform int) +0:217 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:217 Constant: +0:217 5 (const uint) +0:218 imageAtomicMin (temp int) +0:218 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:218 i1: direct index for structure (layout(offset=36 ) uniform int) +0:218 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:218 Constant: +0:218 5 (const uint) +0:218 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:218 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:218 Constant: +0:218 8 (const uint) +0:219 move second child to first child (temp int) +0:219 'out_i1' (temp int) +0:219 imageAtomicMin (temp int) +0:219 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:219 i1: direct index for structure (layout(offset=36 ) uniform int) +0:219 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:219 Constant: +0:219 5 (const uint) +0:219 i1: direct index for structure (layout(offset=36 ) uniform int) +0:219 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:219 Constant: +0:219 5 (const uint) +0:220 imageAtomicOr (temp int) +0:220 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:220 i1: direct index for structure (layout(offset=36 ) uniform int) +0:220 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:220 Constant: +0:220 5 (const uint) +0:220 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:220 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:220 Constant: +0:220 8 (const uint) +0:221 move second child to first child (temp int) +0:221 'out_i1' (temp int) +0:221 imageAtomicOr (temp int) +0:221 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:221 i1: direct index for structure (layout(offset=36 ) uniform int) +0:221 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:221 Constant: +0:221 5 (const uint) +0:221 i1: direct index for structure (layout(offset=36 ) uniform int) +0:221 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:221 Constant: +0:221 5 (const uint) +0:222 imageAtomicXor (temp int) +0:222 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:222 i1: direct index for structure (layout(offset=36 ) uniform int) +0:222 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:222 Constant: +0:222 5 (const uint) +0:222 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:222 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:222 Constant: +0:222 8 (const uint) +0:223 move second child to first child (temp int) +0:223 'out_i1' (temp int) +0:223 imageAtomicXor (temp int) +0:223 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:223 i1: direct index for structure (layout(offset=36 ) uniform int) +0:223 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:223 Constant: +0:223 5 (const uint) +0:223 i1: direct index for structure (layout(offset=36 ) uniform int) +0:223 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:223 Constant: +0:223 5 (const uint) +0:226 imageAtomicAdd (temp uint) +0:226 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:226 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:226 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:226 Constant: +0:226 0 (const uint) +0:226 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:226 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:226 Constant: +0:226 0 (const uint) +0:227 move second child to first child (temp uint) +0:227 'out_u1' (temp uint) +0:227 imageAtomicAdd (temp uint) +0:227 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:227 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:227 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:227 Constant: +0:227 0 (const uint) +0:227 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:227 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:227 Constant: +0:227 0 (const uint) +0:228 imageAtomicAnd (temp uint) +0:228 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:228 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:228 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:228 Constant: +0:228 0 (const uint) +0:228 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:228 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:228 Constant: +0:228 0 (const uint) +0:229 move second child to first child (temp uint) +0:229 'out_u1' (temp uint) +0:229 imageAtomicAnd (temp uint) +0:229 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:229 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:229 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:229 Constant: +0:229 0 (const uint) +0:229 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:229 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:229 Constant: +0:229 0 (const uint) +0:230 move second child to first child (temp uint) +0:230 'out_u1' (temp uint) +0:230 imageAtomicCompSwap (temp uint) +0:230 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:230 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 0 (const uint) +0:230 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 3 (const uint) +0:230 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 4 (const uint) +0:231 move second child to first child (temp uint) +0:231 'out_u1' (temp uint) +0:231 imageAtomicExchange (temp uint) +0:231 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:231 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:231 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:231 Constant: +0:231 0 (const uint) +0:231 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:231 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:231 Constant: +0:231 0 (const uint) +0:232 imageAtomicMax (temp uint) +0:232 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:232 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:232 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:232 Constant: +0:232 0 (const uint) +0:232 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:232 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:232 Constant: +0:232 0 (const uint) +0:233 move second child to first child (temp uint) +0:233 'out_u1' (temp uint) +0:233 imageAtomicMax (temp uint) +0:233 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:233 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:233 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:233 Constant: +0:233 0 (const uint) +0:233 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:233 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:233 Constant: +0:233 0 (const uint) +0:234 imageAtomicMin (temp uint) +0:234 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:234 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:234 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:234 Constant: +0:234 0 (const uint) +0:234 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:234 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:234 Constant: +0:234 0 (const uint) +0:235 move second child to first child (temp uint) +0:235 'out_u1' (temp uint) +0:235 imageAtomicMin (temp uint) +0:235 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:235 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:235 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:235 Constant: +0:235 0 (const uint) +0:235 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:235 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:235 Constant: +0:235 0 (const uint) +0:236 imageAtomicOr (temp uint) +0:236 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:236 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:236 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:236 Constant: +0:236 0 (const uint) +0:236 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:236 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:236 Constant: +0:236 0 (const uint) +0:237 move second child to first child (temp uint) +0:237 'out_u1' (temp uint) +0:237 imageAtomicOr (temp uint) +0:237 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:237 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:237 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:237 Constant: +0:237 0 (const uint) +0:237 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:237 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:237 Constant: +0:237 0 (const uint) +0:238 imageAtomicXor (temp uint) +0:238 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:238 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:238 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:238 Constant: +0:238 0 (const uint) +0:238 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:238 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:238 Constant: +0:238 0 (const uint) +0:239 move second child to first child (temp uint) +0:239 'out_u1' (temp uint) +0:239 imageAtomicXor (temp uint) +0:239 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:239 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:239 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:239 Constant: +0:239 0 (const uint) +0:239 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:239 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:239 Constant: +0:239 0 (const uint) +0:242 move second child to first child (temp 4-component vector of float) +0:242 Color: direct index for structure (temp 4-component vector of float) +0:242 'psout' (temp structure{temp 4-component vector of float Color}) +0:242 Constant: +0:242 0 (const int) +0:242 Constant: +0:242 1.000000 +0:242 1.000000 +0:242 1.000000 +0:242 1.000000 +0:243 Sequence +0:243 Sequence +0:243 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:243 Color: direct index for structure (temp 4-component vector of float) +0:243 'psout' (temp structure{temp 4-component vector of float Color}) +0:243 Constant: +0:243 0 (const int) +0:243 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (uniform sampler) +0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:? 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:? 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:? 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:? 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:? 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:? 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:? 'g_tTex1df1a' (layout(r32f ) uniform image1DArray) +0:? 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:? 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:? 'g_tTex2df1a' (layout(r32f ) uniform image2DArray) +0:? 'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray) +0:? 'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray) +0:? 'g_tBuffF' (layout(r32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:45 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:45 Function Parameters: +0:? Sequence +0:50 imageAtomicAdd (temp int) +0:50 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:50 i1: direct index for structure (layout(offset=36 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:50 Constant: +0:50 5 (const uint) +0:50 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:50 Constant: +0:50 8 (const uint) +0:51 move second child to first child (temp int) +0:51 'out_i1' (temp int) +0:51 imageAtomicAdd (temp int) +0:51 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:51 i1: direct index for structure (layout(offset=36 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:51 Constant: +0:51 5 (const uint) +0:51 i1: direct index for structure (layout(offset=36 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:51 Constant: +0:51 5 (const uint) +0:52 imageAtomicAnd (temp int) +0:52 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:52 i1: direct index for structure (layout(offset=36 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:52 Constant: +0:52 5 (const uint) +0:52 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:52 Constant: +0:52 8 (const uint) +0:53 move second child to first child (temp int) +0:53 'out_i1' (temp int) +0:53 imageAtomicAnd (temp int) +0:53 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:53 i1: direct index for structure (layout(offset=36 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:53 Constant: +0:53 5 (const uint) +0:53 i1: direct index for structure (layout(offset=36 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:53 Constant: +0:53 5 (const uint) +0:54 move second child to first child (temp int) +0:54 'out_i1' (temp int) +0:54 imageAtomicCompSwap (temp int) +0:54 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:54 i1: direct index for structure (layout(offset=36 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 5 (const uint) +0:54 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 8 (const uint) +0:54 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:54 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:54 Constant: +0:54 9 (const uint) +0:55 move second child to first child (temp int) +0:55 'out_i1' (temp int) +0:55 imageAtomicExchange (temp int) +0:55 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:55 i1: direct index for structure (layout(offset=36 ) uniform int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:55 Constant: +0:55 5 (const uint) +0:55 i1: direct index for structure (layout(offset=36 ) uniform int) +0:55 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:55 Constant: +0:55 5 (const uint) +0:56 imageAtomicMax (temp int) +0:56 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:56 i1: direct index for structure (layout(offset=36 ) uniform int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:56 Constant: +0:56 5 (const uint) +0:56 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:56 Constant: +0:56 8 (const uint) +0:57 move second child to first child (temp int) +0:57 'out_i1' (temp int) +0:57 imageAtomicMax (temp int) +0:57 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:57 i1: direct index for structure (layout(offset=36 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:57 Constant: +0:57 5 (const uint) +0:57 i1: direct index for structure (layout(offset=36 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:57 Constant: +0:57 5 (const uint) +0:58 imageAtomicMin (temp int) +0:58 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:58 i1: direct index for structure (layout(offset=36 ) uniform int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:58 Constant: +0:58 5 (const uint) +0:58 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:58 Constant: +0:58 8 (const uint) +0:59 move second child to first child (temp int) +0:59 'out_i1' (temp int) +0:59 imageAtomicMin (temp int) +0:59 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:59 i1: direct index for structure (layout(offset=36 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:59 Constant: +0:59 5 (const uint) +0:59 i1: direct index for structure (layout(offset=36 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:59 Constant: +0:59 5 (const uint) +0:60 imageAtomicOr (temp int) +0:60 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:60 i1: direct index for structure (layout(offset=36 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:60 Constant: +0:60 5 (const uint) +0:60 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:60 Constant: +0:60 8 (const uint) +0:61 move second child to first child (temp int) +0:61 'out_i1' (temp int) +0:61 imageAtomicOr (temp int) +0:61 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:61 i1: direct index for structure (layout(offset=36 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:61 Constant: +0:61 5 (const uint) +0:61 i1: direct index for structure (layout(offset=36 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:61 Constant: +0:61 5 (const uint) +0:62 imageAtomicXor (temp int) +0:62 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:62 i1: direct index for structure (layout(offset=36 ) uniform int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:62 Constant: +0:62 5 (const uint) +0:62 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:62 Constant: +0:62 8 (const uint) +0:63 move second child to first child (temp int) +0:63 'out_i1' (temp int) +0:63 imageAtomicXor (temp int) +0:63 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:63 i1: direct index for structure (layout(offset=36 ) uniform int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:63 Constant: +0:63 5 (const uint) +0:63 i1: direct index for structure (layout(offset=36 ) uniform int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:63 Constant: +0:63 5 (const uint) +0:66 imageAtomicAdd (temp uint) +0:66 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:66 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:66 Constant: +0:66 0 (const uint) +0:66 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:66 Constant: +0:66 0 (const uint) +0:67 move second child to first child (temp uint) +0:67 'out_u1' (temp uint) +0:67 imageAtomicAdd (temp uint) +0:67 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:67 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:67 Constant: +0:67 0 (const uint) +0:67 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:67 Constant: +0:67 0 (const uint) +0:68 imageAtomicAnd (temp uint) +0:68 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:68 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:68 Constant: +0:68 0 (const uint) +0:68 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:68 Constant: +0:68 0 (const uint) +0:69 move second child to first child (temp uint) +0:69 'out_u1' (temp uint) +0:69 imageAtomicAnd (temp uint) +0:69 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:69 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:69 Constant: +0:69 0 (const uint) +0:69 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:69 Constant: +0:69 0 (const uint) +0:70 move second child to first child (temp uint) +0:70 'out_u1' (temp uint) +0:70 imageAtomicCompSwap (temp uint) +0:70 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:70 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 0 (const uint) +0:70 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 3 (const uint) +0:70 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:70 Constant: +0:70 4 (const uint) +0:71 move second child to first child (temp uint) +0:71 'out_u1' (temp uint) +0:71 imageAtomicExchange (temp uint) +0:71 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:71 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:71 Constant: +0:71 0 (const uint) +0:71 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:71 Constant: +0:71 0 (const uint) +0:72 imageAtomicMax (temp uint) +0:72 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:72 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:72 Constant: +0:72 0 (const uint) +0:72 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:72 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:72 Constant: +0:72 0 (const uint) +0:73 move second child to first child (temp uint) +0:73 'out_u1' (temp uint) +0:73 imageAtomicMax (temp uint) +0:73 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:73 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:73 Constant: +0:73 0 (const uint) +0:73 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:73 Constant: +0:73 0 (const uint) +0:74 imageAtomicMin (temp uint) +0:74 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:74 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:74 Constant: +0:74 0 (const uint) +0:74 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:74 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:74 Constant: +0:74 0 (const uint) +0:75 move second child to first child (temp uint) +0:75 'out_u1' (temp uint) +0:75 imageAtomicMin (temp uint) +0:75 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:75 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:75 Constant: +0:75 0 (const uint) +0:75 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:75 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:75 Constant: +0:75 0 (const uint) +0:76 imageAtomicOr (temp uint) +0:76 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:76 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:76 Constant: +0:76 0 (const uint) +0:76 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:76 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:76 Constant: +0:76 0 (const uint) +0:77 move second child to first child (temp uint) +0:77 'out_u1' (temp uint) +0:77 imageAtomicOr (temp uint) +0:77 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:77 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:77 Constant: +0:77 0 (const uint) +0:77 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:77 Constant: +0:77 0 (const uint) +0:78 imageAtomicXor (temp uint) +0:78 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:78 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:78 Constant: +0:78 0 (const uint) +0:78 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:78 Constant: +0:78 0 (const uint) +0:79 move second child to first child (temp uint) +0:79 'out_u1' (temp uint) +0:79 imageAtomicXor (temp uint) +0:79 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:79 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:79 Constant: +0:79 0 (const uint) +0:79 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:79 Constant: +0:79 0 (const uint) +0:82 imageAtomicAdd (temp int) +0:82 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:82 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:82 Constant: +0:82 6 (const uint) +0:82 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:82 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:82 Constant: +0:82 8 (const uint) +0:83 move second child to first child (temp int) +0:83 'out_i1' (temp int) +0:83 imageAtomicAdd (temp int) +0:83 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:83 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:83 Constant: +0:83 6 (const uint) +0:83 i1: direct index for structure (layout(offset=36 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:83 Constant: +0:83 5 (const uint) +0:84 imageAtomicAnd (temp int) +0:84 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:84 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:84 Constant: +0:84 6 (const uint) +0:84 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:84 Constant: +0:84 8 (const uint) +0:85 move second child to first child (temp int) +0:85 'out_i1' (temp int) +0:85 imageAtomicAnd (temp int) +0:85 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:85 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:85 Constant: +0:85 6 (const uint) +0:85 i1: direct index for structure (layout(offset=36 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:85 Constant: +0:85 5 (const uint) +0:86 move second child to first child (temp int) +0:86 'out_i1' (temp int) +0:86 imageAtomicCompSwap (temp int) +0:86 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:86 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 6 (const uint) +0:86 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 8 (const uint) +0:86 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:86 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:86 Constant: +0:86 9 (const uint) +0:87 move second child to first child (temp int) +0:87 'out_i1' (temp int) +0:87 imageAtomicExchange (temp int) +0:87 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:87 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:87 Constant: +0:87 6 (const uint) +0:87 i1: direct index for structure (layout(offset=36 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:87 Constant: +0:87 5 (const uint) +0:88 imageAtomicMax (temp int) +0:88 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:88 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:88 Constant: +0:88 6 (const uint) +0:88 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:88 Constant: +0:88 8 (const uint) +0:89 move second child to first child (temp int) +0:89 'out_i1' (temp int) +0:89 imageAtomicMax (temp int) +0:89 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:89 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:89 Constant: +0:89 6 (const uint) +0:89 i1: direct index for structure (layout(offset=36 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:89 Constant: +0:89 5 (const uint) +0:90 imageAtomicMin (temp int) +0:90 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:90 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:90 Constant: +0:90 6 (const uint) +0:90 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:90 Constant: +0:90 8 (const uint) +0:91 move second child to first child (temp int) +0:91 'out_i1' (temp int) +0:91 imageAtomicMin (temp int) +0:91 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:91 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:91 Constant: +0:91 6 (const uint) +0:91 i1: direct index for structure (layout(offset=36 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:91 Constant: +0:91 5 (const uint) +0:92 imageAtomicOr (temp int) +0:92 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:92 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:92 Constant: +0:92 6 (const uint) +0:92 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:92 Constant: +0:92 8 (const uint) +0:93 move second child to first child (temp int) +0:93 'out_i1' (temp int) +0:93 imageAtomicOr (temp int) +0:93 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:93 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:93 Constant: +0:93 6 (const uint) +0:93 i1: direct index for structure (layout(offset=36 ) uniform int) +0:93 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:93 Constant: +0:93 5 (const uint) +0:94 imageAtomicXor (temp int) +0:94 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:94 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:94 Constant: +0:94 6 (const uint) +0:94 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:94 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:94 Constant: +0:94 8 (const uint) +0:95 move second child to first child (temp int) +0:95 'out_i1' (temp int) +0:95 imageAtomicXor (temp int) +0:95 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:95 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:95 Constant: +0:95 6 (const uint) +0:95 i1: direct index for structure (layout(offset=36 ) uniform int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:95 Constant: +0:95 5 (const uint) +0:98 imageAtomicAdd (temp uint) +0:98 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:98 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:98 Constant: +0:98 1 (const uint) +0:98 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:98 Constant: +0:98 0 (const uint) +0:99 move second child to first child (temp uint) +0:99 'out_u1' (temp uint) +0:99 imageAtomicAdd (temp uint) +0:99 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:99 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:99 Constant: +0:99 1 (const uint) +0:99 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:99 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:99 Constant: +0:99 0 (const uint) +0:100 imageAtomicAnd (temp uint) +0:100 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:100 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:100 Constant: +0:100 1 (const uint) +0:100 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:100 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:100 Constant: +0:100 0 (const uint) +0:101 move second child to first child (temp uint) +0:101 'out_u1' (temp uint) +0:101 imageAtomicAnd (temp uint) +0:101 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:101 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:101 Constant: +0:101 1 (const uint) +0:101 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:101 Constant: +0:101 0 (const uint) +0:102 move second child to first child (temp uint) +0:102 'out_u1' (temp uint) +0:102 imageAtomicCompSwap (temp uint) +0:102 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:102 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 1 (const uint) +0:102 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 3 (const uint) +0:102 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:102 Constant: +0:102 4 (const uint) +0:103 move second child to first child (temp uint) +0:103 'out_u1' (temp uint) +0:103 imageAtomicExchange (temp uint) +0:103 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:103 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:103 Constant: +0:103 1 (const uint) +0:103 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:103 Constant: +0:103 0 (const uint) +0:104 imageAtomicMax (temp uint) +0:104 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:104 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:104 Constant: +0:104 1 (const uint) +0:104 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:104 Constant: +0:104 0 (const uint) +0:105 move second child to first child (temp uint) +0:105 'out_u1' (temp uint) +0:105 imageAtomicMax (temp uint) +0:105 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:105 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:105 Constant: +0:105 1 (const uint) +0:105 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:105 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:105 Constant: +0:105 0 (const uint) +0:106 imageAtomicMin (temp uint) +0:106 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:106 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:106 Constant: +0:106 1 (const uint) +0:106 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:106 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:106 Constant: +0:106 0 (const uint) +0:107 move second child to first child (temp uint) +0:107 'out_u1' (temp uint) +0:107 imageAtomicMin (temp uint) +0:107 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:107 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:107 Constant: +0:107 1 (const uint) +0:107 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:107 Constant: +0:107 0 (const uint) +0:108 imageAtomicOr (temp uint) +0:108 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:108 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:108 Constant: +0:108 1 (const uint) +0:108 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:108 Constant: +0:108 0 (const uint) +0:109 move second child to first child (temp uint) +0:109 'out_u1' (temp uint) +0:109 imageAtomicOr (temp uint) +0:109 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:109 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:109 Constant: +0:109 1 (const uint) +0:109 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:109 Constant: +0:109 0 (const uint) +0:110 imageAtomicXor (temp uint) +0:110 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:110 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:110 Constant: +0:110 1 (const uint) +0:110 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:110 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:110 Constant: +0:110 0 (const uint) +0:111 move second child to first child (temp uint) +0:111 'out_u1' (temp uint) +0:111 imageAtomicXor (temp uint) +0:111 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:111 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:111 Constant: +0:111 1 (const uint) +0:111 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:111 Constant: +0:111 0 (const uint) +0:114 imageAtomicAdd (temp int) +0:114 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:114 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:114 Constant: +0:114 7 (const uint) +0:114 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:114 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:114 Constant: +0:114 8 (const uint) +0:115 move second child to first child (temp int) +0:115 'out_i1' (temp int) +0:115 imageAtomicAdd (temp int) +0:115 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:115 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:115 Constant: +0:115 7 (const uint) +0:115 i1: direct index for structure (layout(offset=36 ) uniform int) +0:115 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:115 Constant: +0:115 5 (const uint) +0:116 imageAtomicAnd (temp int) +0:116 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:116 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:116 Constant: +0:116 7 (const uint) +0:116 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:116 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:116 Constant: +0:116 8 (const uint) +0:117 move second child to first child (temp int) +0:117 'out_i1' (temp int) +0:117 imageAtomicAnd (temp int) +0:117 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:117 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:117 Constant: +0:117 7 (const uint) +0:117 i1: direct index for structure (layout(offset=36 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:117 Constant: +0:117 5 (const uint) +0:118 move second child to first child (temp int) +0:118 'out_i1' (temp int) +0:118 imageAtomicCompSwap (temp int) +0:118 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:118 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 7 (const uint) +0:118 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 8 (const uint) +0:118 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:118 Constant: +0:118 9 (const uint) +0:119 move second child to first child (temp int) +0:119 'out_i1' (temp int) +0:119 imageAtomicExchange (temp int) +0:119 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:119 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:119 Constant: +0:119 7 (const uint) +0:119 i1: direct index for structure (layout(offset=36 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:119 Constant: +0:119 5 (const uint) +0:120 imageAtomicMax (temp int) +0:120 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:120 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:120 Constant: +0:120 7 (const uint) +0:120 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:120 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:120 Constant: +0:120 8 (const uint) +0:121 move second child to first child (temp int) +0:121 'out_i1' (temp int) +0:121 imageAtomicMax (temp int) +0:121 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:121 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:121 Constant: +0:121 7 (const uint) +0:121 i1: direct index for structure (layout(offset=36 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:121 Constant: +0:121 5 (const uint) +0:122 imageAtomicMin (temp int) +0:122 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:122 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:122 Constant: +0:122 7 (const uint) +0:122 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:122 Constant: +0:122 8 (const uint) +0:123 move second child to first child (temp int) +0:123 'out_i1' (temp int) +0:123 imageAtomicMin (temp int) +0:123 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:123 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:123 Constant: +0:123 7 (const uint) +0:123 i1: direct index for structure (layout(offset=36 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:123 Constant: +0:123 5 (const uint) +0:124 imageAtomicOr (temp int) +0:124 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:124 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:124 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:124 Constant: +0:124 7 (const uint) +0:124 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:124 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:124 Constant: +0:124 8 (const uint) +0:125 move second child to first child (temp int) +0:125 'out_i1' (temp int) +0:125 imageAtomicOr (temp int) +0:125 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:125 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:125 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:125 Constant: +0:125 7 (const uint) +0:125 i1: direct index for structure (layout(offset=36 ) uniform int) +0:125 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:125 Constant: +0:125 5 (const uint) +0:126 imageAtomicXor (temp int) +0:126 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:126 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:126 Constant: +0:126 7 (const uint) +0:126 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:126 Constant: +0:126 8 (const uint) +0:127 move second child to first child (temp int) +0:127 'out_i1' (temp int) +0:127 imageAtomicXor (temp int) +0:127 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:127 i3: direct index for structure (layout(offset=48 ) uniform 3-component vector of int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:127 Constant: +0:127 7 (const uint) +0:127 i1: direct index for structure (layout(offset=36 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:127 Constant: +0:127 5 (const uint) +0:130 imageAtomicAdd (temp uint) +0:130 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:130 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:130 Constant: +0:130 2 (const uint) +0:130 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:130 Constant: +0:130 0 (const uint) +0:131 move second child to first child (temp uint) +0:131 'out_u1' (temp uint) +0:131 imageAtomicAdd (temp uint) +0:131 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:131 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:131 Constant: +0:131 2 (const uint) +0:131 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:131 Constant: +0:131 0 (const uint) +0:132 imageAtomicAnd (temp uint) +0:132 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:132 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:132 Constant: +0:132 2 (const uint) +0:132 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:132 Constant: +0:132 0 (const uint) +0:133 move second child to first child (temp uint) +0:133 'out_u1' (temp uint) +0:133 imageAtomicAnd (temp uint) +0:133 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:133 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:133 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:133 Constant: +0:133 2 (const uint) +0:133 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:133 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:133 Constant: +0:133 0 (const uint) +0:134 move second child to first child (temp uint) +0:134 'out_u1' (temp uint) +0:134 imageAtomicCompSwap (temp uint) +0:134 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:134 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 2 (const uint) +0:134 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 3 (const uint) +0:134 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:134 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:134 Constant: +0:134 4 (const uint) +0:135 move second child to first child (temp uint) +0:135 'out_u1' (temp uint) +0:135 imageAtomicExchange (temp uint) +0:135 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:135 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:135 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:135 Constant: +0:135 2 (const uint) +0:135 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:135 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:135 Constant: +0:135 0 (const uint) +0:136 imageAtomicMax (temp uint) +0:136 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:136 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:136 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:136 Constant: +0:136 2 (const uint) +0:136 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:136 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:136 Constant: +0:136 0 (const uint) +0:137 move second child to first child (temp uint) +0:137 'out_u1' (temp uint) +0:137 imageAtomicMax (temp uint) +0:137 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:137 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:137 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:137 Constant: +0:137 2 (const uint) +0:137 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:137 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:137 Constant: +0:137 0 (const uint) +0:138 imageAtomicMin (temp uint) +0:138 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:138 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:138 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:138 Constant: +0:138 2 (const uint) +0:138 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:138 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:138 Constant: +0:138 0 (const uint) +0:139 move second child to first child (temp uint) +0:139 'out_u1' (temp uint) +0:139 imageAtomicMin (temp uint) +0:139 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:139 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:139 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:139 Constant: +0:139 2 (const uint) +0:139 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:139 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:139 Constant: +0:139 0 (const uint) +0:140 imageAtomicOr (temp uint) +0:140 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:140 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:140 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:140 Constant: +0:140 2 (const uint) +0:140 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:140 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:140 Constant: +0:140 0 (const uint) +0:141 move second child to first child (temp uint) +0:141 'out_u1' (temp uint) +0:141 imageAtomicOr (temp uint) +0:141 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:141 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:141 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:141 Constant: +0:141 2 (const uint) +0:141 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:141 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:141 Constant: +0:141 0 (const uint) +0:142 imageAtomicXor (temp uint) +0:142 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:142 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:142 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:142 Constant: +0:142 2 (const uint) +0:142 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:142 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:142 Constant: +0:142 0 (const uint) +0:143 move second child to first child (temp uint) +0:143 'out_u1' (temp uint) +0:143 imageAtomicXor (temp uint) +0:143 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:143 u3: direct index for structure (layout(offset=16 ) uniform 3-component vector of uint) +0:143 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:143 Constant: +0:143 2 (const uint) +0:143 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:143 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:143 Constant: +0:143 0 (const uint) +0:146 imageAtomicAdd (temp int) +0:146 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:146 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:146 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:146 Constant: +0:146 6 (const uint) +0:146 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:146 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:146 Constant: +0:146 8 (const uint) +0:147 move second child to first child (temp int) +0:147 'out_i1' (temp int) +0:147 imageAtomicAdd (temp int) +0:147 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:147 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:147 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:147 Constant: +0:147 6 (const uint) +0:147 i1: direct index for structure (layout(offset=36 ) uniform int) +0:147 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:147 Constant: +0:147 5 (const uint) +0:148 imageAtomicAnd (temp int) +0:148 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:148 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:148 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:148 Constant: +0:148 6 (const uint) +0:148 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:148 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:148 Constant: +0:148 8 (const uint) +0:149 move second child to first child (temp int) +0:149 'out_i1' (temp int) +0:149 imageAtomicAnd (temp int) +0:149 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:149 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:149 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:149 Constant: +0:149 6 (const uint) +0:149 i1: direct index for structure (layout(offset=36 ) uniform int) +0:149 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:149 Constant: +0:149 5 (const uint) +0:150 move second child to first child (temp int) +0:150 'out_i1' (temp int) +0:150 imageAtomicCompSwap (temp int) +0:150 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:150 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 6 (const uint) +0:150 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 8 (const uint) +0:150 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:150 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:150 Constant: +0:150 9 (const uint) +0:151 move second child to first child (temp int) +0:151 'out_i1' (temp int) +0:151 imageAtomicExchange (temp int) +0:151 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:151 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:151 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:151 Constant: +0:151 6 (const uint) +0:151 i1: direct index for structure (layout(offset=36 ) uniform int) +0:151 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:151 Constant: +0:151 5 (const uint) +0:152 imageAtomicMax (temp int) +0:152 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:152 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:152 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:152 Constant: +0:152 6 (const uint) +0:152 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:152 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:152 Constant: +0:152 8 (const uint) +0:153 move second child to first child (temp int) +0:153 'out_i1' (temp int) +0:153 imageAtomicMax (temp int) +0:153 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:153 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:153 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:153 Constant: +0:153 6 (const uint) +0:153 i1: direct index for structure (layout(offset=36 ) uniform int) +0:153 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:153 Constant: +0:153 5 (const uint) +0:154 imageAtomicMin (temp int) +0:154 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:154 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:154 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:154 Constant: +0:154 6 (const uint) +0:154 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:154 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:154 Constant: +0:154 8 (const uint) +0:155 move second child to first child (temp int) +0:155 'out_i1' (temp int) +0:155 imageAtomicMin (temp int) +0:155 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:155 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:155 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:155 Constant: +0:155 6 (const uint) +0:155 i1: direct index for structure (layout(offset=36 ) uniform int) +0:155 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:155 Constant: +0:155 5 (const uint) +0:156 imageAtomicOr (temp int) +0:156 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:156 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:156 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:156 Constant: +0:156 6 (const uint) +0:156 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:156 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:156 Constant: +0:156 8 (const uint) +0:157 move second child to first child (temp int) +0:157 'out_i1' (temp int) +0:157 imageAtomicOr (temp int) +0:157 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:157 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:157 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:157 Constant: +0:157 6 (const uint) +0:157 i1: direct index for structure (layout(offset=36 ) uniform int) +0:157 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:157 Constant: +0:157 5 (const uint) +0:158 imageAtomicXor (temp int) +0:158 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:158 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:158 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:158 Constant: +0:158 6 (const uint) +0:158 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:158 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:158 Constant: +0:158 8 (const uint) +0:159 move second child to first child (temp int) +0:159 'out_i1' (temp int) +0:159 imageAtomicXor (temp int) +0:159 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:159 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:159 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:159 Constant: +0:159 6 (const uint) +0:159 i1: direct index for structure (layout(offset=36 ) uniform int) +0:159 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:159 Constant: +0:159 5 (const uint) +0:162 imageAtomicAdd (temp uint) +0:162 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:162 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:162 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:162 Constant: +0:162 1 (const uint) +0:162 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:162 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:162 Constant: +0:162 0 (const uint) +0:163 move second child to first child (temp uint) +0:163 'out_u1' (temp uint) +0:163 imageAtomicAdd (temp uint) +0:163 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:163 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:163 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:163 Constant: +0:163 1 (const uint) +0:163 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:163 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:163 Constant: +0:163 0 (const uint) +0:164 imageAtomicAnd (temp uint) +0:164 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:164 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:164 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:164 Constant: +0:164 1 (const uint) +0:164 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:164 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:164 Constant: +0:164 0 (const uint) +0:165 move second child to first child (temp uint) +0:165 'out_u1' (temp uint) +0:165 imageAtomicAnd (temp uint) +0:165 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:165 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:165 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:165 Constant: +0:165 1 (const uint) +0:165 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:165 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:165 Constant: +0:165 0 (const uint) +0:166 move second child to first child (temp uint) +0:166 'out_u1' (temp uint) +0:166 imageAtomicCompSwap (temp uint) +0:166 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:166 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 1 (const uint) +0:166 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 3 (const uint) +0:166 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:166 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:166 Constant: +0:166 4 (const uint) +0:167 move second child to first child (temp uint) +0:167 'out_u1' (temp uint) +0:167 imageAtomicExchange (temp uint) +0:167 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:167 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:167 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:167 Constant: +0:167 1 (const uint) +0:167 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:167 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:167 Constant: +0:167 0 (const uint) +0:168 imageAtomicMax (temp uint) +0:168 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:168 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:168 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:168 Constant: +0:168 1 (const uint) +0:168 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:168 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:168 Constant: +0:168 0 (const uint) +0:169 move second child to first child (temp uint) +0:169 'out_u1' (temp uint) +0:169 imageAtomicMax (temp uint) +0:169 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:169 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:169 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:169 Constant: +0:169 1 (const uint) +0:169 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:169 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:169 Constant: +0:169 0 (const uint) +0:170 imageAtomicMin (temp uint) +0:170 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:170 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:170 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:170 Constant: +0:170 1 (const uint) +0:170 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:170 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:170 Constant: +0:170 0 (const uint) +0:171 move second child to first child (temp uint) +0:171 'out_u1' (temp uint) +0:171 imageAtomicMin (temp uint) +0:171 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:171 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:171 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:171 Constant: +0:171 1 (const uint) +0:171 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:171 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:171 Constant: +0:171 0 (const uint) +0:172 imageAtomicOr (temp uint) +0:172 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:172 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:172 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:172 Constant: +0:172 1 (const uint) +0:172 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:172 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:172 Constant: +0:172 0 (const uint) +0:173 move second child to first child (temp uint) +0:173 'out_u1' (temp uint) +0:173 imageAtomicOr (temp uint) +0:173 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:173 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:173 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:173 Constant: +0:173 1 (const uint) +0:173 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:173 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:173 Constant: +0:173 0 (const uint) +0:174 imageAtomicXor (temp uint) +0:174 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:174 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:174 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:174 Constant: +0:174 1 (const uint) +0:174 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:174 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:174 Constant: +0:174 0 (const uint) +0:175 move second child to first child (temp uint) +0:175 'out_u1' (temp uint) +0:175 imageAtomicXor (temp uint) +0:175 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:175 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:175 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:175 Constant: +0:175 1 (const uint) +0:175 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:175 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:175 Constant: +0:175 0 (const uint) +0:178 imageAtomicAdd (temp int) +0:178 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:178 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:178 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:178 Constant: +0:178 6 (const uint) +0:178 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:178 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:178 Constant: +0:178 8 (const uint) +0:179 move second child to first child (temp int) +0:179 'out_i1' (temp int) +0:179 imageAtomicAdd (temp int) +0:179 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:179 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:179 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:179 Constant: +0:179 6 (const uint) +0:179 i1: direct index for structure (layout(offset=36 ) uniform int) +0:179 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:179 Constant: +0:179 5 (const uint) +0:180 imageAtomicAnd (temp int) +0:180 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:180 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:180 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:180 Constant: +0:180 6 (const uint) +0:180 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:180 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:180 Constant: +0:180 8 (const uint) +0:181 move second child to first child (temp int) +0:181 'out_i1' (temp int) +0:181 imageAtomicAnd (temp int) +0:181 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:181 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:181 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:181 Constant: +0:181 6 (const uint) +0:181 i1: direct index for structure (layout(offset=36 ) uniform int) +0:181 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:181 Constant: +0:181 5 (const uint) +0:182 move second child to first child (temp int) +0:182 'out_i1' (temp int) +0:182 imageAtomicCompSwap (temp int) +0:182 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:182 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 6 (const uint) +0:182 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 8 (const uint) +0:182 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:182 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:182 Constant: +0:182 9 (const uint) +0:183 move second child to first child (temp int) +0:183 'out_i1' (temp int) +0:183 imageAtomicExchange (temp int) +0:183 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:183 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:183 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:183 Constant: +0:183 6 (const uint) +0:183 i1: direct index for structure (layout(offset=36 ) uniform int) +0:183 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:183 Constant: +0:183 5 (const uint) +0:184 imageAtomicMax (temp int) +0:184 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:184 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:184 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:184 Constant: +0:184 6 (const uint) +0:184 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:184 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:184 Constant: +0:184 8 (const uint) +0:185 move second child to first child (temp int) +0:185 'out_i1' (temp int) +0:185 imageAtomicMax (temp int) +0:185 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:185 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:185 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:185 Constant: +0:185 6 (const uint) +0:185 i1: direct index for structure (layout(offset=36 ) uniform int) +0:185 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:185 Constant: +0:185 5 (const uint) +0:186 imageAtomicMin (temp int) +0:186 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:186 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:186 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:186 Constant: +0:186 6 (const uint) +0:186 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:186 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:186 Constant: +0:186 8 (const uint) +0:187 move second child to first child (temp int) +0:187 'out_i1' (temp int) +0:187 imageAtomicMin (temp int) +0:187 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:187 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:187 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:187 Constant: +0:187 6 (const uint) +0:187 i1: direct index for structure (layout(offset=36 ) uniform int) +0:187 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:187 Constant: +0:187 5 (const uint) +0:188 imageAtomicOr (temp int) +0:188 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:188 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:188 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:188 Constant: +0:188 6 (const uint) +0:188 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:188 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:188 Constant: +0:188 8 (const uint) +0:189 move second child to first child (temp int) +0:189 'out_i1' (temp int) +0:189 imageAtomicOr (temp int) +0:189 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:189 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:189 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:189 Constant: +0:189 6 (const uint) +0:189 i1: direct index for structure (layout(offset=36 ) uniform int) +0:189 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:189 Constant: +0:189 5 (const uint) +0:190 imageAtomicXor (temp int) +0:190 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:190 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:190 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:190 Constant: +0:190 6 (const uint) +0:190 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:190 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:190 Constant: +0:190 8 (const uint) +0:191 move second child to first child (temp int) +0:191 'out_i1' (temp int) +0:191 imageAtomicXor (temp int) +0:191 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:191 i2: direct index for structure (layout(offset=40 ) uniform 2-component vector of int) +0:191 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:191 Constant: +0:191 6 (const uint) +0:191 i1: direct index for structure (layout(offset=36 ) uniform int) +0:191 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:191 Constant: +0:191 5 (const uint) +0:194 imageAtomicAdd (temp uint) +0:194 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:194 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:194 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:194 Constant: +0:194 1 (const uint) +0:194 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:194 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:194 Constant: +0:194 0 (const uint) +0:195 move second child to first child (temp uint) +0:195 'out_u1' (temp uint) +0:195 imageAtomicAdd (temp uint) +0:195 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:195 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:195 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:195 Constant: +0:195 1 (const uint) +0:195 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:195 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:195 Constant: +0:195 0 (const uint) +0:196 imageAtomicAnd (temp uint) +0:196 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:196 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:196 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:196 Constant: +0:196 1 (const uint) +0:196 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:196 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:196 Constant: +0:196 0 (const uint) +0:197 move second child to first child (temp uint) +0:197 'out_u1' (temp uint) +0:197 imageAtomicAnd (temp uint) +0:197 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:197 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:197 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:197 Constant: +0:197 1 (const uint) +0:197 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:197 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:197 Constant: +0:197 0 (const uint) +0:198 move second child to first child (temp uint) +0:198 'out_u1' (temp uint) +0:198 imageAtomicCompSwap (temp uint) +0:198 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:198 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 1 (const uint) +0:198 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 3 (const uint) +0:198 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:198 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:198 Constant: +0:198 4 (const uint) +0:199 move second child to first child (temp uint) +0:199 'out_u1' (temp uint) +0:199 imageAtomicExchange (temp uint) +0:199 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:199 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:199 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:199 Constant: +0:199 1 (const uint) +0:199 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:199 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:199 Constant: +0:199 0 (const uint) +0:200 imageAtomicMax (temp uint) +0:200 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:200 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:200 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:200 Constant: +0:200 1 (const uint) +0:200 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:200 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:200 Constant: +0:200 0 (const uint) +0:201 move second child to first child (temp uint) +0:201 'out_u1' (temp uint) +0:201 imageAtomicMax (temp uint) +0:201 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:201 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:201 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:201 Constant: +0:201 1 (const uint) +0:201 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:201 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:201 Constant: +0:201 0 (const uint) +0:202 imageAtomicMin (temp uint) +0:202 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:202 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:202 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:202 Constant: +0:202 1 (const uint) +0:202 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:202 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:202 Constant: +0:202 0 (const uint) +0:203 move second child to first child (temp uint) +0:203 'out_u1' (temp uint) +0:203 imageAtomicMin (temp uint) +0:203 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:203 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:203 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:203 Constant: +0:203 1 (const uint) +0:203 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:203 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:203 Constant: +0:203 0 (const uint) +0:204 imageAtomicOr (temp uint) +0:204 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:204 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:204 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:204 Constant: +0:204 1 (const uint) +0:204 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:204 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:204 Constant: +0:204 0 (const uint) +0:205 move second child to first child (temp uint) +0:205 'out_u1' (temp uint) +0:205 imageAtomicOr (temp uint) +0:205 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:205 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:205 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:205 Constant: +0:205 1 (const uint) +0:205 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:205 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:205 Constant: +0:205 0 (const uint) +0:206 imageAtomicXor (temp uint) +0:206 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:206 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:206 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:206 Constant: +0:206 1 (const uint) +0:206 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:206 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:206 Constant: +0:206 0 (const uint) +0:207 move second child to first child (temp uint) +0:207 'out_u1' (temp uint) +0:207 imageAtomicXor (temp uint) +0:207 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:207 u2: direct index for structure (layout(offset=8 ) uniform 2-component vector of uint) +0:207 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:207 Constant: +0:207 1 (const uint) +0:207 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:207 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:207 Constant: +0:207 0 (const uint) +0:210 imageAtomicAdd (temp int) +0:210 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:210 i1: direct index for structure (layout(offset=36 ) uniform int) +0:210 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:210 Constant: +0:210 5 (const uint) +0:210 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:210 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:210 Constant: +0:210 8 (const uint) +0:211 move second child to first child (temp int) +0:211 'out_i1' (temp int) +0:211 imageAtomicAdd (temp int) +0:211 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:211 i1: direct index for structure (layout(offset=36 ) uniform int) +0:211 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:211 Constant: +0:211 5 (const uint) +0:211 i1: direct index for structure (layout(offset=36 ) uniform int) +0:211 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:211 Constant: +0:211 5 (const uint) +0:212 imageAtomicAnd (temp int) +0:212 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:212 i1: direct index for structure (layout(offset=36 ) uniform int) +0:212 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:212 Constant: +0:212 5 (const uint) +0:212 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:212 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:212 Constant: +0:212 8 (const uint) +0:213 move second child to first child (temp int) +0:213 'out_i1' (temp int) +0:213 imageAtomicAnd (temp int) +0:213 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:213 i1: direct index for structure (layout(offset=36 ) uniform int) +0:213 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:213 Constant: +0:213 5 (const uint) +0:213 i1: direct index for structure (layout(offset=36 ) uniform int) +0:213 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:213 Constant: +0:213 5 (const uint) +0:214 move second child to first child (temp int) +0:214 'out_i1' (temp int) +0:214 imageAtomicCompSwap (temp int) +0:214 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:214 i1: direct index for structure (layout(offset=36 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 5 (const uint) +0:214 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 8 (const uint) +0:214 i1c: direct index for structure (layout(offset=64 ) uniform int) +0:214 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:214 Constant: +0:214 9 (const uint) +0:215 move second child to first child (temp int) +0:215 'out_i1' (temp int) +0:215 imageAtomicExchange (temp int) +0:215 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:215 i1: direct index for structure (layout(offset=36 ) uniform int) +0:215 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:215 Constant: +0:215 5 (const uint) +0:215 i1: direct index for structure (layout(offset=36 ) uniform int) +0:215 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:215 Constant: +0:215 5 (const uint) +0:216 imageAtomicMax (temp int) +0:216 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:216 i1: direct index for structure (layout(offset=36 ) uniform int) +0:216 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:216 Constant: +0:216 5 (const uint) +0:216 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:216 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:216 Constant: +0:216 8 (const uint) +0:217 move second child to first child (temp int) +0:217 'out_i1' (temp int) +0:217 imageAtomicMax (temp int) +0:217 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:217 i1: direct index for structure (layout(offset=36 ) uniform int) +0:217 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:217 Constant: +0:217 5 (const uint) +0:217 i1: direct index for structure (layout(offset=36 ) uniform int) +0:217 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:217 Constant: +0:217 5 (const uint) +0:218 imageAtomicMin (temp int) +0:218 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:218 i1: direct index for structure (layout(offset=36 ) uniform int) +0:218 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:218 Constant: +0:218 5 (const uint) +0:218 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:218 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:218 Constant: +0:218 8 (const uint) +0:219 move second child to first child (temp int) +0:219 'out_i1' (temp int) +0:219 imageAtomicMin (temp int) +0:219 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:219 i1: direct index for structure (layout(offset=36 ) uniform int) +0:219 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:219 Constant: +0:219 5 (const uint) +0:219 i1: direct index for structure (layout(offset=36 ) uniform int) +0:219 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:219 Constant: +0:219 5 (const uint) +0:220 imageAtomicOr (temp int) +0:220 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:220 i1: direct index for structure (layout(offset=36 ) uniform int) +0:220 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:220 Constant: +0:220 5 (const uint) +0:220 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:220 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:220 Constant: +0:220 8 (const uint) +0:221 move second child to first child (temp int) +0:221 'out_i1' (temp int) +0:221 imageAtomicOr (temp int) +0:221 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:221 i1: direct index for structure (layout(offset=36 ) uniform int) +0:221 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:221 Constant: +0:221 5 (const uint) +0:221 i1: direct index for structure (layout(offset=36 ) uniform int) +0:221 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:221 Constant: +0:221 5 (const uint) +0:222 imageAtomicXor (temp int) +0:222 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:222 i1: direct index for structure (layout(offset=36 ) uniform int) +0:222 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:222 Constant: +0:222 5 (const uint) +0:222 i1b: direct index for structure (layout(offset=60 ) uniform int) +0:222 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:222 Constant: +0:222 8 (const uint) +0:223 move second child to first child (temp int) +0:223 'out_i1' (temp int) +0:223 imageAtomicXor (temp int) +0:223 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:223 i1: direct index for structure (layout(offset=36 ) uniform int) +0:223 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:223 Constant: +0:223 5 (const uint) +0:223 i1: direct index for structure (layout(offset=36 ) uniform int) +0:223 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:223 Constant: +0:223 5 (const uint) +0:226 imageAtomicAdd (temp uint) +0:226 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:226 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:226 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:226 Constant: +0:226 0 (const uint) +0:226 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:226 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:226 Constant: +0:226 0 (const uint) +0:227 move second child to first child (temp uint) +0:227 'out_u1' (temp uint) +0:227 imageAtomicAdd (temp uint) +0:227 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:227 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:227 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:227 Constant: +0:227 0 (const uint) +0:227 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:227 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:227 Constant: +0:227 0 (const uint) +0:228 imageAtomicAnd (temp uint) +0:228 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:228 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:228 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:228 Constant: +0:228 0 (const uint) +0:228 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:228 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:228 Constant: +0:228 0 (const uint) +0:229 move second child to first child (temp uint) +0:229 'out_u1' (temp uint) +0:229 imageAtomicAnd (temp uint) +0:229 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:229 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:229 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:229 Constant: +0:229 0 (const uint) +0:229 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:229 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:229 Constant: +0:229 0 (const uint) +0:230 move second child to first child (temp uint) +0:230 'out_u1' (temp uint) +0:230 imageAtomicCompSwap (temp uint) +0:230 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:230 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 0 (const uint) +0:230 u1b: direct index for structure (layout(offset=28 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 3 (const uint) +0:230 u1c: direct index for structure (layout(offset=32 ) uniform uint) +0:230 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:230 Constant: +0:230 4 (const uint) +0:231 move second child to first child (temp uint) +0:231 'out_u1' (temp uint) +0:231 imageAtomicExchange (temp uint) +0:231 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:231 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:231 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:231 Constant: +0:231 0 (const uint) +0:231 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:231 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:231 Constant: +0:231 0 (const uint) +0:232 imageAtomicMax (temp uint) +0:232 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:232 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:232 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:232 Constant: +0:232 0 (const uint) +0:232 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:232 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:232 Constant: +0:232 0 (const uint) +0:233 move second child to first child (temp uint) +0:233 'out_u1' (temp uint) +0:233 imageAtomicMax (temp uint) +0:233 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:233 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:233 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:233 Constant: +0:233 0 (const uint) +0:233 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:233 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:233 Constant: +0:233 0 (const uint) +0:234 imageAtomicMin (temp uint) +0:234 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:234 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:234 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:234 Constant: +0:234 0 (const uint) +0:234 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:234 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:234 Constant: +0:234 0 (const uint) +0:235 move second child to first child (temp uint) +0:235 'out_u1' (temp uint) +0:235 imageAtomicMin (temp uint) +0:235 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:235 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:235 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:235 Constant: +0:235 0 (const uint) +0:235 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:235 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:235 Constant: +0:235 0 (const uint) +0:236 imageAtomicOr (temp uint) +0:236 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:236 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:236 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:236 Constant: +0:236 0 (const uint) +0:236 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:236 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:236 Constant: +0:236 0 (const uint) +0:237 move second child to first child (temp uint) +0:237 'out_u1' (temp uint) +0:237 imageAtomicOr (temp uint) +0:237 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:237 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:237 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:237 Constant: +0:237 0 (const uint) +0:237 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:237 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:237 Constant: +0:237 0 (const uint) +0:238 imageAtomicXor (temp uint) +0:238 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:238 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:238 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:238 Constant: +0:238 0 (const uint) +0:238 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:238 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:238 Constant: +0:238 0 (const uint) +0:239 move second child to first child (temp uint) +0:239 'out_u1' (temp uint) +0:239 imageAtomicXor (temp uint) +0:239 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:239 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:239 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:239 Constant: +0:239 0 (const uint) +0:239 u1: direct index for structure (layout(offset=0 ) uniform uint) +0:239 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) +0:239 Constant: +0:239 0 (const uint) +0:242 move second child to first child (temp 4-component vector of float) +0:242 Color: direct index for structure (temp 4-component vector of float) +0:242 'psout' (temp structure{temp 4-component vector of float Color}) +0:242 Constant: +0:242 0 (const int) +0:242 Constant: +0:242 1.000000 +0:242 1.000000 +0:242 1.000000 +0:242 1.000000 +0:243 Sequence +0:243 Sequence +0:243 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:243 Color: direct index for structure (temp 4-component vector of float) +0:243 'psout' (temp structure{temp 4-component vector of float Color}) +0:243 Constant: +0:243 0 (const int) +0:243 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (uniform sampler) +0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:? 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:? 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:? 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:? 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:? 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:? 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:? 'g_tTex1df1a' (layout(r32f ) uniform image1DArray) +0:? 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:? 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:? 'g_tTex2df1a' (layout(r32f ) uniform image2DArray) +0:? 'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray) +0:? 'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray) +0:? 'g_tBuffF' (layout(r32f ) uniform imageBuffer) +0:? 'g_tBuffI' (layout(r32i ) uniform iimageBuffer) +0:? 'g_tBuffU' (layout(r32ui ) uniform uimageBuffer) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform uint u1, layout(offset=8 ) uniform 2-component vector of uint u2, layout(offset=16 ) uniform 3-component vector of uint u3, layout(offset=28 ) uniform uint u1b, layout(offset=32 ) uniform uint u1c, layout(offset=36 ) uniform int i1, layout(offset=40 ) uniform 2-component vector of int i2, layout(offset=48 ) uniform 3-component vector of int i3, layout(offset=60 ) uniform int i1b, layout(offset=64 ) uniform int i1c}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 1142 + + Capability Shader + Capability Sampled1D + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 1111 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "g_tTex1di1" + Name 15 "$Global" + MemberName 15($Global) 0 "u1" + MemberName 15($Global) 1 "u2" + MemberName 15($Global) 2 "u3" + MemberName 15($Global) 3 "u1b" + MemberName 15($Global) 4 "u1c" + MemberName 15($Global) 5 "i1" + MemberName 15($Global) 6 "i2" + MemberName 15($Global) 7 "i3" + MemberName 15($Global) 8 "i1b" + MemberName 15($Global) 9 "i1c" + Name 17 "" + Name 31 "out_i1" + Name 115 "g_tTex1du1" + Name 126 "out_u1" + Name 211 "g_tTex2di1" + Name 302 "g_tTex2du1" + Name 393 "g_tTex3di1" + Name 484 "g_tTex3du1" + Name 575 "g_tTex1di1a" + Name 664 "g_tTex1du1a" + Name 925 "g_tBuffI" + Name 1014 "g_tBuffU" + Name 1103 "PS_OUTPUT" + MemberName 1103(PS_OUTPUT) 0 "Color" + Name 1105 "psout" + Name 1111 "Color" + Name 1117 "g_sSamp" + Name 1120 "g_tTex1df1" + Name 1123 "g_tTex2df1" + Name 1126 "g_tTex3df1" + Name 1129 "g_tTex1df1a" + Name 1132 "g_tTex2df1a" + Name 1135 "g_tTex2di1a" + Name 1138 "g_tTex2du1a" + Name 1141 "g_tBuffF" + Decorate 9(g_tTex1di1) DescriptorSet 0 + MemberDecorate 15($Global) 0 Offset 0 + MemberDecorate 15($Global) 1 Offset 8 + MemberDecorate 15($Global) 2 Offset 16 + MemberDecorate 15($Global) 3 Offset 28 + MemberDecorate 15($Global) 4 Offset 32 + MemberDecorate 15($Global) 5 Offset 36 + MemberDecorate 15($Global) 6 Offset 40 + MemberDecorate 15($Global) 7 Offset 48 + MemberDecorate 15($Global) 8 Offset 60 + MemberDecorate 15($Global) 9 Offset 64 + Decorate 15($Global) Block + Decorate 17 DescriptorSet 0 + Decorate 115(g_tTex1du1) DescriptorSet 0 + Decorate 211(g_tTex2di1) DescriptorSet 0 + Decorate 302(g_tTex2du1) DescriptorSet 0 + Decorate 393(g_tTex3di1) DescriptorSet 0 + Decorate 484(g_tTex3du1) DescriptorSet 0 + Decorate 575(g_tTex1di1a) DescriptorSet 0 + Decorate 664(g_tTex1du1a) DescriptorSet 0 + Decorate 925(g_tBuffI) DescriptorSet 0 + Decorate 1014(g_tBuffU) DescriptorSet 0 + Decorate 1111(Color) Location 0 + Decorate 1117(g_sSamp) DescriptorSet 0 + Decorate 1120(g_tTex1df1) DescriptorSet 0 + Decorate 1123(g_tTex2df1) DescriptorSet 0 + Decorate 1126(g_tTex3df1) DescriptorSet 0 + Decorate 1129(g_tTex1df1a) DescriptorSet 0 + Decorate 1132(g_tTex2df1a) DescriptorSet 0 + Decorate 1135(g_tTex2di1a) DescriptorSet 0 + Decorate 1138(g_tTex2du1a) DescriptorSet 0 + Decorate 1141(g_tBuffF) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeImage 6(int) 1D nonsampled format:R32i + 8: TypePointer UniformConstant 7 + 9(g_tTex1di1): 8(ptr) Variable UniformConstant + 10: TypeInt 32 0 + 11: TypeVector 10(int) 2 + 12: TypeVector 10(int) 3 + 13: TypeVector 6(int) 2 + 14: TypeVector 6(int) 3 + 15($Global): TypeStruct 10(int) 11(ivec2) 12(ivec3) 10(int) 10(int) 6(int) 13(ivec2) 14(ivec3) 6(int) 6(int) + 16: TypePointer Uniform 15($Global) + 17: 16(ptr) Variable Uniform + 18: 6(int) Constant 5 + 19: TypePointer Uniform 6(int) + 22: 6(int) Constant 8 + 25: 10(int) Constant 0 + 26: TypePointer Image 6(int) + 28: 10(int) Constant 1 + 30: TypePointer Function 6(int) + 54: 6(int) Constant 9 + 113: TypeImage 10(int) 1D nonsampled format:R32ui + 114: TypePointer UniformConstant 113 + 115(g_tTex1du1): 114(ptr) Variable UniformConstant + 116: 6(int) Constant 0 + 117: TypePointer Uniform 10(int) + 122: TypePointer Image 10(int) + 125: TypePointer Function 10(int) + 147: 6(int) Constant 3 + 150: 6(int) Constant 4 + 209: TypeImage 6(int) 2D nonsampled format:R32i + 210: TypePointer UniformConstant 209 + 211(g_tTex2di1): 210(ptr) Variable UniformConstant + 212: 6(int) Constant 6 + 213: TypePointer Uniform 13(ivec2) + 300: TypeImage 10(int) 2D nonsampled format:R32ui + 301: TypePointer UniformConstant 300 + 302(g_tTex2du1): 301(ptr) Variable UniformConstant + 303: 6(int) Constant 1 + 304: TypePointer Uniform 11(ivec2) + 391: TypeImage 6(int) 3D nonsampled format:R32i + 392: TypePointer UniformConstant 391 + 393(g_tTex3di1): 392(ptr) Variable UniformConstant + 394: 6(int) Constant 7 + 395: TypePointer Uniform 14(ivec3) + 482: TypeImage 10(int) 3D nonsampled format:R32ui + 483: TypePointer UniformConstant 482 + 484(g_tTex3du1): 483(ptr) Variable UniformConstant + 485: 6(int) Constant 2 + 486: TypePointer Uniform 12(ivec3) + 573: TypeImage 6(int) 1D array nonsampled format:R32i + 574: TypePointer UniformConstant 573 +575(g_tTex1di1a): 574(ptr) Variable UniformConstant + 662: TypeImage 10(int) 1D array nonsampled format:R32ui + 663: TypePointer UniformConstant 662 +664(g_tTex1du1a): 663(ptr) Variable UniformConstant + 923: TypeImage 6(int) Buffer nonsampled format:R32i + 924: TypePointer UniformConstant 923 + 925(g_tBuffI): 924(ptr) Variable UniformConstant + 1012: TypeImage 10(int) Buffer nonsampled format:R32ui + 1013: TypePointer UniformConstant 1012 + 1014(g_tBuffU): 1013(ptr) Variable UniformConstant + 1101: TypeFloat 32 + 1102: TypeVector 1101(float) 4 + 1103(PS_OUTPUT): TypeStruct 1102(fvec4) + 1104: TypePointer Function 1103(PS_OUTPUT) + 1106: 1101(float) Constant 1065353216 + 1107: 1102(fvec4) ConstantComposite 1106 1106 1106 1106 + 1108: TypePointer Function 1102(fvec4) + 1110: TypePointer Output 1102(fvec4) + 1111(Color): 1110(ptr) Variable Output + 1115: TypeSampler + 1116: TypePointer UniformConstant 1115 + 1117(g_sSamp): 1116(ptr) Variable UniformConstant + 1118: TypeImage 1101(float) 1D nonsampled format:R32f + 1119: TypePointer UniformConstant 1118 +1120(g_tTex1df1): 1119(ptr) Variable UniformConstant + 1121: TypeImage 1101(float) 2D nonsampled format:R32f + 1122: TypePointer UniformConstant 1121 +1123(g_tTex2df1): 1122(ptr) Variable UniformConstant + 1124: TypeImage 1101(float) 3D nonsampled format:R32f + 1125: TypePointer UniformConstant 1124 +1126(g_tTex3df1): 1125(ptr) Variable UniformConstant + 1127: TypeImage 1101(float) 1D array nonsampled format:R32f + 1128: TypePointer UniformConstant 1127 +1129(g_tTex1df1a): 1128(ptr) Variable UniformConstant + 1130: TypeImage 1101(float) 2D array nonsampled format:R32f + 1131: TypePointer UniformConstant 1130 +1132(g_tTex2df1a): 1131(ptr) Variable UniformConstant + 1133: TypeImage 6(int) 2D array nonsampled format:R32i + 1134: TypePointer UniformConstant 1133 +1135(g_tTex2di1a): 1134(ptr) Variable UniformConstant + 1136: TypeImage 10(int) 2D array nonsampled format:R32ui + 1137: TypePointer UniformConstant 1136 +1138(g_tTex2du1a): 1137(ptr) Variable UniformConstant + 1139: TypeImage 1101(float) Buffer nonsampled format:R32f + 1140: TypePointer UniformConstant 1139 + 1141(g_tBuffF): 1140(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 31(out_i1): 30(ptr) Variable Function + 126(out_u1): 125(ptr) Variable Function + 1105(psout): 1104(ptr) Variable Function + 20: 19(ptr) AccessChain 17 18 + 21: 6(int) Load 20 + 23: 19(ptr) AccessChain 17 22 + 24: 6(int) Load 23 + 27: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 21 25 + 29: 6(int) AtomicIAdd 27 28 25 24 + 32: 19(ptr) AccessChain 17 18 + 33: 6(int) Load 32 + 34: 19(ptr) AccessChain 17 18 + 35: 6(int) Load 34 + 36: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 33 25 + 37: 6(int) AtomicIAdd 36 28 25 35 + Store 31(out_i1) 37 + 38: 19(ptr) AccessChain 17 18 + 39: 6(int) Load 38 + 40: 19(ptr) AccessChain 17 22 + 41: 6(int) Load 40 + 42: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 39 25 + 43: 6(int) AtomicAnd 42 28 25 41 + 44: 19(ptr) AccessChain 17 18 + 45: 6(int) Load 44 + 46: 19(ptr) AccessChain 17 18 + 47: 6(int) Load 46 + 48: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 45 25 + 49: 6(int) AtomicAnd 48 28 25 47 + Store 31(out_i1) 49 + 50: 19(ptr) AccessChain 17 18 + 51: 6(int) Load 50 + 52: 19(ptr) AccessChain 17 22 + 53: 6(int) Load 52 + 55: 19(ptr) AccessChain 17 54 + 56: 6(int) Load 55 + 57: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 51 25 + 58: 6(int) AtomicCompareExchange 57 28 25 25 56 53 + Store 31(out_i1) 58 + 59: 19(ptr) AccessChain 17 18 + 60: 6(int) Load 59 + 61: 19(ptr) AccessChain 17 18 + 62: 6(int) Load 61 + 63: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 60 25 + 64: 6(int) AtomicExchange 63 28 25 62 + Store 31(out_i1) 64 + 65: 19(ptr) AccessChain 17 18 + 66: 6(int) Load 65 + 67: 19(ptr) AccessChain 17 22 + 68: 6(int) Load 67 + 69: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 66 25 + 70: 6(int) AtomicSMax 69 28 25 68 + 71: 19(ptr) AccessChain 17 18 + 72: 6(int) Load 71 + 73: 19(ptr) AccessChain 17 18 + 74: 6(int) Load 73 + 75: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 72 25 + 76: 6(int) AtomicSMax 75 28 25 74 + Store 31(out_i1) 76 + 77: 19(ptr) AccessChain 17 18 + 78: 6(int) Load 77 + 79: 19(ptr) AccessChain 17 22 + 80: 6(int) Load 79 + 81: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 78 25 + 82: 6(int) AtomicSMin 81 28 25 80 + 83: 19(ptr) AccessChain 17 18 + 84: 6(int) Load 83 + 85: 19(ptr) AccessChain 17 18 + 86: 6(int) Load 85 + 87: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 84 25 + 88: 6(int) AtomicSMin 87 28 25 86 + Store 31(out_i1) 88 + 89: 19(ptr) AccessChain 17 18 + 90: 6(int) Load 89 + 91: 19(ptr) AccessChain 17 22 + 92: 6(int) Load 91 + 93: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 90 25 + 94: 6(int) AtomicOr 93 28 25 92 + 95: 19(ptr) AccessChain 17 18 + 96: 6(int) Load 95 + 97: 19(ptr) AccessChain 17 18 + 98: 6(int) Load 97 + 99: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 96 25 + 100: 6(int) AtomicOr 99 28 25 98 + Store 31(out_i1) 100 + 101: 19(ptr) AccessChain 17 18 + 102: 6(int) Load 101 + 103: 19(ptr) AccessChain 17 22 + 104: 6(int) Load 103 + 105: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 102 25 + 106: 6(int) AtomicXor 105 28 25 104 + 107: 19(ptr) AccessChain 17 18 + 108: 6(int) Load 107 + 109: 19(ptr) AccessChain 17 18 + 110: 6(int) Load 109 + 111: 26(ptr) ImageTexelPointer 9(g_tTex1di1) 108 25 + 112: 6(int) AtomicXor 111 28 25 110 + Store 31(out_i1) 112 + 118: 117(ptr) AccessChain 17 116 + 119: 10(int) Load 118 + 120: 117(ptr) AccessChain 17 116 + 121: 10(int) Load 120 + 123: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 119 25 + 124: 10(int) AtomicIAdd 123 28 25 121 + 127: 117(ptr) AccessChain 17 116 + 128: 10(int) Load 127 + 129: 117(ptr) AccessChain 17 116 + 130: 10(int) Load 129 + 131: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 128 25 + 132: 10(int) AtomicIAdd 131 28 25 130 + Store 126(out_u1) 132 + 133: 117(ptr) AccessChain 17 116 + 134: 10(int) Load 133 + 135: 117(ptr) AccessChain 17 116 + 136: 10(int) Load 135 + 137: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 134 25 + 138: 10(int) AtomicAnd 137 28 25 136 + 139: 117(ptr) AccessChain 17 116 + 140: 10(int) Load 139 + 141: 117(ptr) AccessChain 17 116 + 142: 10(int) Load 141 + 143: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 140 25 + 144: 10(int) AtomicAnd 143 28 25 142 + Store 126(out_u1) 144 + 145: 117(ptr) AccessChain 17 116 + 146: 10(int) Load 145 + 148: 117(ptr) AccessChain 17 147 + 149: 10(int) Load 148 + 151: 117(ptr) AccessChain 17 150 + 152: 10(int) Load 151 + 153: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 146 25 + 154: 10(int) AtomicCompareExchange 153 28 25 25 152 149 + Store 126(out_u1) 154 + 155: 117(ptr) AccessChain 17 116 + 156: 10(int) Load 155 + 157: 117(ptr) AccessChain 17 116 + 158: 10(int) Load 157 + 159: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 156 25 + 160: 10(int) AtomicExchange 159 28 25 158 + Store 126(out_u1) 160 + 161: 117(ptr) AccessChain 17 116 + 162: 10(int) Load 161 + 163: 117(ptr) AccessChain 17 116 + 164: 10(int) Load 163 + 165: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 162 25 + 166: 10(int) AtomicUMax 165 28 25 164 + 167: 117(ptr) AccessChain 17 116 + 168: 10(int) Load 167 + 169: 117(ptr) AccessChain 17 116 + 170: 10(int) Load 169 + 171: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 168 25 + 172: 10(int) AtomicUMax 171 28 25 170 + Store 126(out_u1) 172 + 173: 117(ptr) AccessChain 17 116 + 174: 10(int) Load 173 + 175: 117(ptr) AccessChain 17 116 + 176: 10(int) Load 175 + 177: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 174 25 + 178: 10(int) AtomicUMin 177 28 25 176 + 179: 117(ptr) AccessChain 17 116 + 180: 10(int) Load 179 + 181: 117(ptr) AccessChain 17 116 + 182: 10(int) Load 181 + 183: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 180 25 + 184: 10(int) AtomicUMin 183 28 25 182 + Store 126(out_u1) 184 + 185: 117(ptr) AccessChain 17 116 + 186: 10(int) Load 185 + 187: 117(ptr) AccessChain 17 116 + 188: 10(int) Load 187 + 189: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 186 25 + 190: 10(int) AtomicOr 189 28 25 188 + 191: 117(ptr) AccessChain 17 116 + 192: 10(int) Load 191 + 193: 117(ptr) AccessChain 17 116 + 194: 10(int) Load 193 + 195: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 192 25 + 196: 10(int) AtomicOr 195 28 25 194 + Store 126(out_u1) 196 + 197: 117(ptr) AccessChain 17 116 + 198: 10(int) Load 197 + 199: 117(ptr) AccessChain 17 116 + 200: 10(int) Load 199 + 201: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 198 25 + 202: 10(int) AtomicXor 201 28 25 200 + 203: 117(ptr) AccessChain 17 116 + 204: 10(int) Load 203 + 205: 117(ptr) AccessChain 17 116 + 206: 10(int) Load 205 + 207: 122(ptr) ImageTexelPointer 115(g_tTex1du1) 204 25 + 208: 10(int) AtomicXor 207 28 25 206 + Store 126(out_u1) 208 + 214: 213(ptr) AccessChain 17 212 + 215: 13(ivec2) Load 214 + 216: 19(ptr) AccessChain 17 22 + 217: 6(int) Load 216 + 218: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 215 25 + 219: 6(int) AtomicIAdd 218 28 25 217 + 220: 213(ptr) AccessChain 17 212 + 221: 13(ivec2) Load 220 + 222: 19(ptr) AccessChain 17 18 + 223: 6(int) Load 222 + 224: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 221 25 + 225: 6(int) AtomicIAdd 224 28 25 223 + Store 31(out_i1) 225 + 226: 213(ptr) AccessChain 17 212 + 227: 13(ivec2) Load 226 + 228: 19(ptr) AccessChain 17 22 + 229: 6(int) Load 228 + 230: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 227 25 + 231: 6(int) AtomicAnd 230 28 25 229 + 232: 213(ptr) AccessChain 17 212 + 233: 13(ivec2) Load 232 + 234: 19(ptr) AccessChain 17 18 + 235: 6(int) Load 234 + 236: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 233 25 + 237: 6(int) AtomicAnd 236 28 25 235 + Store 31(out_i1) 237 + 238: 213(ptr) AccessChain 17 212 + 239: 13(ivec2) Load 238 + 240: 19(ptr) AccessChain 17 22 + 241: 6(int) Load 240 + 242: 19(ptr) AccessChain 17 54 + 243: 6(int) Load 242 + 244: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 239 25 + 245: 6(int) AtomicCompareExchange 244 28 25 25 243 241 + Store 31(out_i1) 245 + 246: 213(ptr) AccessChain 17 212 + 247: 13(ivec2) Load 246 + 248: 19(ptr) AccessChain 17 18 + 249: 6(int) Load 248 + 250: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 247 25 + 251: 6(int) AtomicExchange 250 28 25 249 + Store 31(out_i1) 251 + 252: 213(ptr) AccessChain 17 212 + 253: 13(ivec2) Load 252 + 254: 19(ptr) AccessChain 17 22 + 255: 6(int) Load 254 + 256: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 253 25 + 257: 6(int) AtomicSMax 256 28 25 255 + 258: 213(ptr) AccessChain 17 212 + 259: 13(ivec2) Load 258 + 260: 19(ptr) AccessChain 17 18 + 261: 6(int) Load 260 + 262: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 259 25 + 263: 6(int) AtomicSMax 262 28 25 261 + Store 31(out_i1) 263 + 264: 213(ptr) AccessChain 17 212 + 265: 13(ivec2) Load 264 + 266: 19(ptr) AccessChain 17 22 + 267: 6(int) Load 266 + 268: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 265 25 + 269: 6(int) AtomicSMin 268 28 25 267 + 270: 213(ptr) AccessChain 17 212 + 271: 13(ivec2) Load 270 + 272: 19(ptr) AccessChain 17 18 + 273: 6(int) Load 272 + 274: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 271 25 + 275: 6(int) AtomicSMin 274 28 25 273 + Store 31(out_i1) 275 + 276: 213(ptr) AccessChain 17 212 + 277: 13(ivec2) Load 276 + 278: 19(ptr) AccessChain 17 22 + 279: 6(int) Load 278 + 280: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 277 25 + 281: 6(int) AtomicOr 280 28 25 279 + 282: 213(ptr) AccessChain 17 212 + 283: 13(ivec2) Load 282 + 284: 19(ptr) AccessChain 17 18 + 285: 6(int) Load 284 + 286: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 283 25 + 287: 6(int) AtomicOr 286 28 25 285 + Store 31(out_i1) 287 + 288: 213(ptr) AccessChain 17 212 + 289: 13(ivec2) Load 288 + 290: 19(ptr) AccessChain 17 22 + 291: 6(int) Load 290 + 292: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 289 25 + 293: 6(int) AtomicXor 292 28 25 291 + 294: 213(ptr) AccessChain 17 212 + 295: 13(ivec2) Load 294 + 296: 19(ptr) AccessChain 17 18 + 297: 6(int) Load 296 + 298: 26(ptr) ImageTexelPointer 211(g_tTex2di1) 295 25 + 299: 6(int) AtomicXor 298 28 25 297 + Store 31(out_i1) 299 + 305: 304(ptr) AccessChain 17 303 + 306: 11(ivec2) Load 305 + 307: 117(ptr) AccessChain 17 116 + 308: 10(int) Load 307 + 309: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 306 25 + 310: 10(int) AtomicIAdd 309 28 25 308 + 311: 304(ptr) AccessChain 17 303 + 312: 11(ivec2) Load 311 + 313: 117(ptr) AccessChain 17 116 + 314: 10(int) Load 313 + 315: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 312 25 + 316: 10(int) AtomicIAdd 315 28 25 314 + Store 126(out_u1) 316 + 317: 304(ptr) AccessChain 17 303 + 318: 11(ivec2) Load 317 + 319: 117(ptr) AccessChain 17 116 + 320: 10(int) Load 319 + 321: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 318 25 + 322: 10(int) AtomicAnd 321 28 25 320 + 323: 304(ptr) AccessChain 17 303 + 324: 11(ivec2) Load 323 + 325: 117(ptr) AccessChain 17 116 + 326: 10(int) Load 325 + 327: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 324 25 + 328: 10(int) AtomicAnd 327 28 25 326 + Store 126(out_u1) 328 + 329: 304(ptr) AccessChain 17 303 + 330: 11(ivec2) Load 329 + 331: 117(ptr) AccessChain 17 147 + 332: 10(int) Load 331 + 333: 117(ptr) AccessChain 17 150 + 334: 10(int) Load 333 + 335: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 330 25 + 336: 10(int) AtomicCompareExchange 335 28 25 25 334 332 + Store 126(out_u1) 336 + 337: 304(ptr) AccessChain 17 303 + 338: 11(ivec2) Load 337 + 339: 117(ptr) AccessChain 17 116 + 340: 10(int) Load 339 + 341: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 338 25 + 342: 10(int) AtomicExchange 341 28 25 340 + Store 126(out_u1) 342 + 343: 304(ptr) AccessChain 17 303 + 344: 11(ivec2) Load 343 + 345: 117(ptr) AccessChain 17 116 + 346: 10(int) Load 345 + 347: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 344 25 + 348: 10(int) AtomicUMax 347 28 25 346 + 349: 304(ptr) AccessChain 17 303 + 350: 11(ivec2) Load 349 + 351: 117(ptr) AccessChain 17 116 + 352: 10(int) Load 351 + 353: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 350 25 + 354: 10(int) AtomicUMax 353 28 25 352 + Store 126(out_u1) 354 + 355: 304(ptr) AccessChain 17 303 + 356: 11(ivec2) Load 355 + 357: 117(ptr) AccessChain 17 116 + 358: 10(int) Load 357 + 359: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 356 25 + 360: 10(int) AtomicUMin 359 28 25 358 + 361: 304(ptr) AccessChain 17 303 + 362: 11(ivec2) Load 361 + 363: 117(ptr) AccessChain 17 116 + 364: 10(int) Load 363 + 365: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 362 25 + 366: 10(int) AtomicUMin 365 28 25 364 + Store 126(out_u1) 366 + 367: 304(ptr) AccessChain 17 303 + 368: 11(ivec2) Load 367 + 369: 117(ptr) AccessChain 17 116 + 370: 10(int) Load 369 + 371: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 368 25 + 372: 10(int) AtomicOr 371 28 25 370 + 373: 304(ptr) AccessChain 17 303 + 374: 11(ivec2) Load 373 + 375: 117(ptr) AccessChain 17 116 + 376: 10(int) Load 375 + 377: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 374 25 + 378: 10(int) AtomicOr 377 28 25 376 + Store 126(out_u1) 378 + 379: 304(ptr) AccessChain 17 303 + 380: 11(ivec2) Load 379 + 381: 117(ptr) AccessChain 17 116 + 382: 10(int) Load 381 + 383: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 380 25 + 384: 10(int) AtomicXor 383 28 25 382 + 385: 304(ptr) AccessChain 17 303 + 386: 11(ivec2) Load 385 + 387: 117(ptr) AccessChain 17 116 + 388: 10(int) Load 387 + 389: 122(ptr) ImageTexelPointer 302(g_tTex2du1) 386 25 + 390: 10(int) AtomicXor 389 28 25 388 + Store 126(out_u1) 390 + 396: 395(ptr) AccessChain 17 394 + 397: 14(ivec3) Load 396 + 398: 19(ptr) AccessChain 17 22 + 399: 6(int) Load 398 + 400: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 397 25 + 401: 6(int) AtomicIAdd 400 28 25 399 + 402: 395(ptr) AccessChain 17 394 + 403: 14(ivec3) Load 402 + 404: 19(ptr) AccessChain 17 18 + 405: 6(int) Load 404 + 406: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 403 25 + 407: 6(int) AtomicIAdd 406 28 25 405 + Store 31(out_i1) 407 + 408: 395(ptr) AccessChain 17 394 + 409: 14(ivec3) Load 408 + 410: 19(ptr) AccessChain 17 22 + 411: 6(int) Load 410 + 412: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 409 25 + 413: 6(int) AtomicAnd 412 28 25 411 + 414: 395(ptr) AccessChain 17 394 + 415: 14(ivec3) Load 414 + 416: 19(ptr) AccessChain 17 18 + 417: 6(int) Load 416 + 418: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 415 25 + 419: 6(int) AtomicAnd 418 28 25 417 + Store 31(out_i1) 419 + 420: 395(ptr) AccessChain 17 394 + 421: 14(ivec3) Load 420 + 422: 19(ptr) AccessChain 17 22 + 423: 6(int) Load 422 + 424: 19(ptr) AccessChain 17 54 + 425: 6(int) Load 424 + 426: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 421 25 + 427: 6(int) AtomicCompareExchange 426 28 25 25 425 423 + Store 31(out_i1) 427 + 428: 395(ptr) AccessChain 17 394 + 429: 14(ivec3) Load 428 + 430: 19(ptr) AccessChain 17 18 + 431: 6(int) Load 430 + 432: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 429 25 + 433: 6(int) AtomicExchange 432 28 25 431 + Store 31(out_i1) 433 + 434: 395(ptr) AccessChain 17 394 + 435: 14(ivec3) Load 434 + 436: 19(ptr) AccessChain 17 22 + 437: 6(int) Load 436 + 438: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 435 25 + 439: 6(int) AtomicSMax 438 28 25 437 + 440: 395(ptr) AccessChain 17 394 + 441: 14(ivec3) Load 440 + 442: 19(ptr) AccessChain 17 18 + 443: 6(int) Load 442 + 444: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 441 25 + 445: 6(int) AtomicSMax 444 28 25 443 + Store 31(out_i1) 445 + 446: 395(ptr) AccessChain 17 394 + 447: 14(ivec3) Load 446 + 448: 19(ptr) AccessChain 17 22 + 449: 6(int) Load 448 + 450: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 447 25 + 451: 6(int) AtomicSMin 450 28 25 449 + 452: 395(ptr) AccessChain 17 394 + 453: 14(ivec3) Load 452 + 454: 19(ptr) AccessChain 17 18 + 455: 6(int) Load 454 + 456: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 453 25 + 457: 6(int) AtomicSMin 456 28 25 455 + Store 31(out_i1) 457 + 458: 395(ptr) AccessChain 17 394 + 459: 14(ivec3) Load 458 + 460: 19(ptr) AccessChain 17 22 + 461: 6(int) Load 460 + 462: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 459 25 + 463: 6(int) AtomicOr 462 28 25 461 + 464: 395(ptr) AccessChain 17 394 + 465: 14(ivec3) Load 464 + 466: 19(ptr) AccessChain 17 18 + 467: 6(int) Load 466 + 468: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 465 25 + 469: 6(int) AtomicOr 468 28 25 467 + Store 31(out_i1) 469 + 470: 395(ptr) AccessChain 17 394 + 471: 14(ivec3) Load 470 + 472: 19(ptr) AccessChain 17 22 + 473: 6(int) Load 472 + 474: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 471 25 + 475: 6(int) AtomicXor 474 28 25 473 + 476: 395(ptr) AccessChain 17 394 + 477: 14(ivec3) Load 476 + 478: 19(ptr) AccessChain 17 18 + 479: 6(int) Load 478 + 480: 26(ptr) ImageTexelPointer 393(g_tTex3di1) 477 25 + 481: 6(int) AtomicXor 480 28 25 479 + Store 31(out_i1) 481 + 487: 486(ptr) AccessChain 17 485 + 488: 12(ivec3) Load 487 + 489: 117(ptr) AccessChain 17 116 + 490: 10(int) Load 489 + 491: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 488 25 + 492: 10(int) AtomicIAdd 491 28 25 490 + 493: 486(ptr) AccessChain 17 485 + 494: 12(ivec3) Load 493 + 495: 117(ptr) AccessChain 17 116 + 496: 10(int) Load 495 + 497: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 494 25 + 498: 10(int) AtomicIAdd 497 28 25 496 + Store 126(out_u1) 498 + 499: 486(ptr) AccessChain 17 485 + 500: 12(ivec3) Load 499 + 501: 117(ptr) AccessChain 17 116 + 502: 10(int) Load 501 + 503: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 500 25 + 504: 10(int) AtomicAnd 503 28 25 502 + 505: 486(ptr) AccessChain 17 485 + 506: 12(ivec3) Load 505 + 507: 117(ptr) AccessChain 17 116 + 508: 10(int) Load 507 + 509: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 506 25 + 510: 10(int) AtomicAnd 509 28 25 508 + Store 126(out_u1) 510 + 511: 486(ptr) AccessChain 17 485 + 512: 12(ivec3) Load 511 + 513: 117(ptr) AccessChain 17 147 + 514: 10(int) Load 513 + 515: 117(ptr) AccessChain 17 150 + 516: 10(int) Load 515 + 517: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 512 25 + 518: 10(int) AtomicCompareExchange 517 28 25 25 516 514 + Store 126(out_u1) 518 + 519: 486(ptr) AccessChain 17 485 + 520: 12(ivec3) Load 519 + 521: 117(ptr) AccessChain 17 116 + 522: 10(int) Load 521 + 523: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 520 25 + 524: 10(int) AtomicExchange 523 28 25 522 + Store 126(out_u1) 524 + 525: 486(ptr) AccessChain 17 485 + 526: 12(ivec3) Load 525 + 527: 117(ptr) AccessChain 17 116 + 528: 10(int) Load 527 + 529: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 526 25 + 530: 10(int) AtomicUMax 529 28 25 528 + 531: 486(ptr) AccessChain 17 485 + 532: 12(ivec3) Load 531 + 533: 117(ptr) AccessChain 17 116 + 534: 10(int) Load 533 + 535: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 532 25 + 536: 10(int) AtomicUMax 535 28 25 534 + Store 126(out_u1) 536 + 537: 486(ptr) AccessChain 17 485 + 538: 12(ivec3) Load 537 + 539: 117(ptr) AccessChain 17 116 + 540: 10(int) Load 539 + 541: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 538 25 + 542: 10(int) AtomicUMin 541 28 25 540 + 543: 486(ptr) AccessChain 17 485 + 544: 12(ivec3) Load 543 + 545: 117(ptr) AccessChain 17 116 + 546: 10(int) Load 545 + 547: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 544 25 + 548: 10(int) AtomicUMin 547 28 25 546 + Store 126(out_u1) 548 + 549: 486(ptr) AccessChain 17 485 + 550: 12(ivec3) Load 549 + 551: 117(ptr) AccessChain 17 116 + 552: 10(int) Load 551 + 553: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 550 25 + 554: 10(int) AtomicOr 553 28 25 552 + 555: 486(ptr) AccessChain 17 485 + 556: 12(ivec3) Load 555 + 557: 117(ptr) AccessChain 17 116 + 558: 10(int) Load 557 + 559: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 556 25 + 560: 10(int) AtomicOr 559 28 25 558 + Store 126(out_u1) 560 + 561: 486(ptr) AccessChain 17 485 + 562: 12(ivec3) Load 561 + 563: 117(ptr) AccessChain 17 116 + 564: 10(int) Load 563 + 565: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 562 25 + 566: 10(int) AtomicXor 565 28 25 564 + 567: 486(ptr) AccessChain 17 485 + 568: 12(ivec3) Load 567 + 569: 117(ptr) AccessChain 17 116 + 570: 10(int) Load 569 + 571: 122(ptr) ImageTexelPointer 484(g_tTex3du1) 568 25 + 572: 10(int) AtomicXor 571 28 25 570 + Store 126(out_u1) 572 + 576: 213(ptr) AccessChain 17 212 + 577: 13(ivec2) Load 576 + 578: 19(ptr) AccessChain 17 22 + 579: 6(int) Load 578 + 580: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 577 25 + 581: 6(int) AtomicIAdd 580 28 25 579 + 582: 213(ptr) AccessChain 17 212 + 583: 13(ivec2) Load 582 + 584: 19(ptr) AccessChain 17 18 + 585: 6(int) Load 584 + 586: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 583 25 + 587: 6(int) AtomicIAdd 586 28 25 585 + Store 31(out_i1) 587 + 588: 213(ptr) AccessChain 17 212 + 589: 13(ivec2) Load 588 + 590: 19(ptr) AccessChain 17 22 + 591: 6(int) Load 590 + 592: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 589 25 + 593: 6(int) AtomicAnd 592 28 25 591 + 594: 213(ptr) AccessChain 17 212 + 595: 13(ivec2) Load 594 + 596: 19(ptr) AccessChain 17 18 + 597: 6(int) Load 596 + 598: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 595 25 + 599: 6(int) AtomicAnd 598 28 25 597 + Store 31(out_i1) 599 + 600: 213(ptr) AccessChain 17 212 + 601: 13(ivec2) Load 600 + 602: 19(ptr) AccessChain 17 22 + 603: 6(int) Load 602 + 604: 19(ptr) AccessChain 17 54 + 605: 6(int) Load 604 + 606: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 601 25 + 607: 6(int) AtomicCompareExchange 606 28 25 25 605 603 + Store 31(out_i1) 607 + 608: 213(ptr) AccessChain 17 212 + 609: 13(ivec2) Load 608 + 610: 19(ptr) AccessChain 17 18 + 611: 6(int) Load 610 + 612: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 609 25 + 613: 6(int) AtomicExchange 612 28 25 611 + Store 31(out_i1) 613 + 614: 213(ptr) AccessChain 17 212 + 615: 13(ivec2) Load 614 + 616: 19(ptr) AccessChain 17 22 + 617: 6(int) Load 616 + 618: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 615 25 + 619: 6(int) AtomicSMax 618 28 25 617 + 620: 213(ptr) AccessChain 17 212 + 621: 13(ivec2) Load 620 + 622: 19(ptr) AccessChain 17 18 + 623: 6(int) Load 622 + 624: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 621 25 + 625: 6(int) AtomicSMax 624 28 25 623 + Store 31(out_i1) 625 + 626: 213(ptr) AccessChain 17 212 + 627: 13(ivec2) Load 626 + 628: 19(ptr) AccessChain 17 22 + 629: 6(int) Load 628 + 630: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 627 25 + 631: 6(int) AtomicSMin 630 28 25 629 + 632: 213(ptr) AccessChain 17 212 + 633: 13(ivec2) Load 632 + 634: 19(ptr) AccessChain 17 18 + 635: 6(int) Load 634 + 636: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 633 25 + 637: 6(int) AtomicSMin 636 28 25 635 + Store 31(out_i1) 637 + 638: 213(ptr) AccessChain 17 212 + 639: 13(ivec2) Load 638 + 640: 19(ptr) AccessChain 17 22 + 641: 6(int) Load 640 + 642: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 639 25 + 643: 6(int) AtomicOr 642 28 25 641 + 644: 213(ptr) AccessChain 17 212 + 645: 13(ivec2) Load 644 + 646: 19(ptr) AccessChain 17 18 + 647: 6(int) Load 646 + 648: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 645 25 + 649: 6(int) AtomicOr 648 28 25 647 + Store 31(out_i1) 649 + 650: 213(ptr) AccessChain 17 212 + 651: 13(ivec2) Load 650 + 652: 19(ptr) AccessChain 17 22 + 653: 6(int) Load 652 + 654: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 651 25 + 655: 6(int) AtomicXor 654 28 25 653 + 656: 213(ptr) AccessChain 17 212 + 657: 13(ivec2) Load 656 + 658: 19(ptr) AccessChain 17 18 + 659: 6(int) Load 658 + 660: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 657 25 + 661: 6(int) AtomicXor 660 28 25 659 + Store 31(out_i1) 661 + 665: 304(ptr) AccessChain 17 303 + 666: 11(ivec2) Load 665 + 667: 117(ptr) AccessChain 17 116 + 668: 10(int) Load 667 + 669: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 666 25 + 670: 10(int) AtomicIAdd 669 28 25 668 + 671: 304(ptr) AccessChain 17 303 + 672: 11(ivec2) Load 671 + 673: 117(ptr) AccessChain 17 116 + 674: 10(int) Load 673 + 675: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 672 25 + 676: 10(int) AtomicIAdd 675 28 25 674 + Store 126(out_u1) 676 + 677: 304(ptr) AccessChain 17 303 + 678: 11(ivec2) Load 677 + 679: 117(ptr) AccessChain 17 116 + 680: 10(int) Load 679 + 681: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 678 25 + 682: 10(int) AtomicAnd 681 28 25 680 + 683: 304(ptr) AccessChain 17 303 + 684: 11(ivec2) Load 683 + 685: 117(ptr) AccessChain 17 116 + 686: 10(int) Load 685 + 687: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 684 25 + 688: 10(int) AtomicAnd 687 28 25 686 + Store 126(out_u1) 688 + 689: 304(ptr) AccessChain 17 303 + 690: 11(ivec2) Load 689 + 691: 117(ptr) AccessChain 17 147 + 692: 10(int) Load 691 + 693: 117(ptr) AccessChain 17 150 + 694: 10(int) Load 693 + 695: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 690 25 + 696: 10(int) AtomicCompareExchange 695 28 25 25 694 692 + Store 126(out_u1) 696 + 697: 304(ptr) AccessChain 17 303 + 698: 11(ivec2) Load 697 + 699: 117(ptr) AccessChain 17 116 + 700: 10(int) Load 699 + 701: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 698 25 + 702: 10(int) AtomicExchange 701 28 25 700 + Store 126(out_u1) 702 + 703: 304(ptr) AccessChain 17 303 + 704: 11(ivec2) Load 703 + 705: 117(ptr) AccessChain 17 116 + 706: 10(int) Load 705 + 707: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 704 25 + 708: 10(int) AtomicUMax 707 28 25 706 + 709: 304(ptr) AccessChain 17 303 + 710: 11(ivec2) Load 709 + 711: 117(ptr) AccessChain 17 116 + 712: 10(int) Load 711 + 713: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 710 25 + 714: 10(int) AtomicUMax 713 28 25 712 + Store 126(out_u1) 714 + 715: 304(ptr) AccessChain 17 303 + 716: 11(ivec2) Load 715 + 717: 117(ptr) AccessChain 17 116 + 718: 10(int) Load 717 + 719: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 716 25 + 720: 10(int) AtomicUMin 719 28 25 718 + 721: 304(ptr) AccessChain 17 303 + 722: 11(ivec2) Load 721 + 723: 117(ptr) AccessChain 17 116 + 724: 10(int) Load 723 + 725: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 722 25 + 726: 10(int) AtomicUMin 725 28 25 724 + Store 126(out_u1) 726 + 727: 304(ptr) AccessChain 17 303 + 728: 11(ivec2) Load 727 + 729: 117(ptr) AccessChain 17 116 + 730: 10(int) Load 729 + 731: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 728 25 + 732: 10(int) AtomicOr 731 28 25 730 + 733: 304(ptr) AccessChain 17 303 + 734: 11(ivec2) Load 733 + 735: 117(ptr) AccessChain 17 116 + 736: 10(int) Load 735 + 737: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 734 25 + 738: 10(int) AtomicOr 737 28 25 736 + Store 126(out_u1) 738 + 739: 304(ptr) AccessChain 17 303 + 740: 11(ivec2) Load 739 + 741: 117(ptr) AccessChain 17 116 + 742: 10(int) Load 741 + 743: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 740 25 + 744: 10(int) AtomicXor 743 28 25 742 + 745: 304(ptr) AccessChain 17 303 + 746: 11(ivec2) Load 745 + 747: 117(ptr) AccessChain 17 116 + 748: 10(int) Load 747 + 749: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 746 25 + 750: 10(int) AtomicXor 749 28 25 748 + Store 126(out_u1) 750 + 751: 213(ptr) AccessChain 17 212 + 752: 13(ivec2) Load 751 + 753: 19(ptr) AccessChain 17 22 + 754: 6(int) Load 753 + 755: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 752 25 + 756: 6(int) AtomicIAdd 755 28 25 754 + 757: 213(ptr) AccessChain 17 212 + 758: 13(ivec2) Load 757 + 759: 19(ptr) AccessChain 17 18 + 760: 6(int) Load 759 + 761: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 758 25 + 762: 6(int) AtomicIAdd 761 28 25 760 + Store 31(out_i1) 762 + 763: 213(ptr) AccessChain 17 212 + 764: 13(ivec2) Load 763 + 765: 19(ptr) AccessChain 17 22 + 766: 6(int) Load 765 + 767: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 764 25 + 768: 6(int) AtomicAnd 767 28 25 766 + 769: 213(ptr) AccessChain 17 212 + 770: 13(ivec2) Load 769 + 771: 19(ptr) AccessChain 17 18 + 772: 6(int) Load 771 + 773: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 770 25 + 774: 6(int) AtomicAnd 773 28 25 772 + Store 31(out_i1) 774 + 775: 213(ptr) AccessChain 17 212 + 776: 13(ivec2) Load 775 + 777: 19(ptr) AccessChain 17 22 + 778: 6(int) Load 777 + 779: 19(ptr) AccessChain 17 54 + 780: 6(int) Load 779 + 781: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 776 25 + 782: 6(int) AtomicCompareExchange 781 28 25 25 780 778 + Store 31(out_i1) 782 + 783: 213(ptr) AccessChain 17 212 + 784: 13(ivec2) Load 783 + 785: 19(ptr) AccessChain 17 18 + 786: 6(int) Load 785 + 787: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 784 25 + 788: 6(int) AtomicExchange 787 28 25 786 + Store 31(out_i1) 788 + 789: 213(ptr) AccessChain 17 212 + 790: 13(ivec2) Load 789 + 791: 19(ptr) AccessChain 17 22 + 792: 6(int) Load 791 + 793: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 790 25 + 794: 6(int) AtomicSMax 793 28 25 792 + 795: 213(ptr) AccessChain 17 212 + 796: 13(ivec2) Load 795 + 797: 19(ptr) AccessChain 17 18 + 798: 6(int) Load 797 + 799: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 796 25 + 800: 6(int) AtomicSMax 799 28 25 798 + Store 31(out_i1) 800 + 801: 213(ptr) AccessChain 17 212 + 802: 13(ivec2) Load 801 + 803: 19(ptr) AccessChain 17 22 + 804: 6(int) Load 803 + 805: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 802 25 + 806: 6(int) AtomicSMin 805 28 25 804 + 807: 213(ptr) AccessChain 17 212 + 808: 13(ivec2) Load 807 + 809: 19(ptr) AccessChain 17 18 + 810: 6(int) Load 809 + 811: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 808 25 + 812: 6(int) AtomicSMin 811 28 25 810 + Store 31(out_i1) 812 + 813: 213(ptr) AccessChain 17 212 + 814: 13(ivec2) Load 813 + 815: 19(ptr) AccessChain 17 22 + 816: 6(int) Load 815 + 817: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 814 25 + 818: 6(int) AtomicOr 817 28 25 816 + 819: 213(ptr) AccessChain 17 212 + 820: 13(ivec2) Load 819 + 821: 19(ptr) AccessChain 17 18 + 822: 6(int) Load 821 + 823: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 820 25 + 824: 6(int) AtomicOr 823 28 25 822 + Store 31(out_i1) 824 + 825: 213(ptr) AccessChain 17 212 + 826: 13(ivec2) Load 825 + 827: 19(ptr) AccessChain 17 22 + 828: 6(int) Load 827 + 829: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 826 25 + 830: 6(int) AtomicXor 829 28 25 828 + 831: 213(ptr) AccessChain 17 212 + 832: 13(ivec2) Load 831 + 833: 19(ptr) AccessChain 17 18 + 834: 6(int) Load 833 + 835: 26(ptr) ImageTexelPointer 575(g_tTex1di1a) 832 25 + 836: 6(int) AtomicXor 835 28 25 834 + Store 31(out_i1) 836 + 837: 304(ptr) AccessChain 17 303 + 838: 11(ivec2) Load 837 + 839: 117(ptr) AccessChain 17 116 + 840: 10(int) Load 839 + 841: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 838 25 + 842: 10(int) AtomicIAdd 841 28 25 840 + 843: 304(ptr) AccessChain 17 303 + 844: 11(ivec2) Load 843 + 845: 117(ptr) AccessChain 17 116 + 846: 10(int) Load 845 + 847: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 844 25 + 848: 10(int) AtomicIAdd 847 28 25 846 + Store 126(out_u1) 848 + 849: 304(ptr) AccessChain 17 303 + 850: 11(ivec2) Load 849 + 851: 117(ptr) AccessChain 17 116 + 852: 10(int) Load 851 + 853: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 850 25 + 854: 10(int) AtomicAnd 853 28 25 852 + 855: 304(ptr) AccessChain 17 303 + 856: 11(ivec2) Load 855 + 857: 117(ptr) AccessChain 17 116 + 858: 10(int) Load 857 + 859: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 856 25 + 860: 10(int) AtomicAnd 859 28 25 858 + Store 126(out_u1) 860 + 861: 304(ptr) AccessChain 17 303 + 862: 11(ivec2) Load 861 + 863: 117(ptr) AccessChain 17 147 + 864: 10(int) Load 863 + 865: 117(ptr) AccessChain 17 150 + 866: 10(int) Load 865 + 867: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 862 25 + 868: 10(int) AtomicCompareExchange 867 28 25 25 866 864 + Store 126(out_u1) 868 + 869: 304(ptr) AccessChain 17 303 + 870: 11(ivec2) Load 869 + 871: 117(ptr) AccessChain 17 116 + 872: 10(int) Load 871 + 873: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 870 25 + 874: 10(int) AtomicExchange 873 28 25 872 + Store 126(out_u1) 874 + 875: 304(ptr) AccessChain 17 303 + 876: 11(ivec2) Load 875 + 877: 117(ptr) AccessChain 17 116 + 878: 10(int) Load 877 + 879: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 876 25 + 880: 10(int) AtomicUMax 879 28 25 878 + 881: 304(ptr) AccessChain 17 303 + 882: 11(ivec2) Load 881 + 883: 117(ptr) AccessChain 17 116 + 884: 10(int) Load 883 + 885: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 882 25 + 886: 10(int) AtomicUMax 885 28 25 884 + Store 126(out_u1) 886 + 887: 304(ptr) AccessChain 17 303 + 888: 11(ivec2) Load 887 + 889: 117(ptr) AccessChain 17 116 + 890: 10(int) Load 889 + 891: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 888 25 + 892: 10(int) AtomicUMin 891 28 25 890 + 893: 304(ptr) AccessChain 17 303 + 894: 11(ivec2) Load 893 + 895: 117(ptr) AccessChain 17 116 + 896: 10(int) Load 895 + 897: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 894 25 + 898: 10(int) AtomicUMin 897 28 25 896 + Store 126(out_u1) 898 + 899: 304(ptr) AccessChain 17 303 + 900: 11(ivec2) Load 899 + 901: 117(ptr) AccessChain 17 116 + 902: 10(int) Load 901 + 903: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 900 25 + 904: 10(int) AtomicOr 903 28 25 902 + 905: 304(ptr) AccessChain 17 303 + 906: 11(ivec2) Load 905 + 907: 117(ptr) AccessChain 17 116 + 908: 10(int) Load 907 + 909: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 906 25 + 910: 10(int) AtomicOr 909 28 25 908 + Store 126(out_u1) 910 + 911: 304(ptr) AccessChain 17 303 + 912: 11(ivec2) Load 911 + 913: 117(ptr) AccessChain 17 116 + 914: 10(int) Load 913 + 915: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 912 25 + 916: 10(int) AtomicXor 915 28 25 914 + 917: 304(ptr) AccessChain 17 303 + 918: 11(ivec2) Load 917 + 919: 117(ptr) AccessChain 17 116 + 920: 10(int) Load 919 + 921: 122(ptr) ImageTexelPointer 664(g_tTex1du1a) 918 25 + 922: 10(int) AtomicXor 921 28 25 920 + Store 126(out_u1) 922 + 926: 19(ptr) AccessChain 17 18 + 927: 6(int) Load 926 + 928: 19(ptr) AccessChain 17 22 + 929: 6(int) Load 928 + 930: 26(ptr) ImageTexelPointer 925(g_tBuffI) 927 25 + 931: 6(int) AtomicIAdd 930 28 25 929 + 932: 19(ptr) AccessChain 17 18 + 933: 6(int) Load 932 + 934: 19(ptr) AccessChain 17 18 + 935: 6(int) Load 934 + 936: 26(ptr) ImageTexelPointer 925(g_tBuffI) 933 25 + 937: 6(int) AtomicIAdd 936 28 25 935 + Store 31(out_i1) 937 + 938: 19(ptr) AccessChain 17 18 + 939: 6(int) Load 938 + 940: 19(ptr) AccessChain 17 22 + 941: 6(int) Load 940 + 942: 26(ptr) ImageTexelPointer 925(g_tBuffI) 939 25 + 943: 6(int) AtomicAnd 942 28 25 941 + 944: 19(ptr) AccessChain 17 18 + 945: 6(int) Load 944 + 946: 19(ptr) AccessChain 17 18 + 947: 6(int) Load 946 + 948: 26(ptr) ImageTexelPointer 925(g_tBuffI) 945 25 + 949: 6(int) AtomicAnd 948 28 25 947 + Store 31(out_i1) 949 + 950: 19(ptr) AccessChain 17 18 + 951: 6(int) Load 950 + 952: 19(ptr) AccessChain 17 22 + 953: 6(int) Load 952 + 954: 19(ptr) AccessChain 17 54 + 955: 6(int) Load 954 + 956: 26(ptr) ImageTexelPointer 925(g_tBuffI) 951 25 + 957: 6(int) AtomicCompareExchange 956 28 25 25 955 953 + Store 31(out_i1) 957 + 958: 19(ptr) AccessChain 17 18 + 959: 6(int) Load 958 + 960: 19(ptr) AccessChain 17 18 + 961: 6(int) Load 960 + 962: 26(ptr) ImageTexelPointer 925(g_tBuffI) 959 25 + 963: 6(int) AtomicExchange 962 28 25 961 + Store 31(out_i1) 963 + 964: 19(ptr) AccessChain 17 18 + 965: 6(int) Load 964 + 966: 19(ptr) AccessChain 17 22 + 967: 6(int) Load 966 + 968: 26(ptr) ImageTexelPointer 925(g_tBuffI) 965 25 + 969: 6(int) AtomicSMax 968 28 25 967 + 970: 19(ptr) AccessChain 17 18 + 971: 6(int) Load 970 + 972: 19(ptr) AccessChain 17 18 + 973: 6(int) Load 972 + 974: 26(ptr) ImageTexelPointer 925(g_tBuffI) 971 25 + 975: 6(int) AtomicSMax 974 28 25 973 + Store 31(out_i1) 975 + 976: 19(ptr) AccessChain 17 18 + 977: 6(int) Load 976 + 978: 19(ptr) AccessChain 17 22 + 979: 6(int) Load 978 + 980: 26(ptr) ImageTexelPointer 925(g_tBuffI) 977 25 + 981: 6(int) AtomicSMin 980 28 25 979 + 982: 19(ptr) AccessChain 17 18 + 983: 6(int) Load 982 + 984: 19(ptr) AccessChain 17 18 + 985: 6(int) Load 984 + 986: 26(ptr) ImageTexelPointer 925(g_tBuffI) 983 25 + 987: 6(int) AtomicSMin 986 28 25 985 + Store 31(out_i1) 987 + 988: 19(ptr) AccessChain 17 18 + 989: 6(int) Load 988 + 990: 19(ptr) AccessChain 17 22 + 991: 6(int) Load 990 + 992: 26(ptr) ImageTexelPointer 925(g_tBuffI) 989 25 + 993: 6(int) AtomicOr 992 28 25 991 + 994: 19(ptr) AccessChain 17 18 + 995: 6(int) Load 994 + 996: 19(ptr) AccessChain 17 18 + 997: 6(int) Load 996 + 998: 26(ptr) ImageTexelPointer 925(g_tBuffI) 995 25 + 999: 6(int) AtomicOr 998 28 25 997 + Store 31(out_i1) 999 + 1000: 19(ptr) AccessChain 17 18 + 1001: 6(int) Load 1000 + 1002: 19(ptr) AccessChain 17 22 + 1003: 6(int) Load 1002 + 1004: 26(ptr) ImageTexelPointer 925(g_tBuffI) 1001 25 + 1005: 6(int) AtomicXor 1004 28 25 1003 + 1006: 19(ptr) AccessChain 17 18 + 1007: 6(int) Load 1006 + 1008: 19(ptr) AccessChain 17 18 + 1009: 6(int) Load 1008 + 1010: 26(ptr) ImageTexelPointer 925(g_tBuffI) 1007 25 + 1011: 6(int) AtomicXor 1010 28 25 1009 + Store 31(out_i1) 1011 + 1015: 117(ptr) AccessChain 17 116 + 1016: 10(int) Load 1015 + 1017: 117(ptr) AccessChain 17 116 + 1018: 10(int) Load 1017 + 1019: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1016 25 + 1020: 10(int) AtomicIAdd 1019 28 25 1018 + 1021: 117(ptr) AccessChain 17 116 + 1022: 10(int) Load 1021 + 1023: 117(ptr) AccessChain 17 116 + 1024: 10(int) Load 1023 + 1025: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1022 25 + 1026: 10(int) AtomicIAdd 1025 28 25 1024 + Store 126(out_u1) 1026 + 1027: 117(ptr) AccessChain 17 116 + 1028: 10(int) Load 1027 + 1029: 117(ptr) AccessChain 17 116 + 1030: 10(int) Load 1029 + 1031: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1028 25 + 1032: 10(int) AtomicAnd 1031 28 25 1030 + 1033: 117(ptr) AccessChain 17 116 + 1034: 10(int) Load 1033 + 1035: 117(ptr) AccessChain 17 116 + 1036: 10(int) Load 1035 + 1037: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1034 25 + 1038: 10(int) AtomicAnd 1037 28 25 1036 + Store 126(out_u1) 1038 + 1039: 117(ptr) AccessChain 17 116 + 1040: 10(int) Load 1039 + 1041: 117(ptr) AccessChain 17 147 + 1042: 10(int) Load 1041 + 1043: 117(ptr) AccessChain 17 150 + 1044: 10(int) Load 1043 + 1045: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1040 25 + 1046: 10(int) AtomicCompareExchange 1045 28 25 25 1044 1042 + Store 126(out_u1) 1046 + 1047: 117(ptr) AccessChain 17 116 + 1048: 10(int) Load 1047 + 1049: 117(ptr) AccessChain 17 116 + 1050: 10(int) Load 1049 + 1051: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1048 25 + 1052: 10(int) AtomicExchange 1051 28 25 1050 + Store 126(out_u1) 1052 + 1053: 117(ptr) AccessChain 17 116 + 1054: 10(int) Load 1053 + 1055: 117(ptr) AccessChain 17 116 + 1056: 10(int) Load 1055 + 1057: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1054 25 + 1058: 10(int) AtomicUMax 1057 28 25 1056 + 1059: 117(ptr) AccessChain 17 116 + 1060: 10(int) Load 1059 + 1061: 117(ptr) AccessChain 17 116 + 1062: 10(int) Load 1061 + 1063: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1060 25 + 1064: 10(int) AtomicUMax 1063 28 25 1062 + Store 126(out_u1) 1064 + 1065: 117(ptr) AccessChain 17 116 + 1066: 10(int) Load 1065 + 1067: 117(ptr) AccessChain 17 116 + 1068: 10(int) Load 1067 + 1069: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1066 25 + 1070: 10(int) AtomicUMin 1069 28 25 1068 + 1071: 117(ptr) AccessChain 17 116 + 1072: 10(int) Load 1071 + 1073: 117(ptr) AccessChain 17 116 + 1074: 10(int) Load 1073 + 1075: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1072 25 + 1076: 10(int) AtomicUMin 1075 28 25 1074 + Store 126(out_u1) 1076 + 1077: 117(ptr) AccessChain 17 116 + 1078: 10(int) Load 1077 + 1079: 117(ptr) AccessChain 17 116 + 1080: 10(int) Load 1079 + 1081: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1078 25 + 1082: 10(int) AtomicOr 1081 28 25 1080 + 1083: 117(ptr) AccessChain 17 116 + 1084: 10(int) Load 1083 + 1085: 117(ptr) AccessChain 17 116 + 1086: 10(int) Load 1085 + 1087: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1084 25 + 1088: 10(int) AtomicOr 1087 28 25 1086 + Store 126(out_u1) 1088 + 1089: 117(ptr) AccessChain 17 116 + 1090: 10(int) Load 1089 + 1091: 117(ptr) AccessChain 17 116 + 1092: 10(int) Load 1091 + 1093: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1090 25 + 1094: 10(int) AtomicXor 1093 28 25 1092 + 1095: 117(ptr) AccessChain 17 116 + 1096: 10(int) Load 1095 + 1097: 117(ptr) AccessChain 17 116 + 1098: 10(int) Load 1097 + 1099: 122(ptr) ImageTexelPointer 1014(g_tBuffU) 1096 25 + 1100: 10(int) AtomicXor 1099 28 25 1098 + Store 126(out_u1) 1100 + 1109: 1108(ptr) AccessChain 1105(psout) 116 + Store 1109 1107 + 1112: 1108(ptr) AccessChain 1105(psout) 116 + 1113: 1102(fvec4) Load 1112 + Store 1111(Color) 1113 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out new file mode 100644 index 00000000..c6e3c89e --- /dev/null +++ b/Test/baseResults/hlsl.rw.bracket.frag.out @@ -0,0 +1,2651 @@ +hlsl.rw.bracket.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:42 Function Definition: Fn1(vi4; (temp 4-component vector of int) +0:42 Function Parameters: +0:42 'x' (in 4-component vector of int) +0:? Sequence +0:42 Branch: Return with expression +0:42 'x' (in 4-component vector of int) +0:43 Function Definition: Fn1(vu4; (temp 4-component vector of uint) +0:43 Function Parameters: +0:43 'x' (in 4-component vector of uint) +0:? Sequence +0:43 Branch: Return with expression +0:43 'x' (in 4-component vector of uint) +0:44 Function Definition: Fn1(vf4; (temp 4-component vector of float) +0:44 Function Parameters: +0:44 'x' (in 4-component vector of float) +0:? Sequence +0:44 Branch: Return with expression +0:44 'x' (in 4-component vector of float) +0:46 Function Definition: Fn2(vi4; (temp void) +0:46 Function Parameters: +0:46 'x' (out 4-component vector of int) +0:? Sequence +0:46 move second child to first child (temp 4-component vector of int) +0:46 'x' (out 4-component vector of int) +0:46 Constant: +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:47 Function Definition: Fn2(vu4; (temp void) +0:47 Function Parameters: +0:47 'x' (out 4-component vector of uint) +0:? Sequence +0:47 move second child to first child (temp 4-component vector of uint) +0:47 'x' (out 4-component vector of uint) +0:47 Constant: +0:47 0 (const uint) +0:47 0 (const uint) +0:47 0 (const uint) +0:47 0 (const uint) +0:48 Function Definition: Fn2(vf4; (temp void) +0:48 Function Parameters: +0:48 'x' (out 4-component vector of float) +0:? Sequence +0:48 move second child to first child (temp 4-component vector of float) +0:48 'x' (out 4-component vector of float) +0:48 Constant: +0:48 0.000000 +0:48 0.000000 +0:48 0.000000 +0:48 0.000000 +0:50 Function Definition: SomeValue( (temp 4-component vector of float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp 4-component vector of float) +0:50 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:50 Constant: +0:50 3 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp 4-component vector of float) +0:57 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp 4-component vector of float) +0:59 'r00' (temp 4-component vector of float) +0:59 imageLoad (temp 4-component vector of float) +0:59 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:59 Constant: +0:59 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp 4-component vector of int) +0:60 'r01' (temp 4-component vector of int) +0:60 imageLoad (temp 4-component vector of int) +0:60 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:60 Constant: +0:60 0 (const uint) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of uint) +0:61 'r02' (temp 4-component vector of uint) +0:61 imageLoad (temp 4-component vector of uint) +0:61 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:61 Constant: +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp 4-component vector of float) +0:64 'r10' (temp 4-component vector of float) +0:64 imageLoad (temp 4-component vector of float) +0:64 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:64 Constant: +0:64 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp 4-component vector of int) +0:65 'r11' (temp 4-component vector of int) +0:65 imageLoad (temp 4-component vector of int) +0:65 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:65 Constant: +0:65 1 (const uint) +0:66 Sequence +0:66 move second child to first child (temp 4-component vector of uint) +0:66 'r12' (temp 4-component vector of uint) +0:66 imageLoad (temp 4-component vector of uint) +0:66 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:66 Constant: +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp 4-component vector of float) +0:69 'r20' (temp 4-component vector of float) +0:69 imageLoad (temp 4-component vector of float) +0:69 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp 4-component vector of int) +0:70 'r21' (temp 4-component vector of int) +0:70 imageLoad (temp 4-component vector of int) +0:70 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp 4-component vector of uint) +0:71 'r22' (temp 4-component vector of uint) +0:71 imageLoad (temp 4-component vector of uint) +0:71 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp 4-component vector of float) +0:73 'lf4' (temp 4-component vector of float) +0:73 uf4: direct index for structure (layout(offset=96 ) uniform 4-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp 4-component vector of float) +0:77 'storeTemp' (temp 4-component vector of float) +0:77 Function Call: SomeValue( (temp 4-component vector of float) +0:77 imageStore (temp void) +0:77 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp 4-component vector of float) +0:77 'storeTemp' (temp 4-component vector of float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf4' (temp 4-component vector of float) +0:78 'lf4' (temp 4-component vector of float) +0:79 Sequence +0:79 move second child to first child (temp 4-component vector of int) +0:79 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 2 (const int) +0:? 2 (const int) +0:? 3 (const int) +0:? 4 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp 4-component vector of int) +0:79 'storeTemp' (temp 4-component vector of int) +0:80 Sequence +0:80 move second child to first child (temp 4-component vector of uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 3 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:83 Sequence +0:83 move second child to first child (temp 4-component vector of float) +0:83 'val1' (temp 4-component vector of float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 imageLoad (temp 4-component vector of float) +0:83 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 vector scale second child into first child (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 imageLoad (temp 4-component vector of float) +0:84 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 imageLoad (temp 4-component vector of float) +0:85 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:87 Constant: +0:87 0 (const uint) +0:87 move second child to first child (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 imageLoad (temp 4-component vector of int) +0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:88 Constant: +0:88 0 (const uint) +0:88 move second child to first child (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 imageLoad (temp 4-component vector of int) +0:88 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 imageLoad (temp 4-component vector of int) +0:89 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 imageLoad (temp 4-component vector of int) +0:90 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 imageLoad (temp 4-component vector of int) +0:91 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 imageLoad (temp 4-component vector of int) +0:92 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:95 Sequence +0:95 move second child to first child (temp 4-component vector of float) +0:95 'storeTemp' (temp 4-component vector of float) +0:95 Function Call: SomeValue( (temp 4-component vector of float) +0:95 imageStore (temp void) +0:95 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp 4-component vector of float) +0:95 'storeTemp' (temp 4-component vector of float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf4' (temp 4-component vector of float) +0:96 'lf4' (temp 4-component vector of float) +0:97 Sequence +0:97 move second child to first child (temp 4-component vector of int) +0:97 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 5 (const int) +0:? 2 (const int) +0:? 3 (const int) +0:? 4 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp 4-component vector of int) +0:97 'storeTemp' (temp 4-component vector of int) +0:98 Sequence +0:98 move second child to first child (temp 4-component vector of uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 6 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:101 Sequence +0:101 move second child to first child (temp 4-component vector of float) +0:101 'storeTemp' (temp 4-component vector of float) +0:101 Function Call: SomeValue( (temp 4-component vector of float) +0:101 imageStore (temp void) +0:101 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp 4-component vector of float) +0:101 'storeTemp' (temp 4-component vector of float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf4' (temp 4-component vector of float) +0:102 'lf4' (temp 4-component vector of float) +0:103 Sequence +0:103 move second child to first child (temp 4-component vector of int) +0:103 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 8 (const int) +0:? 6 (const int) +0:? 7 (const int) +0:? 8 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp 4-component vector of int) +0:103 'storeTemp' (temp 4-component vector of int) +0:104 Sequence +0:104 move second child to first child (temp 4-component vector of uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 9 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:107 Function Call: Fn1(vf4; (temp 4-component vector of float) +0:107 imageLoad (temp 4-component vector of float) +0:107 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(vi4; (temp 4-component vector of int) +0:108 imageLoad (temp 4-component vector of int) +0:108 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(vu4; (temp 4-component vector of uint) +0:109 imageLoad (temp 4-component vector of uint) +0:109 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(vf4; (temp void) +0:111 'tempArg' (temp 4-component vector of float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp 4-component vector of float) +0:111 'tempArg' (temp 4-component vector of float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(vi4; (temp void) +0:112 'tempArg' (temp 4-component vector of int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp 4-component vector of int) +0:112 'tempArg' (temp 4-component vector of int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(vu4; (temp void) +0:113 'tempArg' (temp 4-component vector of uint) +0:113 Sequence +0:113 imageStore (temp void) +0:113 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:113 Constant: +0:113 0 (const uint) +0:113 'tempArg' (temp 4-component vector of uint) +0:113 'tempArg' (temp 4-component vector of uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 imageLoad (temp 4-component vector of float) +0:117 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 imageStore (temp void) +0:117 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 imageLoad (temp 4-component vector of int) +0:118 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 imageStore (temp void) +0:118 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 imageLoad (temp 4-component vector of uint) +0:119 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 imageLoad (temp 4-component vector of float) +0:121 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 imageStore (temp void) +0:121 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 imageLoad (temp 4-component vector of int) +0:122 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 imageStore (temp void) +0:122 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 imageLoad (temp 4-component vector of uint) +0:123 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:126 imageLoad (temp 4-component vector of float) +0:126 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp 4-component vector of float) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:126 Post-Increment (temp 4-component vector of float) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 imageStore (temp void) +0:126 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:127 imageLoad (temp 4-component vector of uint) +0:127 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp 4-component vector of uint) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:127 Post-Decrement (temp 4-component vector of uint) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:128 imageLoad (temp 4-component vector of int) +0:128 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp 4-component vector of int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:128 Post-Increment (temp 4-component vector of int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 imageStore (temp void) +0:128 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:130 imageLoad (temp 4-component vector of float) +0:130 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp 4-component vector of float) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:130 Post-Decrement (temp 4-component vector of float) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 imageStore (temp void) +0:130 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:131 imageLoad (temp 4-component vector of int) +0:131 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp 4-component vector of int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:131 Post-Increment (temp 4-component vector of int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 imageStore (temp void) +0:131 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:132 imageLoad (temp 4-component vector of uint) +0:132 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp 4-component vector of uint) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:132 Post-Decrement (temp 4-component vector of uint) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:135 Sequence +0:135 move second child to first child (temp 4-component vector of float) +0:135 'storeTemp' (temp 4-component vector of float) +0:? imageLoad (temp 4-component vector of float) +0:135 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp 4-component vector of float) +0:135 'storeTemp' (temp 4-component vector of float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +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:42 Function Definition: Fn1(vi4; (temp 4-component vector of int) +0:42 Function Parameters: +0:42 'x' (in 4-component vector of int) +0:? Sequence +0:42 Branch: Return with expression +0:42 'x' (in 4-component vector of int) +0:43 Function Definition: Fn1(vu4; (temp 4-component vector of uint) +0:43 Function Parameters: +0:43 'x' (in 4-component vector of uint) +0:? Sequence +0:43 Branch: Return with expression +0:43 'x' (in 4-component vector of uint) +0:44 Function Definition: Fn1(vf4; (temp 4-component vector of float) +0:44 Function Parameters: +0:44 'x' (in 4-component vector of float) +0:? Sequence +0:44 Branch: Return with expression +0:44 'x' (in 4-component vector of float) +0:46 Function Definition: Fn2(vi4; (temp void) +0:46 Function Parameters: +0:46 'x' (out 4-component vector of int) +0:? Sequence +0:46 move second child to first child (temp 4-component vector of int) +0:46 'x' (out 4-component vector of int) +0:46 Constant: +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:47 Function Definition: Fn2(vu4; (temp void) +0:47 Function Parameters: +0:47 'x' (out 4-component vector of uint) +0:? Sequence +0:47 move second child to first child (temp 4-component vector of uint) +0:47 'x' (out 4-component vector of uint) +0:47 Constant: +0:47 0 (const uint) +0:47 0 (const uint) +0:47 0 (const uint) +0:47 0 (const uint) +0:48 Function Definition: Fn2(vf4; (temp void) +0:48 Function Parameters: +0:48 'x' (out 4-component vector of float) +0:? Sequence +0:48 move second child to first child (temp 4-component vector of float) +0:48 'x' (out 4-component vector of float) +0:48 Constant: +0:48 0.000000 +0:48 0.000000 +0:48 0.000000 +0:48 0.000000 +0:50 Function Definition: SomeValue( (temp 4-component vector of float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp 4-component vector of float) +0:50 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:50 Constant: +0:50 3 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp 4-component vector of float) +0:57 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp 4-component vector of float) +0:59 'r00' (temp 4-component vector of float) +0:59 imageLoad (temp 4-component vector of float) +0:59 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:59 Constant: +0:59 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp 4-component vector of int) +0:60 'r01' (temp 4-component vector of int) +0:60 imageLoad (temp 4-component vector of int) +0:60 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:60 Constant: +0:60 0 (const uint) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of uint) +0:61 'r02' (temp 4-component vector of uint) +0:61 imageLoad (temp 4-component vector of uint) +0:61 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:61 Constant: +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp 4-component vector of float) +0:64 'r10' (temp 4-component vector of float) +0:64 imageLoad (temp 4-component vector of float) +0:64 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:64 Constant: +0:64 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp 4-component vector of int) +0:65 'r11' (temp 4-component vector of int) +0:65 imageLoad (temp 4-component vector of int) +0:65 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:65 Constant: +0:65 1 (const uint) +0:66 Sequence +0:66 move second child to first child (temp 4-component vector of uint) +0:66 'r12' (temp 4-component vector of uint) +0:66 imageLoad (temp 4-component vector of uint) +0:66 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:66 Constant: +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp 4-component vector of float) +0:69 'r20' (temp 4-component vector of float) +0:69 imageLoad (temp 4-component vector of float) +0:69 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp 4-component vector of int) +0:70 'r21' (temp 4-component vector of int) +0:70 imageLoad (temp 4-component vector of int) +0:70 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp 4-component vector of uint) +0:71 'r22' (temp 4-component vector of uint) +0:71 imageLoad (temp 4-component vector of uint) +0:71 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp 4-component vector of float) +0:73 'lf4' (temp 4-component vector of float) +0:73 uf4: direct index for structure (layout(offset=96 ) uniform 4-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp 4-component vector of float) +0:77 'storeTemp' (temp 4-component vector of float) +0:77 Function Call: SomeValue( (temp 4-component vector of float) +0:77 imageStore (temp void) +0:77 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp 4-component vector of float) +0:77 'storeTemp' (temp 4-component vector of float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf4' (temp 4-component vector of float) +0:78 'lf4' (temp 4-component vector of float) +0:79 Sequence +0:79 move second child to first child (temp 4-component vector of int) +0:79 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 2 (const int) +0:? 2 (const int) +0:? 3 (const int) +0:? 4 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp 4-component vector of int) +0:79 'storeTemp' (temp 4-component vector of int) +0:80 Sequence +0:80 move second child to first child (temp 4-component vector of uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 3 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:80 'storeTemp' (temp 4-component vector of uint) +0:83 Sequence +0:83 move second child to first child (temp 4-component vector of float) +0:83 'val1' (temp 4-component vector of float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 imageLoad (temp 4-component vector of float) +0:83 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 vector scale second child into first child (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp 4-component vector of float) +0:83 'storeTemp' (temp 4-component vector of float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 imageLoad (temp 4-component vector of float) +0:84 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp 4-component vector of float) +0:84 'storeTemp' (temp 4-component vector of float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 imageLoad (temp 4-component vector of float) +0:85 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp 4-component vector of float) +0:85 'storeTemp' (temp 4-component vector of float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:87 Constant: +0:87 0 (const uint) +0:87 move second child to first child (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 imageLoad (temp 4-component vector of int) +0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp 4-component vector of int) +0:87 'storeTemp' (temp 4-component vector of int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:88 Constant: +0:88 0 (const uint) +0:88 move second child to first child (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 imageLoad (temp 4-component vector of int) +0:88 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp 4-component vector of int) +0:88 'storeTemp' (temp 4-component vector of int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 imageLoad (temp 4-component vector of int) +0:89 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp 4-component vector of int) +0:89 'storeTemp' (temp 4-component vector of int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 imageLoad (temp 4-component vector of int) +0:90 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp 4-component vector of int) +0:90 'storeTemp' (temp 4-component vector of int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 imageLoad (temp 4-component vector of int) +0:91 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp 4-component vector of int) +0:91 'storeTemp' (temp 4-component vector of int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 imageLoad (temp 4-component vector of int) +0:92 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp 4-component vector of int) +0:92 'storeTemp' (temp 4-component vector of int) +0:95 Sequence +0:95 move second child to first child (temp 4-component vector of float) +0:95 'storeTemp' (temp 4-component vector of float) +0:95 Function Call: SomeValue( (temp 4-component vector of float) +0:95 imageStore (temp void) +0:95 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp 4-component vector of float) +0:95 'storeTemp' (temp 4-component vector of float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf4' (temp 4-component vector of float) +0:96 'lf4' (temp 4-component vector of float) +0:97 Sequence +0:97 move second child to first child (temp 4-component vector of int) +0:97 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 5 (const int) +0:? 2 (const int) +0:? 3 (const int) +0:? 4 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp 4-component vector of int) +0:97 'storeTemp' (temp 4-component vector of int) +0:98 Sequence +0:98 move second child to first child (temp 4-component vector of uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 6 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:98 'storeTemp' (temp 4-component vector of uint) +0:101 Sequence +0:101 move second child to first child (temp 4-component vector of float) +0:101 'storeTemp' (temp 4-component vector of float) +0:101 Function Call: SomeValue( (temp 4-component vector of float) +0:101 imageStore (temp void) +0:101 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp 4-component vector of float) +0:101 'storeTemp' (temp 4-component vector of float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf4' (temp 4-component vector of float) +0:102 'lf4' (temp 4-component vector of float) +0:103 Sequence +0:103 move second child to first child (temp 4-component vector of int) +0:103 'storeTemp' (temp 4-component vector of int) +0:? Constant: +0:? 8 (const int) +0:? 6 (const int) +0:? 7 (const int) +0:? 8 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp 4-component vector of int) +0:103 'storeTemp' (temp 4-component vector of int) +0:104 Sequence +0:104 move second child to first child (temp 4-component vector of uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:? Constant: +0:? 9 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 4 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:104 'storeTemp' (temp 4-component vector of uint) +0:107 Function Call: Fn1(vf4; (temp 4-component vector of float) +0:107 imageLoad (temp 4-component vector of float) +0:107 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(vi4; (temp 4-component vector of int) +0:108 imageLoad (temp 4-component vector of int) +0:108 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(vu4; (temp 4-component vector of uint) +0:109 imageLoad (temp 4-component vector of uint) +0:109 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(vf4; (temp void) +0:111 'tempArg' (temp 4-component vector of float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp 4-component vector of float) +0:111 'tempArg' (temp 4-component vector of float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(vi4; (temp void) +0:112 'tempArg' (temp 4-component vector of int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp 4-component vector of int) +0:112 'tempArg' (temp 4-component vector of int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(vu4; (temp void) +0:113 'tempArg' (temp 4-component vector of uint) +0:113 Sequence +0:113 imageStore (temp void) +0:113 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:113 Constant: +0:113 0 (const uint) +0:113 'tempArg' (temp 4-component vector of uint) +0:113 'tempArg' (temp 4-component vector of uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 imageLoad (temp 4-component vector of float) +0:117 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 imageStore (temp void) +0:117 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp 4-component vector of float) +0:117 'storeTemp' (temp 4-component vector of float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 imageLoad (temp 4-component vector of int) +0:118 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 imageStore (temp void) +0:118 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp 4-component vector of int) +0:118 'storeTemp' (temp 4-component vector of int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 imageLoad (temp 4-component vector of uint) +0:119 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp 4-component vector of uint) +0:119 'storeTemp' (temp 4-component vector of uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 imageLoad (temp 4-component vector of float) +0:121 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 imageStore (temp void) +0:121 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp 4-component vector of float) +0:121 'storeTemp' (temp 4-component vector of float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 imageLoad (temp 4-component vector of int) +0:122 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 imageStore (temp void) +0:122 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp 4-component vector of int) +0:122 'storeTemp' (temp 4-component vector of int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 imageLoad (temp 4-component vector of uint) +0:123 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp 4-component vector of uint) +0:123 'storeTemp' (temp 4-component vector of uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:126 imageLoad (temp 4-component vector of float) +0:126 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp 4-component vector of float) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:126 Post-Increment (temp 4-component vector of float) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 imageStore (temp void) +0:126 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp 4-component vector of float) +0:126 'storeTempPre' (temp 4-component vector of float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:127 imageLoad (temp 4-component vector of uint) +0:127 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp 4-component vector of uint) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:127 Post-Decrement (temp 4-component vector of uint) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp 4-component vector of uint) +0:127 'storeTempPre' (temp 4-component vector of uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:128 imageLoad (temp 4-component vector of int) +0:128 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp 4-component vector of int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:128 Post-Increment (temp 4-component vector of int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 imageStore (temp void) +0:128 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp 4-component vector of int) +0:128 'storeTempPre' (temp 4-component vector of int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:130 imageLoad (temp 4-component vector of float) +0:130 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp 4-component vector of float) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:130 Post-Decrement (temp 4-component vector of float) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 imageStore (temp void) +0:130 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp 4-component vector of float) +0:130 'storeTempPre' (temp 4-component vector of float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:131 imageLoad (temp 4-component vector of int) +0:131 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp 4-component vector of int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:131 Post-Increment (temp 4-component vector of int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 imageStore (temp void) +0:131 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp 4-component vector of int) +0:131 'storeTempPre' (temp 4-component vector of int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:132 imageLoad (temp 4-component vector of uint) +0:132 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp 4-component vector of uint) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:132 Post-Decrement (temp 4-component vector of uint) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp 4-component vector of uint) +0:132 'storeTempPre' (temp 4-component vector of uint) +0:135 Sequence +0:135 move second child to first child (temp 4-component vector of float) +0:135 'storeTemp' (temp 4-component vector of float) +0:? imageLoad (temp 4-component vector of float) +0:135 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp 4-component vector of float) +0:135 'storeTemp' (temp 4-component vector of float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D) +0:? 'g_tTex1di4' (layout(rgba32i ) uniform iimage1D) +0:? 'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D) +0:? 'g_tTex2df4' (layout(rgba32f ) uniform image2D) +0:? 'g_tTex2di4' (layout(rgba32i ) uniform iimage2D) +0:? 'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D) +0:? 'g_tTex3df4' (layout(rgba32f ) uniform image3D) +0:? 'g_tTex3di4' (layout(rgba32i ) uniform iimage3D) +0:? 'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D) +0:? 'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray) +0:? 'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray) +0:? 'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 602 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 577 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 11 "Fn1(vi4;" + Name 10 "x" + Name 18 "Fn1(vu4;" + Name 17 "x" + Name 25 "Fn1(vf4;" + Name 24 "x" + Name 29 "Fn2(vi4;" + Name 28 "x" + Name 33 "Fn2(vu4;" + Name 32 "x" + Name 37 "Fn2(vf4;" + Name 36 "x" + Name 40 "SomeValue(" + Name 59 "$Global" + MemberName 59($Global) 0 "c1" + MemberName 59($Global) 1 "c2" + MemberName 59($Global) 2 "c3" + MemberName 59($Global) 3 "c4" + MemberName 59($Global) 4 "o1" + MemberName 59($Global) 5 "o2" + MemberName 59($Global) 6 "o3" + MemberName 59($Global) 7 "o4" + MemberName 59($Global) 8 "uf4" + MemberName 59($Global) 9 "ui4" + MemberName 59($Global) 10 "uu4" + Name 61 "" + Name 71 "g_tTex1df4" + Name 77 "r00" + Name 82 "r01" + Name 85 "g_tTex1di4" + Name 90 "r02" + Name 93 "g_tTex1du4" + Name 98 "r10" + Name 101 "g_tTex2df4" + Name 108 "r11" + Name 111 "g_tTex2di4" + Name 116 "r12" + Name 119 "g_tTex2du4" + Name 124 "r20" + Name 127 "g_tTex3df4" + Name 134 "r21" + Name 137 "g_tTex3di4" + Name 142 "r22" + Name 145 "g_tTex3du4" + Name 150 "lf4" + Name 155 "storeTemp" + Name 165 "storeTemp" + Name 172 "storeTemp" + Name 181 "val1" + Name 183 "coordTemp" + Name 186 "storeTemp" + Name 197 "coordTemp" + Name 200 "storeTemp" + Name 211 "coordTemp" + Name 214 "storeTemp" + Name 225 "coordTemp" + Name 228 "storeTemp" + Name 238 "coordTemp" + Name 241 "storeTemp" + Name 251 "coordTemp" + Name 254 "storeTemp" + Name 265 "coordTemp" + Name 268 "storeTemp" + Name 279 "coordTemp" + Name 282 "storeTemp" + Name 292 "coordTemp" + Name 295 "storeTemp" + Name 305 "storeTemp" + Name 315 "storeTemp" + Name 322 "storeTemp" + Name 329 "storeTemp" + Name 339 "storeTemp" + Name 347 "storeTemp" + Name 358 "param" + Name 364 "param" + Name 370 "param" + Name 372 "tempArg" + Name 373 "param" + Name 380 "tempArg" + Name 381 "param" + Name 388 "tempArg" + Name 389 "param" + Name 396 "coordTemp" + Name 399 "storeTemp" + Name 410 "coordTemp" + Name 413 "storeTemp" + Name 423 "coordTemp" + Name 426 "storeTemp" + Name 436 "coordTemp" + Name 439 "storeTemp" + Name 449 "coordTemp" + Name 452 "storeTemp" + Name 462 "coordTemp" + Name 465 "storeTemp" + Name 475 "coordTemp" + Name 478 "storeTempPre" + Name 482 "storeTempPost" + Name 490 "coordTemp" + Name 493 "storeTempPre" + Name 497 "storeTempPost" + Name 505 "coordTemp" + Name 508 "storeTempPre" + Name 512 "storeTempPost" + Name 520 "coordTemp" + Name 523 "storeTempPre" + Name 527 "storeTempPost" + Name 535 "coordTemp" + Name 538 "storeTempPre" + Name 542 "storeTempPost" + Name 550 "coordTemp" + Name 553 "storeTempPre" + Name 557 "storeTempPost" + Name 565 "storeTemp" + Name 571 "PS_OUTPUT" + MemberName 571(PS_OUTPUT) 0 "Color" + Name 573 "psout" + Name 577 "Color" + Name 583 "g_sSamp" + Name 586 "g_tTex1df4a" + Name 589 "g_tTex1di4a" + Name 592 "g_tTex1du4a" + Name 595 "g_tTex2df4a" + Name 598 "g_tTex2di4a" + Name 601 "g_tTex2du4a" + MemberDecorate 59($Global) 0 Offset 0 + MemberDecorate 59($Global) 1 Offset 8 + MemberDecorate 59($Global) 2 Offset 16 + MemberDecorate 59($Global) 3 Offset 32 + MemberDecorate 59($Global) 4 Offset 48 + MemberDecorate 59($Global) 5 Offset 56 + MemberDecorate 59($Global) 6 Offset 64 + MemberDecorate 59($Global) 7 Offset 80 + MemberDecorate 59($Global) 8 Offset 96 + MemberDecorate 59($Global) 9 Offset 112 + MemberDecorate 59($Global) 10 Offset 128 + Decorate 59($Global) Block + Decorate 61 DescriptorSet 0 + Decorate 71(g_tTex1df4) DescriptorSet 0 + Decorate 71(g_tTex1df4) Binding 0 + Decorate 85(g_tTex1di4) DescriptorSet 0 + Decorate 93(g_tTex1du4) DescriptorSet 0 + Decorate 101(g_tTex2df4) DescriptorSet 0 + Decorate 111(g_tTex2di4) DescriptorSet 0 + Decorate 119(g_tTex2du4) DescriptorSet 0 + Decorate 127(g_tTex3df4) DescriptorSet 0 + Decorate 137(g_tTex3di4) DescriptorSet 0 + Decorate 145(g_tTex3du4) DescriptorSet 0 + Decorate 577(Color) Location 0 + Decorate 583(g_sSamp) DescriptorSet 0 + Decorate 583(g_sSamp) Binding 0 + Decorate 586(g_tTex1df4a) DescriptorSet 0 + Decorate 589(g_tTex1di4a) DescriptorSet 0 + Decorate 592(g_tTex1du4a) DescriptorSet 0 + Decorate 595(g_tTex2df4a) DescriptorSet 0 + Decorate 598(g_tTex2di4a) DescriptorSet 0 + Decorate 601(g_tTex2du4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeVector 6(int) 4 + 8: TypePointer Function 7(ivec4) + 9: TypeFunction 7(ivec4) 8(ptr) + 13: TypeInt 32 0 + 14: TypeVector 13(int) 4 + 15: TypePointer Function 14(ivec4) + 16: TypeFunction 14(ivec4) 15(ptr) + 20: TypeFloat 32 + 21: TypeVector 20(float) 4 + 22: TypePointer Function 21(fvec4) + 23: TypeFunction 21(fvec4) 22(ptr) + 27: TypeFunction 2 8(ptr) + 31: TypeFunction 2 15(ptr) + 35: TypeFunction 2 22(ptr) + 39: TypeFunction 21(fvec4) + 51: 6(int) Constant 0 + 52: 7(ivec4) ConstantComposite 51 51 51 51 + 53: 13(int) Constant 0 + 54: 14(ivec4) ConstantComposite 53 53 53 53 + 55: 20(float) Constant 0 + 56: 21(fvec4) ConstantComposite 55 55 55 55 + 57: TypeVector 6(int) 2 + 58: TypeVector 6(int) 3 + 59($Global): TypeStruct 6(int) 57(ivec2) 58(ivec3) 7(ivec4) 6(int) 57(ivec2) 58(ivec3) 7(ivec4) 21(fvec4) 7(ivec4) 14(ivec4) + 60: TypePointer Uniform 59($Global) + 61: 60(ptr) Variable Uniform + 62: 6(int) Constant 3 + 63: TypePointer Uniform 7(ivec4) + 69: TypeImage 20(float) 1D nonsampled format:Rgba32f + 70: TypePointer UniformConstant 69 + 71(g_tTex1df4): 70(ptr) Variable UniformConstant + 73: TypePointer Uniform 6(int) + 83: TypeImage 6(int) 1D nonsampled format:Rgba32i + 84: TypePointer UniformConstant 83 + 85(g_tTex1di4): 84(ptr) Variable UniformConstant + 91: TypeImage 13(int) 1D nonsampled format:Rgba32ui + 92: TypePointer UniformConstant 91 + 93(g_tTex1du4): 92(ptr) Variable UniformConstant + 99: TypeImage 20(float) 2D nonsampled format:Rgba32f + 100: TypePointer UniformConstant 99 + 101(g_tTex2df4): 100(ptr) Variable UniformConstant + 103: 6(int) Constant 1 + 104: TypePointer Uniform 57(ivec2) + 109: TypeImage 6(int) 2D nonsampled format:Rgba32i + 110: TypePointer UniformConstant 109 + 111(g_tTex2di4): 110(ptr) Variable UniformConstant + 117: TypeImage 13(int) 2D nonsampled format:Rgba32ui + 118: TypePointer UniformConstant 117 + 119(g_tTex2du4): 118(ptr) Variable UniformConstant + 125: TypeImage 20(float) 3D nonsampled format:Rgba32f + 126: TypePointer UniformConstant 125 + 127(g_tTex3df4): 126(ptr) Variable UniformConstant + 129: 6(int) Constant 2 + 130: TypePointer Uniform 58(ivec3) + 135: TypeImage 6(int) 3D nonsampled format:Rgba32i + 136: TypePointer UniformConstant 135 + 137(g_tTex3di4): 136(ptr) Variable UniformConstant + 143: TypeImage 13(int) 3D nonsampled format:Rgba32ui + 144: TypePointer UniformConstant 143 + 145(g_tTex3du4): 144(ptr) Variable UniformConstant + 151: 6(int) Constant 8 + 152: TypePointer Uniform 21(fvec4) + 166: 6(int) Constant 4 + 167: 7(ivec4) ConstantComposite 129 129 62 166 + 173: 13(int) Constant 3 + 174: 13(int) Constant 2 + 175: 13(int) Constant 4 + 176: 14(ivec4) ConstantComposite 173 174 173 175 + 182: TypePointer Function 6(int) + 190: 20(float) Constant 1073741824 + 204: 20(float) Constant 1077936128 + 218: 20(float) Constant 1082130432 + 258: 6(int) Constant 65535 + 272: 6(int) Constant 61680 + 316: 6(int) Constant 5 + 317: 7(ivec4) ConstantComposite 316 129 62 166 + 323: 13(int) Constant 6 + 324: 14(ivec4) ConstantComposite 323 174 173 175 + 340: 6(int) Constant 6 + 341: 6(int) Constant 7 + 342: 7(ivec4) ConstantComposite 151 340 341 151 + 348: 13(int) Constant 9 + 349: 14(ivec4) ConstantComposite 348 174 173 175 + 404: 20(float) Constant 1065353216 + 567: 57(ivec2) ConstantComposite 129 62 + 571(PS_OUTPUT): TypeStruct 21(fvec4) + 572: TypePointer Function 571(PS_OUTPUT) + 574: 21(fvec4) ConstantComposite 404 404 404 404 + 576: TypePointer Output 21(fvec4) + 577(Color): 576(ptr) Variable Output + 581: TypeSampler + 582: TypePointer UniformConstant 581 + 583(g_sSamp): 582(ptr) Variable UniformConstant + 584: TypeImage 20(float) 1D array nonsampled format:Rgba32f + 585: TypePointer UniformConstant 584 +586(g_tTex1df4a): 585(ptr) Variable UniformConstant + 587: TypeImage 6(int) 1D array nonsampled format:Rgba32i + 588: TypePointer UniformConstant 587 +589(g_tTex1di4a): 588(ptr) Variable UniformConstant + 590: TypeImage 13(int) 1D array nonsampled format:Rgba32ui + 591: TypePointer UniformConstant 590 +592(g_tTex1du4a): 591(ptr) Variable UniformConstant + 593: TypeImage 20(float) 2D array nonsampled format:Rgba32f + 594: TypePointer UniformConstant 593 +595(g_tTex2df4a): 594(ptr) Variable UniformConstant + 596: TypeImage 6(int) 2D array nonsampled format:Rgba32i + 597: TypePointer UniformConstant 596 +598(g_tTex2di4a): 597(ptr) Variable UniformConstant + 599: TypeImage 13(int) 2D array nonsampled format:Rgba32ui + 600: TypePointer UniformConstant 599 +601(g_tTex2du4a): 600(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 77(r00): 22(ptr) Variable Function + 82(r01): 8(ptr) Variable Function + 90(r02): 15(ptr) Variable Function + 98(r10): 22(ptr) Variable Function + 108(r11): 8(ptr) Variable Function + 116(r12): 15(ptr) Variable Function + 124(r20): 22(ptr) Variable Function + 134(r21): 8(ptr) Variable Function + 142(r22): 15(ptr) Variable Function + 150(lf4): 22(ptr) Variable Function + 155(storeTemp): 22(ptr) Variable Function + 165(storeTemp): 8(ptr) Variable Function + 172(storeTemp): 15(ptr) Variable Function + 181(val1): 22(ptr) Variable Function + 183(coordTemp): 182(ptr) Variable Function + 186(storeTemp): 22(ptr) Variable Function + 197(coordTemp): 182(ptr) Variable Function + 200(storeTemp): 22(ptr) Variable Function + 211(coordTemp): 182(ptr) Variable Function + 214(storeTemp): 22(ptr) Variable Function + 225(coordTemp): 182(ptr) Variable Function + 228(storeTemp): 8(ptr) Variable Function + 238(coordTemp): 182(ptr) Variable Function + 241(storeTemp): 8(ptr) Variable Function + 251(coordTemp): 182(ptr) Variable Function + 254(storeTemp): 8(ptr) Variable Function + 265(coordTemp): 182(ptr) Variable Function + 268(storeTemp): 8(ptr) Variable Function + 279(coordTemp): 182(ptr) Variable Function + 282(storeTemp): 8(ptr) Variable Function + 292(coordTemp): 182(ptr) Variable Function + 295(storeTemp): 8(ptr) Variable Function + 305(storeTemp): 22(ptr) Variable Function + 315(storeTemp): 8(ptr) Variable Function + 322(storeTemp): 15(ptr) Variable Function + 329(storeTemp): 22(ptr) Variable Function + 339(storeTemp): 8(ptr) Variable Function + 347(storeTemp): 15(ptr) Variable Function + 358(param): 22(ptr) Variable Function + 364(param): 8(ptr) Variable Function + 370(param): 15(ptr) Variable Function + 372(tempArg): 22(ptr) Variable Function + 373(param): 22(ptr) Variable Function + 380(tempArg): 8(ptr) Variable Function + 381(param): 8(ptr) Variable Function + 388(tempArg): 15(ptr) Variable Function + 389(param): 15(ptr) Variable Function + 396(coordTemp): 182(ptr) Variable Function + 399(storeTemp): 22(ptr) Variable Function + 410(coordTemp): 182(ptr) Variable Function + 413(storeTemp): 8(ptr) Variable Function + 423(coordTemp): 182(ptr) Variable Function + 426(storeTemp): 15(ptr) Variable Function + 436(coordTemp): 182(ptr) Variable Function + 439(storeTemp): 22(ptr) Variable Function + 449(coordTemp): 182(ptr) Variable Function + 452(storeTemp): 8(ptr) Variable Function + 462(coordTemp): 182(ptr) Variable Function + 465(storeTemp): 15(ptr) Variable Function + 475(coordTemp): 182(ptr) Variable Function +478(storeTempPre): 22(ptr) Variable Function +482(storeTempPost): 22(ptr) Variable Function + 490(coordTemp): 182(ptr) Variable Function +493(storeTempPre): 15(ptr) Variable Function +497(storeTempPost): 15(ptr) Variable Function + 505(coordTemp): 182(ptr) Variable Function +508(storeTempPre): 8(ptr) Variable Function +512(storeTempPost): 8(ptr) Variable Function + 520(coordTemp): 182(ptr) Variable Function +523(storeTempPre): 22(ptr) Variable Function +527(storeTempPost): 22(ptr) Variable Function + 535(coordTemp): 182(ptr) Variable Function +538(storeTempPre): 8(ptr) Variable Function +542(storeTempPost): 8(ptr) Variable Function + 550(coordTemp): 182(ptr) Variable Function +553(storeTempPre): 15(ptr) Variable Function +557(storeTempPost): 15(ptr) Variable Function + 565(storeTemp): 22(ptr) Variable Function + 573(psout): 572(ptr) Variable Function + 72: 69 Load 71(g_tTex1df4) + 74: 73(ptr) AccessChain 61 51 + 75: 6(int) Load 74 + 76: 21(fvec4) ImageRead 72 75 + 78: 69 Load 71(g_tTex1df4) + 79: 73(ptr) AccessChain 61 51 + 80: 6(int) Load 79 + 81: 21(fvec4) ImageRead 78 80 + Store 77(r00) 81 + 86: 83 Load 85(g_tTex1di4) + 87: 73(ptr) AccessChain 61 51 + 88: 6(int) Load 87 + 89: 7(ivec4) ImageRead 86 88 + Store 82(r01) 89 + 94: 91 Load 93(g_tTex1du4) + 95: 73(ptr) AccessChain 61 51 + 96: 6(int) Load 95 + 97: 14(ivec4) ImageRead 94 96 + Store 90(r02) 97 + 102: 99 Load 101(g_tTex2df4) + 105: 104(ptr) AccessChain 61 103 + 106: 57(ivec2) Load 105 + 107: 21(fvec4) ImageRead 102 106 + Store 98(r10) 107 + 112: 109 Load 111(g_tTex2di4) + 113: 104(ptr) AccessChain 61 103 + 114: 57(ivec2) Load 113 + 115: 7(ivec4) ImageRead 112 114 + Store 108(r11) 115 + 120: 117 Load 119(g_tTex2du4) + 121: 104(ptr) AccessChain 61 103 + 122: 57(ivec2) Load 121 + 123: 14(ivec4) ImageRead 120 122 + Store 116(r12) 123 + 128: 125 Load 127(g_tTex3df4) + 131: 130(ptr) AccessChain 61 129 + 132: 58(ivec3) Load 131 + 133: 21(fvec4) ImageRead 128 132 + Store 124(r20) 133 + 138: 135 Load 137(g_tTex3di4) + 139: 130(ptr) AccessChain 61 129 + 140: 58(ivec3) Load 139 + 141: 7(ivec4) ImageRead 138 140 + Store 134(r21) 141 + 146: 143 Load 145(g_tTex3du4) + 147: 130(ptr) AccessChain 61 129 + 148: 58(ivec3) Load 147 + 149: 14(ivec4) ImageRead 146 148 + Store 142(r22) 149 + 153: 152(ptr) AccessChain 61 151 + 154: 21(fvec4) Load 153 + Store 150(lf4) 154 + 156: 21(fvec4) FunctionCall 40(SomeValue() + Store 155(storeTemp) 156 + 157: 69 Load 71(g_tTex1df4) + 158: 73(ptr) AccessChain 61 51 + 159: 6(int) Load 158 + 160: 21(fvec4) Load 155(storeTemp) + ImageWrite 157 159 160 + 161: 69 Load 71(g_tTex1df4) + 162: 73(ptr) AccessChain 61 51 + 163: 6(int) Load 162 + 164: 21(fvec4) Load 150(lf4) + ImageWrite 161 163 164 + Store 165(storeTemp) 167 + 168: 83 Load 85(g_tTex1di4) + 169: 73(ptr) AccessChain 61 51 + 170: 6(int) Load 169 + 171: 7(ivec4) Load 165(storeTemp) + ImageWrite 168 170 171 + Store 172(storeTemp) 176 + 177: 91 Load 93(g_tTex1du4) + 178: 73(ptr) AccessChain 61 51 + 179: 6(int) Load 178 + 180: 14(ivec4) Load 172(storeTemp) + ImageWrite 177 179 180 + 184: 73(ptr) AccessChain 61 51 + 185: 6(int) Load 184 + Store 183(coordTemp) 185 + 187: 69 Load 71(g_tTex1df4) + 188: 6(int) Load 183(coordTemp) + 189: 21(fvec4) ImageRead 187 188 + Store 186(storeTemp) 189 + 191: 21(fvec4) Load 186(storeTemp) + 192: 21(fvec4) VectorTimesScalar 191 190 + Store 186(storeTemp) 192 + 193: 69 Load 71(g_tTex1df4) + 194: 6(int) Load 183(coordTemp) + 195: 21(fvec4) Load 186(storeTemp) + ImageWrite 193 194 195 + 196: 21(fvec4) Load 186(storeTemp) + Store 181(val1) 196 + 198: 73(ptr) AccessChain 61 51 + 199: 6(int) Load 198 + Store 197(coordTemp) 199 + 201: 69 Load 71(g_tTex1df4) + 202: 6(int) Load 197(coordTemp) + 203: 21(fvec4) ImageRead 201 202 + Store 200(storeTemp) 203 + 205: 21(fvec4) Load 200(storeTemp) + 206: 21(fvec4) CompositeConstruct 204 204 204 204 + 207: 21(fvec4) FSub 205 206 + Store 200(storeTemp) 207 + 208: 69 Load 71(g_tTex1df4) + 209: 6(int) Load 197(coordTemp) + 210: 21(fvec4) Load 200(storeTemp) + ImageWrite 208 209 210 + 212: 73(ptr) AccessChain 61 51 + 213: 6(int) Load 212 + Store 211(coordTemp) 213 + 215: 69 Load 71(g_tTex1df4) + 216: 6(int) Load 211(coordTemp) + 217: 21(fvec4) ImageRead 215 216 + Store 214(storeTemp) 217 + 219: 21(fvec4) Load 214(storeTemp) + 220: 21(fvec4) CompositeConstruct 218 218 218 218 + 221: 21(fvec4) FAdd 219 220 + Store 214(storeTemp) 221 + 222: 69 Load 71(g_tTex1df4) + 223: 6(int) Load 211(coordTemp) + 224: 21(fvec4) Load 214(storeTemp) + ImageWrite 222 223 224 + 226: 73(ptr) AccessChain 61 51 + 227: 6(int) Load 226 + Store 225(coordTemp) 227 + 229: 83 Load 85(g_tTex1di4) + 230: 6(int) Load 225(coordTemp) + 231: 7(ivec4) ImageRead 229 230 + Store 228(storeTemp) 231 + 232: 7(ivec4) Load 228(storeTemp) + 233: 7(ivec4) CompositeConstruct 129 129 129 129 + 234: 7(ivec4) SDiv 232 233 + Store 228(storeTemp) 234 + 235: 83 Load 85(g_tTex1di4) + 236: 6(int) Load 225(coordTemp) + 237: 7(ivec4) Load 228(storeTemp) + ImageWrite 235 236 237 + 239: 73(ptr) AccessChain 61 51 + 240: 6(int) Load 239 + Store 238(coordTemp) 240 + 242: 83 Load 85(g_tTex1di4) + 243: 6(int) Load 238(coordTemp) + 244: 7(ivec4) ImageRead 242 243 + Store 241(storeTemp) 244 + 245: 7(ivec4) Load 241(storeTemp) + 246: 7(ivec4) CompositeConstruct 129 129 129 129 + 247: 7(ivec4) SMod 245 246 + Store 241(storeTemp) 247 + 248: 83 Load 85(g_tTex1di4) + 249: 6(int) Load 238(coordTemp) + 250: 7(ivec4) Load 241(storeTemp) + ImageWrite 248 249 250 + 252: 73(ptr) AccessChain 61 51 + 253: 6(int) Load 252 + Store 251(coordTemp) 253 + 255: 83 Load 85(g_tTex1di4) + 256: 6(int) Load 251(coordTemp) + 257: 7(ivec4) ImageRead 255 256 + Store 254(storeTemp) 257 + 259: 7(ivec4) Load 254(storeTemp) + 260: 7(ivec4) CompositeConstruct 258 258 258 258 + 261: 7(ivec4) BitwiseAnd 259 260 + Store 254(storeTemp) 261 + 262: 83 Load 85(g_tTex1di4) + 263: 6(int) Load 251(coordTemp) + 264: 7(ivec4) Load 254(storeTemp) + ImageWrite 262 263 264 + 266: 73(ptr) AccessChain 61 51 + 267: 6(int) Load 266 + Store 265(coordTemp) 267 + 269: 83 Load 85(g_tTex1di4) + 270: 6(int) Load 265(coordTemp) + 271: 7(ivec4) ImageRead 269 270 + Store 268(storeTemp) 271 + 273: 7(ivec4) Load 268(storeTemp) + 274: 7(ivec4) CompositeConstruct 272 272 272 272 + 275: 7(ivec4) BitwiseOr 273 274 + Store 268(storeTemp) 275 + 276: 83 Load 85(g_tTex1di4) + 277: 6(int) Load 265(coordTemp) + 278: 7(ivec4) Load 268(storeTemp) + ImageWrite 276 277 278 + 280: 73(ptr) AccessChain 61 51 + 281: 6(int) Load 280 + Store 279(coordTemp) 281 + 283: 83 Load 85(g_tTex1di4) + 284: 6(int) Load 279(coordTemp) + 285: 7(ivec4) ImageRead 283 284 + Store 282(storeTemp) 285 + 286: 7(ivec4) Load 282(storeTemp) + 287: 7(ivec4) CompositeConstruct 129 129 129 129 + 288: 7(ivec4) ShiftLeftLogical 286 287 + Store 282(storeTemp) 288 + 289: 83 Load 85(g_tTex1di4) + 290: 6(int) Load 279(coordTemp) + 291: 7(ivec4) Load 282(storeTemp) + ImageWrite 289 290 291 + 293: 73(ptr) AccessChain 61 51 + 294: 6(int) Load 293 + Store 292(coordTemp) 294 + 296: 83 Load 85(g_tTex1di4) + 297: 6(int) Load 292(coordTemp) + 298: 7(ivec4) ImageRead 296 297 + Store 295(storeTemp) 298 + 299: 7(ivec4) Load 295(storeTemp) + 300: 7(ivec4) CompositeConstruct 129 129 129 129 + 301: 7(ivec4) ShiftRightArithmetic 299 300 + Store 295(storeTemp) 301 + 302: 83 Load 85(g_tTex1di4) + 303: 6(int) Load 292(coordTemp) + 304: 7(ivec4) Load 295(storeTemp) + ImageWrite 302 303 304 + 306: 21(fvec4) FunctionCall 40(SomeValue() + Store 305(storeTemp) 306 + 307: 99 Load 101(g_tTex2df4) + 308: 104(ptr) AccessChain 61 103 + 309: 57(ivec2) Load 308 + 310: 21(fvec4) Load 305(storeTemp) + ImageWrite 307 309 310 + 311: 99 Load 101(g_tTex2df4) + 312: 104(ptr) AccessChain 61 103 + 313: 57(ivec2) Load 312 + 314: 21(fvec4) Load 150(lf4) + ImageWrite 311 313 314 + Store 315(storeTemp) 317 + 318: 109 Load 111(g_tTex2di4) + 319: 104(ptr) AccessChain 61 103 + 320: 57(ivec2) Load 319 + 321: 7(ivec4) Load 315(storeTemp) + ImageWrite 318 320 321 + Store 322(storeTemp) 324 + 325: 117 Load 119(g_tTex2du4) + 326: 104(ptr) AccessChain 61 103 + 327: 57(ivec2) Load 326 + 328: 14(ivec4) Load 322(storeTemp) + ImageWrite 325 327 328 + 330: 21(fvec4) FunctionCall 40(SomeValue() + Store 329(storeTemp) 330 + 331: 125 Load 127(g_tTex3df4) + 332: 130(ptr) AccessChain 61 129 + 333: 58(ivec3) Load 332 + 334: 21(fvec4) Load 329(storeTemp) + ImageWrite 331 333 334 + 335: 125 Load 127(g_tTex3df4) + 336: 130(ptr) AccessChain 61 129 + 337: 58(ivec3) Load 336 + 338: 21(fvec4) Load 150(lf4) + ImageWrite 335 337 338 + Store 339(storeTemp) 342 + 343: 135 Load 137(g_tTex3di4) + 344: 130(ptr) AccessChain 61 129 + 345: 58(ivec3) Load 344 + 346: 7(ivec4) Load 339(storeTemp) + ImageWrite 343 345 346 + Store 347(storeTemp) 349 + 350: 143 Load 145(g_tTex3du4) + 351: 130(ptr) AccessChain 61 129 + 352: 58(ivec3) Load 351 + 353: 14(ivec4) Load 347(storeTemp) + ImageWrite 350 352 353 + 354: 69 Load 71(g_tTex1df4) + 355: 73(ptr) AccessChain 61 51 + 356: 6(int) Load 355 + 357: 21(fvec4) ImageRead 354 356 + Store 358(param) 357 + 359: 21(fvec4) FunctionCall 25(Fn1(vf4;) 358(param) + 360: 83 Load 85(g_tTex1di4) + 361: 73(ptr) AccessChain 61 51 + 362: 6(int) Load 361 + 363: 7(ivec4) ImageRead 360 362 + Store 364(param) 363 + 365: 7(ivec4) FunctionCall 11(Fn1(vi4;) 364(param) + 366: 91 Load 93(g_tTex1du4) + 367: 73(ptr) AccessChain 61 51 + 368: 6(int) Load 367 + 369: 14(ivec4) ImageRead 366 368 + Store 370(param) 369 + 371: 14(ivec4) FunctionCall 18(Fn1(vu4;) 370(param) + 374: 2 FunctionCall 37(Fn2(vf4;) 373(param) + 375: 21(fvec4) Load 373(param) + Store 372(tempArg) 375 + 376: 69 Load 71(g_tTex1df4) + 377: 73(ptr) AccessChain 61 51 + 378: 6(int) Load 377 + 379: 21(fvec4) Load 372(tempArg) + ImageWrite 376 378 379 + 382: 2 FunctionCall 29(Fn2(vi4;) 381(param) + 383: 7(ivec4) Load 381(param) + Store 380(tempArg) 383 + 384: 83 Load 85(g_tTex1di4) + 385: 73(ptr) AccessChain 61 51 + 386: 6(int) Load 385 + 387: 7(ivec4) Load 380(tempArg) + ImageWrite 384 386 387 + 390: 2 FunctionCall 33(Fn2(vu4;) 389(param) + 391: 14(ivec4) Load 389(param) + Store 388(tempArg) 391 + 392: 91 Load 93(g_tTex1du4) + 393: 73(ptr) AccessChain 61 51 + 394: 6(int) Load 393 + 395: 14(ivec4) Load 388(tempArg) + ImageWrite 392 394 395 + 397: 73(ptr) AccessChain 61 51 + 398: 6(int) Load 397 + Store 396(coordTemp) 398 + 400: 69 Load 71(g_tTex1df4) + 401: 6(int) Load 396(coordTemp) + 402: 21(fvec4) ImageRead 400 401 + Store 399(storeTemp) 402 + 403: 21(fvec4) Load 399(storeTemp) + 405: 21(fvec4) CompositeConstruct 404 404 404 404 + 406: 21(fvec4) FAdd 403 405 + Store 399(storeTemp) 406 + 407: 69 Load 71(g_tTex1df4) + 408: 6(int) Load 396(coordTemp) + 409: 21(fvec4) Load 399(storeTemp) + ImageWrite 407 408 409 + 411: 73(ptr) AccessChain 61 51 + 412: 6(int) Load 411 + Store 410(coordTemp) 412 + 414: 83 Load 85(g_tTex1di4) + 415: 6(int) Load 410(coordTemp) + 416: 7(ivec4) ImageRead 414 415 + Store 413(storeTemp) 416 + 417: 7(ivec4) Load 413(storeTemp) + 418: 7(ivec4) CompositeConstruct 103 103 103 103 + 419: 7(ivec4) IAdd 417 418 + Store 413(storeTemp) 419 + 420: 83 Load 85(g_tTex1di4) + 421: 6(int) Load 410(coordTemp) + 422: 7(ivec4) Load 413(storeTemp) + ImageWrite 420 421 422 + 424: 73(ptr) AccessChain 61 51 + 425: 6(int) Load 424 + Store 423(coordTemp) 425 + 427: 91 Load 93(g_tTex1du4) + 428: 6(int) Load 423(coordTemp) + 429: 14(ivec4) ImageRead 427 428 + Store 426(storeTemp) 429 + 430: 14(ivec4) Load 426(storeTemp) + 431: 7(ivec4) CompositeConstruct 103 103 103 103 + 432: 14(ivec4) IAdd 430 431 + Store 426(storeTemp) 432 + 433: 91 Load 93(g_tTex1du4) + 434: 6(int) Load 423(coordTemp) + 435: 14(ivec4) Load 426(storeTemp) + ImageWrite 433 434 435 + 437: 73(ptr) AccessChain 61 51 + 438: 6(int) Load 437 + Store 436(coordTemp) 438 + 440: 69 Load 71(g_tTex1df4) + 441: 6(int) Load 436(coordTemp) + 442: 21(fvec4) ImageRead 440 441 + Store 439(storeTemp) 442 + 443: 21(fvec4) Load 439(storeTemp) + 444: 21(fvec4) CompositeConstruct 404 404 404 404 + 445: 21(fvec4) FSub 443 444 + Store 439(storeTemp) 445 + 446: 69 Load 71(g_tTex1df4) + 447: 6(int) Load 436(coordTemp) + 448: 21(fvec4) Load 439(storeTemp) + ImageWrite 446 447 448 + 450: 73(ptr) AccessChain 61 51 + 451: 6(int) Load 450 + Store 449(coordTemp) 451 + 453: 83 Load 85(g_tTex1di4) + 454: 6(int) Load 449(coordTemp) + 455: 7(ivec4) ImageRead 453 454 + Store 452(storeTemp) 455 + 456: 7(ivec4) Load 452(storeTemp) + 457: 7(ivec4) CompositeConstruct 103 103 103 103 + 458: 7(ivec4) ISub 456 457 + Store 452(storeTemp) 458 + 459: 83 Load 85(g_tTex1di4) + 460: 6(int) Load 449(coordTemp) + 461: 7(ivec4) Load 452(storeTemp) + ImageWrite 459 460 461 + 463: 73(ptr) AccessChain 61 51 + 464: 6(int) Load 463 + Store 462(coordTemp) 464 + 466: 91 Load 93(g_tTex1du4) + 467: 6(int) Load 462(coordTemp) + 468: 14(ivec4) ImageRead 466 467 + Store 465(storeTemp) 468 + 469: 14(ivec4) Load 465(storeTemp) + 470: 7(ivec4) CompositeConstruct 103 103 103 103 + 471: 14(ivec4) ISub 469 470 + Store 465(storeTemp) 471 + 472: 91 Load 93(g_tTex1du4) + 473: 6(int) Load 462(coordTemp) + 474: 14(ivec4) Load 465(storeTemp) + ImageWrite 472 473 474 + 476: 73(ptr) AccessChain 61 51 + 477: 6(int) Load 476 + Store 475(coordTemp) 477 + 479: 69 Load 71(g_tTex1df4) + 480: 6(int) Load 475(coordTemp) + 481: 21(fvec4) ImageRead 479 480 + Store 478(storeTempPre) 481 + 483: 21(fvec4) Load 478(storeTempPre) + Store 482(storeTempPost) 483 + 484: 21(fvec4) Load 482(storeTempPost) + 485: 21(fvec4) CompositeConstruct 404 404 404 404 + 486: 21(fvec4) FAdd 484 485 + Store 482(storeTempPost) 486 + 487: 69 Load 71(g_tTex1df4) + 488: 6(int) Load 475(coordTemp) + 489: 21(fvec4) Load 482(storeTempPost) + ImageWrite 487 488 489 + 491: 73(ptr) AccessChain 61 51 + 492: 6(int) Load 491 + Store 490(coordTemp) 492 + 494: 91 Load 93(g_tTex1du4) + 495: 6(int) Load 490(coordTemp) + 496: 14(ivec4) ImageRead 494 495 + Store 493(storeTempPre) 496 + 498: 14(ivec4) Load 493(storeTempPre) + Store 497(storeTempPost) 498 + 499: 14(ivec4) Load 497(storeTempPost) + 500: 7(ivec4) CompositeConstruct 103 103 103 103 + 501: 14(ivec4) ISub 499 500 + Store 497(storeTempPost) 501 + 502: 91 Load 93(g_tTex1du4) + 503: 6(int) Load 490(coordTemp) + 504: 14(ivec4) Load 497(storeTempPost) + ImageWrite 502 503 504 + 506: 73(ptr) AccessChain 61 51 + 507: 6(int) Load 506 + Store 505(coordTemp) 507 + 509: 83 Load 85(g_tTex1di4) + 510: 6(int) Load 505(coordTemp) + 511: 7(ivec4) ImageRead 509 510 + Store 508(storeTempPre) 511 + 513: 7(ivec4) Load 508(storeTempPre) + Store 512(storeTempPost) 513 + 514: 7(ivec4) Load 512(storeTempPost) + 515: 7(ivec4) CompositeConstruct 103 103 103 103 + 516: 7(ivec4) IAdd 514 515 + Store 512(storeTempPost) 516 + 517: 83 Load 85(g_tTex1di4) + 518: 6(int) Load 505(coordTemp) + 519: 7(ivec4) Load 512(storeTempPost) + ImageWrite 517 518 519 + 521: 73(ptr) AccessChain 61 51 + 522: 6(int) Load 521 + Store 520(coordTemp) 522 + 524: 69 Load 71(g_tTex1df4) + 525: 6(int) Load 520(coordTemp) + 526: 21(fvec4) ImageRead 524 525 + Store 523(storeTempPre) 526 + 528: 21(fvec4) Load 523(storeTempPre) + Store 527(storeTempPost) 528 + 529: 21(fvec4) Load 527(storeTempPost) + 530: 21(fvec4) CompositeConstruct 404 404 404 404 + 531: 21(fvec4) FSub 529 530 + Store 527(storeTempPost) 531 + 532: 69 Load 71(g_tTex1df4) + 533: 6(int) Load 520(coordTemp) + 534: 21(fvec4) Load 527(storeTempPost) + ImageWrite 532 533 534 + 536: 73(ptr) AccessChain 61 51 + 537: 6(int) Load 536 + Store 535(coordTemp) 537 + 539: 83 Load 85(g_tTex1di4) + 540: 6(int) Load 535(coordTemp) + 541: 7(ivec4) ImageRead 539 540 + Store 538(storeTempPre) 541 + 543: 7(ivec4) Load 538(storeTempPre) + Store 542(storeTempPost) 543 + 544: 7(ivec4) Load 542(storeTempPost) + 545: 7(ivec4) CompositeConstruct 103 103 103 103 + 546: 7(ivec4) IAdd 544 545 + Store 542(storeTempPost) 546 + 547: 83 Load 85(g_tTex1di4) + 548: 6(int) Load 535(coordTemp) + 549: 7(ivec4) Load 542(storeTempPost) + ImageWrite 547 548 549 + 551: 73(ptr) AccessChain 61 51 + 552: 6(int) Load 551 + Store 550(coordTemp) 552 + 554: 91 Load 93(g_tTex1du4) + 555: 6(int) Load 550(coordTemp) + 556: 14(ivec4) ImageRead 554 555 + Store 553(storeTempPre) 556 + 558: 14(ivec4) Load 553(storeTempPre) + Store 557(storeTempPost) 558 + 559: 14(ivec4) Load 557(storeTempPost) + 560: 7(ivec4) CompositeConstruct 103 103 103 103 + 561: 14(ivec4) ISub 559 560 + Store 557(storeTempPost) 561 + 562: 91 Load 93(g_tTex1du4) + 563: 6(int) Load 550(coordTemp) + 564: 14(ivec4) Load 557(storeTempPost) + ImageWrite 562 563 564 + 566: 99 Load 101(g_tTex2df4) + 568: 21(fvec4) ImageRead 566 567 + Store 565(storeTemp) 568 + 569: 69 Load 71(g_tTex1df4) + 570: 21(fvec4) Load 565(storeTemp) + ImageWrite 569 103 570 + 575: 22(ptr) AccessChain 573(psout) 51 + Store 575 574 + 578: 22(ptr) AccessChain 573(psout) 51 + 579: 21(fvec4) Load 578 + Store 577(Color) 579 + Return + FunctionEnd + 11(Fn1(vi4;): 7(ivec4) Function None 9 + 10(x): 8(ptr) FunctionParameter + 12: Label + 42: 7(ivec4) Load 10(x) + ReturnValue 42 + FunctionEnd + 18(Fn1(vu4;): 14(ivec4) Function None 16 + 17(x): 15(ptr) FunctionParameter + 19: Label + 45: 14(ivec4) Load 17(x) + ReturnValue 45 + FunctionEnd + 25(Fn1(vf4;): 21(fvec4) Function None 23 + 24(x): 22(ptr) FunctionParameter + 26: Label + 48: 21(fvec4) Load 24(x) + ReturnValue 48 + FunctionEnd + 29(Fn2(vi4;): 2 Function None 27 + 28(x): 8(ptr) FunctionParameter + 30: Label + Store 28(x) 52 + Return + FunctionEnd + 33(Fn2(vu4;): 2 Function None 31 + 32(x): 15(ptr) FunctionParameter + 34: Label + Store 32(x) 54 + Return + FunctionEnd + 37(Fn2(vf4;): 2 Function None 35 + 36(x): 22(ptr) FunctionParameter + 38: Label + Store 36(x) 56 + Return + FunctionEnd + 40(SomeValue(): 21(fvec4) Function None 39 + 41: Label + 64: 63(ptr) AccessChain 61 62 + 65: 7(ivec4) Load 64 + 66: 21(fvec4) ConvertSToF 65 + ReturnValue 66 + FunctionEnd diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out new file mode 100644 index 00000000..904c2dab --- /dev/null +++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out @@ -0,0 +1,2560 @@ +hlsl.rw.scalar.bracket.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:42 Function Definition: Fn1(i1; (temp int) +0:42 Function Parameters: +0:42 'x' (in int) +0:? Sequence +0:42 Branch: Return with expression +0:42 'x' (in int) +0:43 Function Definition: Fn1(u1; (temp uint) +0:43 Function Parameters: +0:43 'x' (in uint) +0:? Sequence +0:43 Branch: Return with expression +0:43 'x' (in uint) +0:44 Function Definition: Fn1(f1; (temp float) +0:44 Function Parameters: +0:44 'x' (in float) +0:? Sequence +0:44 Branch: Return with expression +0:44 'x' (in float) +0:46 Function Definition: Fn2(i1; (temp void) +0:46 Function Parameters: +0:46 'x' (out int) +0:? Sequence +0:46 move second child to first child (temp int) +0:46 'x' (out int) +0:46 Constant: +0:46 0 (const int) +0:47 Function Definition: Fn2(u1; (temp void) +0:47 Function Parameters: +0:47 'x' (out uint) +0:? Sequence +0:47 move second child to first child (temp uint) +0:47 'x' (out uint) +0:47 Constant: +0:47 0 (const uint) +0:48 Function Definition: Fn2(f1; (temp void) +0:48 Function Parameters: +0:48 'x' (out float) +0:? Sequence +0:48 move second child to first child (temp float) +0:48 'x' (out float) +0:48 Constant: +0:48 0.000000 +0:50 Function Definition: SomeValue( (temp float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp float) +0:50 c1: direct index for structure (layout(offset=0 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:50 Constant: +0:50 0 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp float) +0:57 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp float) +0:59 'r00' (temp float) +0:59 imageLoad (temp float) +0:59 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:59 Constant: +0:59 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp int) +0:60 'r01' (temp int) +0:60 imageLoad (temp int) +0:60 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:60 Constant: +0:60 0 (const uint) +0:61 Sequence +0:61 move second child to first child (temp uint) +0:61 'r02' (temp uint) +0:61 imageLoad (temp uint) +0:61 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:61 Constant: +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp float) +0:64 'r10' (temp float) +0:64 imageLoad (temp float) +0:64 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:64 Constant: +0:64 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp int) +0:65 'r11' (temp int) +0:65 imageLoad (temp int) +0:65 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:65 Constant: +0:65 1 (const uint) +0:66 Sequence +0:66 move second child to first child (temp uint) +0:66 'r12' (temp uint) +0:66 imageLoad (temp uint) +0:66 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:66 Constant: +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp float) +0:69 'r20' (temp float) +0:69 imageLoad (temp float) +0:69 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp int) +0:70 'r21' (temp int) +0:70 imageLoad (temp int) +0:70 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp uint) +0:71 'r22' (temp uint) +0:71 imageLoad (temp uint) +0:71 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp float) +0:73 'lf1' (temp float) +0:73 uf1: direct index for structure (layout(offset=96 ) uniform float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp float) +0:77 'storeTemp' (temp float) +0:77 Function Call: SomeValue( (temp float) +0:77 imageStore (temp void) +0:77 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp float) +0:77 'storeTemp' (temp float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf1' (temp float) +0:78 'lf1' (temp float) +0:79 Sequence +0:79 move second child to first child (temp int) +0:79 'storeTemp' (temp int) +0:79 Constant: +0:79 2 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp int) +0:79 'storeTemp' (temp int) +0:80 Sequence +0:80 move second child to first child (temp uint) +0:80 'storeTemp' (temp uint) +0:80 Constant: +0:80 3 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp uint) +0:80 'storeTemp' (temp uint) +0:83 Sequence +0:83 move second child to first child (temp float) +0:83 'val1' (temp float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp float) +0:83 'storeTemp' (temp float) +0:83 imageLoad (temp float) +0:83 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 multiply second child into first child (temp float) +0:83 'storeTemp' (temp float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp float) +0:83 'storeTemp' (temp float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp float) +0:84 'storeTemp' (temp float) +0:84 imageLoad (temp float) +0:84 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp float) +0:84 'storeTemp' (temp float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp float) +0:84 'storeTemp' (temp float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp float) +0:85 'storeTemp' (temp float) +0:85 imageLoad (temp float) +0:85 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp float) +0:85 'storeTemp' (temp float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp float) +0:85 'storeTemp' (temp float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:87 Constant: +0:87 0 (const uint) +0:87 move second child to first child (temp int) +0:87 'storeTemp' (temp int) +0:87 imageLoad (temp int) +0:87 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp int) +0:87 'storeTemp' (temp int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp int) +0:87 'storeTemp' (temp int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:88 Constant: +0:88 0 (const uint) +0:88 move second child to first child (temp int) +0:88 'storeTemp' (temp int) +0:88 imageLoad (temp int) +0:88 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp int) +0:88 'storeTemp' (temp int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp int) +0:88 'storeTemp' (temp int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp int) +0:89 'storeTemp' (temp int) +0:89 imageLoad (temp int) +0:89 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp int) +0:89 'storeTemp' (temp int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp int) +0:89 'storeTemp' (temp int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp int) +0:90 'storeTemp' (temp int) +0:90 imageLoad (temp int) +0:90 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp int) +0:90 'storeTemp' (temp int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp int) +0:90 'storeTemp' (temp int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp int) +0:91 'storeTemp' (temp int) +0:91 imageLoad (temp int) +0:91 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp int) +0:91 'storeTemp' (temp int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp int) +0:91 'storeTemp' (temp int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp int) +0:92 'storeTemp' (temp int) +0:92 imageLoad (temp int) +0:92 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp int) +0:92 'storeTemp' (temp int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp int) +0:92 'storeTemp' (temp int) +0:95 Sequence +0:95 move second child to first child (temp float) +0:95 'storeTemp' (temp float) +0:95 Function Call: SomeValue( (temp float) +0:95 imageStore (temp void) +0:95 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp float) +0:95 'storeTemp' (temp float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf1' (temp float) +0:96 'lf1' (temp float) +0:97 Sequence +0:97 move second child to first child (temp int) +0:97 'storeTemp' (temp int) +0:97 Constant: +0:97 5 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp int) +0:97 'storeTemp' (temp int) +0:98 Sequence +0:98 move second child to first child (temp uint) +0:98 'storeTemp' (temp uint) +0:98 Constant: +0:98 6 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp uint) +0:98 'storeTemp' (temp uint) +0:101 Sequence +0:101 move second child to first child (temp float) +0:101 'storeTemp' (temp float) +0:101 Function Call: SomeValue( (temp float) +0:101 imageStore (temp void) +0:101 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp float) +0:101 'storeTemp' (temp float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf1' (temp float) +0:102 'lf1' (temp float) +0:103 Sequence +0:103 move second child to first child (temp int) +0:103 'storeTemp' (temp int) +0:103 Constant: +0:103 8 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp int) +0:103 'storeTemp' (temp int) +0:104 Sequence +0:104 move second child to first child (temp uint) +0:104 'storeTemp' (temp uint) +0:104 Constant: +0:104 9 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp uint) +0:104 'storeTemp' (temp uint) +0:107 Function Call: Fn1(f1; (temp float) +0:107 imageLoad (temp float) +0:107 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(i1; (temp int) +0:108 imageLoad (temp int) +0:108 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(u1; (temp uint) +0:109 imageLoad (temp uint) +0:109 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(f1; (temp void) +0:111 'tempArg' (temp float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp float) +0:111 'tempArg' (temp float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(i1; (temp void) +0:112 'tempArg' (temp int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp int) +0:112 'tempArg' (temp int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(u1; (temp void) +0:113 'tempArg' (temp uint) +0:113 Sequence +0:113 imageStore (temp void) +0:113 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:113 Constant: +0:113 0 (const uint) +0:113 'tempArg' (temp uint) +0:113 'tempArg' (temp uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp float) +0:117 'storeTemp' (temp float) +0:117 imageLoad (temp float) +0:117 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp float) +0:117 'storeTemp' (temp float) +0:117 imageStore (temp void) +0:117 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp float) +0:117 'storeTemp' (temp float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp int) +0:118 'storeTemp' (temp int) +0:118 imageLoad (temp int) +0:118 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp int) +0:118 'storeTemp' (temp int) +0:118 imageStore (temp void) +0:118 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp int) +0:118 'storeTemp' (temp int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp uint) +0:119 'storeTemp' (temp uint) +0:119 imageLoad (temp uint) +0:119 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp uint) +0:119 'storeTemp' (temp uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp uint) +0:119 'storeTemp' (temp uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp float) +0:121 'storeTemp' (temp float) +0:121 imageLoad (temp float) +0:121 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp float) +0:121 'storeTemp' (temp float) +0:121 imageStore (temp void) +0:121 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp float) +0:121 'storeTemp' (temp float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp int) +0:122 'storeTemp' (temp int) +0:122 imageLoad (temp int) +0:122 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp int) +0:122 'storeTemp' (temp int) +0:122 imageStore (temp void) +0:122 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp int) +0:122 'storeTemp' (temp int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp uint) +0:123 'storeTemp' (temp uint) +0:123 imageLoad (temp uint) +0:123 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp uint) +0:123 'storeTemp' (temp uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp uint) +0:123 'storeTemp' (temp uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp float) +0:126 'storeTempPre' (temp float) +0:126 imageLoad (temp float) +0:126 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp float) +0:126 'storeTempPost' (temp float) +0:126 'storeTempPre' (temp float) +0:126 Post-Increment (temp float) +0:126 'storeTempPost' (temp float) +0:126 imageStore (temp void) +0:126 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp float) +0:126 'storeTempPre' (temp float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp uint) +0:127 'storeTempPre' (temp uint) +0:127 imageLoad (temp uint) +0:127 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp uint) +0:127 'storeTempPost' (temp uint) +0:127 'storeTempPre' (temp uint) +0:127 Post-Decrement (temp uint) +0:127 'storeTempPost' (temp uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp uint) +0:127 'storeTempPre' (temp uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp int) +0:128 'storeTempPre' (temp int) +0:128 imageLoad (temp int) +0:128 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp int) +0:128 'storeTempPost' (temp int) +0:128 'storeTempPre' (temp int) +0:128 Post-Increment (temp int) +0:128 'storeTempPost' (temp int) +0:128 imageStore (temp void) +0:128 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp int) +0:128 'storeTempPre' (temp int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp float) +0:130 'storeTempPre' (temp float) +0:130 imageLoad (temp float) +0:130 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp float) +0:130 'storeTempPost' (temp float) +0:130 'storeTempPre' (temp float) +0:130 Post-Decrement (temp float) +0:130 'storeTempPost' (temp float) +0:130 imageStore (temp void) +0:130 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp float) +0:130 'storeTempPre' (temp float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp int) +0:131 'storeTempPre' (temp int) +0:131 imageLoad (temp int) +0:131 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp int) +0:131 'storeTempPost' (temp int) +0:131 'storeTempPre' (temp int) +0:131 Post-Increment (temp int) +0:131 'storeTempPost' (temp int) +0:131 imageStore (temp void) +0:131 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp int) +0:131 'storeTempPre' (temp int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp uint) +0:132 'storeTempPre' (temp uint) +0:132 imageLoad (temp uint) +0:132 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp uint) +0:132 'storeTempPost' (temp uint) +0:132 'storeTempPre' (temp uint) +0:132 Post-Decrement (temp uint) +0:132 'storeTempPost' (temp uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp uint) +0:132 'storeTempPre' (temp uint) +0:135 Sequence +0:135 move second child to first child (temp float) +0:135 'storeTemp' (temp float) +0:? imageLoad (temp float) +0:135 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp float) +0:135 'storeTemp' (temp float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:? 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:? 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:? 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:? 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:? 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:? 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:? 'g_tTex1df1a' (layout(r32f ) uniform image1DArray) +0:? 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:? 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:? 'g_tTex2df1a' (layout(r32f ) uniform image2DArray) +0:? 'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray) +0:? 'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +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:42 Function Definition: Fn1(i1; (temp int) +0:42 Function Parameters: +0:42 'x' (in int) +0:? Sequence +0:42 Branch: Return with expression +0:42 'x' (in int) +0:43 Function Definition: Fn1(u1; (temp uint) +0:43 Function Parameters: +0:43 'x' (in uint) +0:? Sequence +0:43 Branch: Return with expression +0:43 'x' (in uint) +0:44 Function Definition: Fn1(f1; (temp float) +0:44 Function Parameters: +0:44 'x' (in float) +0:? Sequence +0:44 Branch: Return with expression +0:44 'x' (in float) +0:46 Function Definition: Fn2(i1; (temp void) +0:46 Function Parameters: +0:46 'x' (out int) +0:? Sequence +0:46 move second child to first child (temp int) +0:46 'x' (out int) +0:46 Constant: +0:46 0 (const int) +0:47 Function Definition: Fn2(u1; (temp void) +0:47 Function Parameters: +0:47 'x' (out uint) +0:? Sequence +0:47 move second child to first child (temp uint) +0:47 'x' (out uint) +0:47 Constant: +0:47 0 (const uint) +0:48 Function Definition: Fn2(f1; (temp void) +0:48 Function Parameters: +0:48 'x' (out float) +0:? Sequence +0:48 move second child to first child (temp float) +0:48 'x' (out float) +0:48 Constant: +0:48 0.000000 +0:50 Function Definition: SomeValue( (temp float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp float) +0:50 c1: direct index for structure (layout(offset=0 ) uniform int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:50 Constant: +0:50 0 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp float) +0:57 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp float) +0:59 'r00' (temp float) +0:59 imageLoad (temp float) +0:59 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:59 Constant: +0:59 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp int) +0:60 'r01' (temp int) +0:60 imageLoad (temp int) +0:60 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:60 Constant: +0:60 0 (const uint) +0:61 Sequence +0:61 move second child to first child (temp uint) +0:61 'r02' (temp uint) +0:61 imageLoad (temp uint) +0:61 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:61 Constant: +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp float) +0:64 'r10' (temp float) +0:64 imageLoad (temp float) +0:64 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:64 Constant: +0:64 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp int) +0:65 'r11' (temp int) +0:65 imageLoad (temp int) +0:65 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:65 Constant: +0:65 1 (const uint) +0:66 Sequence +0:66 move second child to first child (temp uint) +0:66 'r12' (temp uint) +0:66 imageLoad (temp uint) +0:66 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:66 Constant: +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp float) +0:69 'r20' (temp float) +0:69 imageLoad (temp float) +0:69 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp int) +0:70 'r21' (temp int) +0:70 imageLoad (temp int) +0:70 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp uint) +0:71 'r22' (temp uint) +0:71 imageLoad (temp uint) +0:71 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp float) +0:73 'lf1' (temp float) +0:73 uf1: direct index for structure (layout(offset=96 ) uniform float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp float) +0:77 'storeTemp' (temp float) +0:77 Function Call: SomeValue( (temp float) +0:77 imageStore (temp void) +0:77 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp float) +0:77 'storeTemp' (temp float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf1' (temp float) +0:78 'lf1' (temp float) +0:79 Sequence +0:79 move second child to first child (temp int) +0:79 'storeTemp' (temp int) +0:79 Constant: +0:79 2 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp int) +0:79 'storeTemp' (temp int) +0:80 Sequence +0:80 move second child to first child (temp uint) +0:80 'storeTemp' (temp uint) +0:80 Constant: +0:80 3 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp uint) +0:80 'storeTemp' (temp uint) +0:83 Sequence +0:83 move second child to first child (temp float) +0:83 'val1' (temp float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp float) +0:83 'storeTemp' (temp float) +0:83 imageLoad (temp float) +0:83 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 multiply second child into first child (temp float) +0:83 'storeTemp' (temp float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp float) +0:83 'storeTemp' (temp float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp float) +0:84 'storeTemp' (temp float) +0:84 imageLoad (temp float) +0:84 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp float) +0:84 'storeTemp' (temp float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp float) +0:84 'storeTemp' (temp float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp float) +0:85 'storeTemp' (temp float) +0:85 imageLoad (temp float) +0:85 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp float) +0:85 'storeTemp' (temp float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp float) +0:85 'storeTemp' (temp float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:87 Constant: +0:87 0 (const uint) +0:87 move second child to first child (temp int) +0:87 'storeTemp' (temp int) +0:87 imageLoad (temp int) +0:87 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp int) +0:87 'storeTemp' (temp int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp int) +0:87 'storeTemp' (temp int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:88 Constant: +0:88 0 (const uint) +0:88 move second child to first child (temp int) +0:88 'storeTemp' (temp int) +0:88 imageLoad (temp int) +0:88 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp int) +0:88 'storeTemp' (temp int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp int) +0:88 'storeTemp' (temp int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp int) +0:89 'storeTemp' (temp int) +0:89 imageLoad (temp int) +0:89 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp int) +0:89 'storeTemp' (temp int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp int) +0:89 'storeTemp' (temp int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp int) +0:90 'storeTemp' (temp int) +0:90 imageLoad (temp int) +0:90 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp int) +0:90 'storeTemp' (temp int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp int) +0:90 'storeTemp' (temp int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp int) +0:91 'storeTemp' (temp int) +0:91 imageLoad (temp int) +0:91 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp int) +0:91 'storeTemp' (temp int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp int) +0:91 'storeTemp' (temp int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp int) +0:92 'storeTemp' (temp int) +0:92 imageLoad (temp int) +0:92 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp int) +0:92 'storeTemp' (temp int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp int) +0:92 'storeTemp' (temp int) +0:95 Sequence +0:95 move second child to first child (temp float) +0:95 'storeTemp' (temp float) +0:95 Function Call: SomeValue( (temp float) +0:95 imageStore (temp void) +0:95 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp float) +0:95 'storeTemp' (temp float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf1' (temp float) +0:96 'lf1' (temp float) +0:97 Sequence +0:97 move second child to first child (temp int) +0:97 'storeTemp' (temp int) +0:97 Constant: +0:97 5 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp int) +0:97 'storeTemp' (temp int) +0:98 Sequence +0:98 move second child to first child (temp uint) +0:98 'storeTemp' (temp uint) +0:98 Constant: +0:98 6 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp uint) +0:98 'storeTemp' (temp uint) +0:101 Sequence +0:101 move second child to first child (temp float) +0:101 'storeTemp' (temp float) +0:101 Function Call: SomeValue( (temp float) +0:101 imageStore (temp void) +0:101 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp float) +0:101 'storeTemp' (temp float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf1' (temp float) +0:102 'lf1' (temp float) +0:103 Sequence +0:103 move second child to first child (temp int) +0:103 'storeTemp' (temp int) +0:103 Constant: +0:103 8 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp int) +0:103 'storeTemp' (temp int) +0:104 Sequence +0:104 move second child to first child (temp uint) +0:104 'storeTemp' (temp uint) +0:104 Constant: +0:104 9 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp uint) +0:104 'storeTemp' (temp uint) +0:107 Function Call: Fn1(f1; (temp float) +0:107 imageLoad (temp float) +0:107 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(i1; (temp int) +0:108 imageLoad (temp int) +0:108 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(u1; (temp uint) +0:109 imageLoad (temp uint) +0:109 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(f1; (temp void) +0:111 'tempArg' (temp float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp float) +0:111 'tempArg' (temp float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(i1; (temp void) +0:112 'tempArg' (temp int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp int) +0:112 'tempArg' (temp int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(u1; (temp void) +0:113 'tempArg' (temp uint) +0:113 Sequence +0:113 imageStore (temp void) +0:113 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:113 Constant: +0:113 0 (const uint) +0:113 'tempArg' (temp uint) +0:113 'tempArg' (temp uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp float) +0:117 'storeTemp' (temp float) +0:117 imageLoad (temp float) +0:117 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp float) +0:117 'storeTemp' (temp float) +0:117 imageStore (temp void) +0:117 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp float) +0:117 'storeTemp' (temp float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp int) +0:118 'storeTemp' (temp int) +0:118 imageLoad (temp int) +0:118 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp int) +0:118 'storeTemp' (temp int) +0:118 imageStore (temp void) +0:118 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp int) +0:118 'storeTemp' (temp int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp uint) +0:119 'storeTemp' (temp uint) +0:119 imageLoad (temp uint) +0:119 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp uint) +0:119 'storeTemp' (temp uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp uint) +0:119 'storeTemp' (temp uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp float) +0:121 'storeTemp' (temp float) +0:121 imageLoad (temp float) +0:121 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp float) +0:121 'storeTemp' (temp float) +0:121 imageStore (temp void) +0:121 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp float) +0:121 'storeTemp' (temp float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp int) +0:122 'storeTemp' (temp int) +0:122 imageLoad (temp int) +0:122 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp int) +0:122 'storeTemp' (temp int) +0:122 imageStore (temp void) +0:122 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp int) +0:122 'storeTemp' (temp int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp uint) +0:123 'storeTemp' (temp uint) +0:123 imageLoad (temp uint) +0:123 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp uint) +0:123 'storeTemp' (temp uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp uint) +0:123 'storeTemp' (temp uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp float) +0:126 'storeTempPre' (temp float) +0:126 imageLoad (temp float) +0:126 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp float) +0:126 'storeTempPost' (temp float) +0:126 'storeTempPre' (temp float) +0:126 Post-Increment (temp float) +0:126 'storeTempPost' (temp float) +0:126 imageStore (temp void) +0:126 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp float) +0:126 'storeTempPre' (temp float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp uint) +0:127 'storeTempPre' (temp uint) +0:127 imageLoad (temp uint) +0:127 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp uint) +0:127 'storeTempPost' (temp uint) +0:127 'storeTempPre' (temp uint) +0:127 Post-Decrement (temp uint) +0:127 'storeTempPost' (temp uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp uint) +0:127 'storeTempPre' (temp uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp int) +0:128 'storeTempPre' (temp int) +0:128 imageLoad (temp int) +0:128 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp int) +0:128 'storeTempPost' (temp int) +0:128 'storeTempPre' (temp int) +0:128 Post-Increment (temp int) +0:128 'storeTempPost' (temp int) +0:128 imageStore (temp void) +0:128 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp int) +0:128 'storeTempPre' (temp int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp float) +0:130 'storeTempPre' (temp float) +0:130 imageLoad (temp float) +0:130 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp float) +0:130 'storeTempPost' (temp float) +0:130 'storeTempPre' (temp float) +0:130 Post-Decrement (temp float) +0:130 'storeTempPost' (temp float) +0:130 imageStore (temp void) +0:130 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp float) +0:130 'storeTempPre' (temp float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp int) +0:131 'storeTempPre' (temp int) +0:131 imageLoad (temp int) +0:131 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp int) +0:131 'storeTempPost' (temp int) +0:131 'storeTempPre' (temp int) +0:131 Post-Increment (temp int) +0:131 'storeTempPost' (temp int) +0:131 imageStore (temp void) +0:131 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp int) +0:131 'storeTempPre' (temp int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp uint) +0:132 'storeTempPre' (temp uint) +0:132 imageLoad (temp uint) +0:132 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp uint) +0:132 'storeTempPost' (temp uint) +0:132 'storeTempPre' (temp uint) +0:132 Post-Decrement (temp uint) +0:132 'storeTempPost' (temp uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp uint) +0:132 'storeTempPre' (temp uint) +0:135 Sequence +0:135 move second child to first child (temp float) +0:135 'storeTemp' (temp float) +0:? imageLoad (temp float) +0:135 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp float) +0:135 'storeTemp' (temp float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df1' (layout(r32f ) uniform image1D) +0:? 'g_tTex1di1' (layout(r32i ) uniform iimage1D) +0:? 'g_tTex1du1' (layout(r32ui ) uniform uimage1D) +0:? 'g_tTex2df1' (layout(r32f ) uniform image2D) +0:? 'g_tTex2di1' (layout(r32i ) uniform iimage2D) +0:? 'g_tTex2du1' (layout(r32ui ) uniform uimage2D) +0:? 'g_tTex3df1' (layout(r32f ) uniform image3D) +0:? 'g_tTex3di1' (layout(r32i ) uniform iimage3D) +0:? 'g_tTex3du1' (layout(r32ui ) uniform uimage3D) +0:? 'g_tTex1df1a' (layout(r32f ) uniform image1DArray) +0:? 'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray) +0:? 'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray) +0:? 'g_tTex2df1a' (layout(r32f ) uniform image2DArray) +0:? 'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray) +0:? 'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 566 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 541 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 10 "Fn1(i1;" + Name 9 "x" + Name 16 "Fn1(u1;" + Name 15 "x" + Name 22 "Fn1(f1;" + Name 21 "x" + Name 26 "Fn2(i1;" + Name 25 "x" + Name 30 "Fn2(u1;" + Name 29 "x" + Name 34 "Fn2(f1;" + Name 33 "x" + Name 37 "SomeValue(" + Name 54 "$Global" + MemberName 54($Global) 0 "c1" + MemberName 54($Global) 1 "c2" + MemberName 54($Global) 2 "c3" + MemberName 54($Global) 3 "c4" + MemberName 54($Global) 4 "o1" + MemberName 54($Global) 5 "o2" + MemberName 54($Global) 6 "o3" + MemberName 54($Global) 7 "o4" + MemberName 54($Global) 8 "uf1" + MemberName 54($Global) 9 "ui1" + MemberName 54($Global) 10 "uu1" + Name 56 "" + Name 65 "g_tTex1df1" + Name 70 "r00" + Name 75 "r01" + Name 78 "g_tTex1di1" + Name 83 "r02" + Name 86 "g_tTex1du1" + Name 91 "r10" + Name 94 "g_tTex2df1" + Name 101 "r11" + Name 104 "g_tTex2di1" + Name 109 "r12" + Name 112 "g_tTex2du1" + Name 117 "r20" + Name 120 "g_tTex3df1" + Name 127 "r21" + Name 130 "g_tTex3di1" + Name 135 "r22" + Name 138 "g_tTex3du1" + Name 143 "lf1" + Name 148 "storeTemp" + Name 158 "storeTemp" + Name 163 "storeTemp" + Name 169 "val1" + Name 170 "coordTemp" + Name 173 "storeTemp" + Name 184 "coordTemp" + Name 187 "storeTemp" + Name 197 "coordTemp" + Name 200 "storeTemp" + Name 210 "coordTemp" + Name 213 "storeTemp" + Name 222 "coordTemp" + Name 225 "storeTemp" + Name 234 "coordTemp" + Name 237 "storeTemp" + Name 247 "coordTemp" + Name 250 "storeTemp" + Name 260 "coordTemp" + Name 263 "storeTemp" + Name 272 "coordTemp" + Name 275 "storeTemp" + Name 284 "storeTemp" + Name 294 "storeTemp" + Name 300 "storeTemp" + Name 306 "storeTemp" + Name 316 "storeTemp" + Name 321 "storeTemp" + Name 331 "param" + Name 337 "param" + Name 343 "param" + Name 345 "tempArg" + Name 346 "param" + Name 353 "tempArg" + Name 354 "param" + Name 361 "tempArg" + Name 362 "param" + Name 369 "coordTemp" + Name 372 "storeTemp" + Name 382 "coordTemp" + Name 385 "storeTemp" + Name 394 "coordTemp" + Name 397 "storeTemp" + Name 406 "coordTemp" + Name 409 "storeTemp" + Name 418 "coordTemp" + Name 421 "storeTemp" + Name 430 "coordTemp" + Name 433 "storeTemp" + Name 442 "coordTemp" + Name 445 "storeTempPre" + Name 449 "storeTempPost" + Name 456 "coordTemp" + Name 459 "storeTempPre" + Name 463 "storeTempPost" + Name 470 "coordTemp" + Name 473 "storeTempPre" + Name 477 "storeTempPost" + Name 484 "coordTemp" + Name 487 "storeTempPre" + Name 491 "storeTempPost" + Name 498 "coordTemp" + Name 501 "storeTempPre" + Name 505 "storeTempPost" + Name 512 "coordTemp" + Name 515 "storeTempPre" + Name 519 "storeTempPost" + Name 526 "storeTemp" + Name 534 "PS_OUTPUT" + MemberName 534(PS_OUTPUT) 0 "Color" + Name 536 "psout" + Name 541 "Color" + Name 547 "g_sSamp" + Name 550 "g_tTex1df1a" + Name 553 "g_tTex1di1a" + Name 556 "g_tTex1du1a" + Name 559 "g_tTex2df1a" + Name 562 "g_tTex2di1a" + Name 565 "g_tTex2du1a" + MemberDecorate 54($Global) 0 Offset 0 + MemberDecorate 54($Global) 1 Offset 8 + MemberDecorate 54($Global) 2 Offset 16 + MemberDecorate 54($Global) 3 Offset 32 + MemberDecorate 54($Global) 4 Offset 48 + MemberDecorate 54($Global) 5 Offset 56 + MemberDecorate 54($Global) 6 Offset 64 + MemberDecorate 54($Global) 7 Offset 80 + MemberDecorate 54($Global) 8 Offset 96 + MemberDecorate 54($Global) 9 Offset 100 + MemberDecorate 54($Global) 10 Offset 104 + Decorate 54($Global) Block + Decorate 56 DescriptorSet 0 + Decorate 65(g_tTex1df1) DescriptorSet 0 + Decorate 78(g_tTex1di1) DescriptorSet 0 + Decorate 86(g_tTex1du1) DescriptorSet 0 + Decorate 94(g_tTex2df1) DescriptorSet 0 + Decorate 104(g_tTex2di1) DescriptorSet 0 + Decorate 112(g_tTex2du1) DescriptorSet 0 + Decorate 120(g_tTex3df1) DescriptorSet 0 + Decorate 130(g_tTex3di1) DescriptorSet 0 + Decorate 138(g_tTex3du1) DescriptorSet 0 + Decorate 541(Color) Location 0 + Decorate 547(g_sSamp) DescriptorSet 0 + Decorate 547(g_sSamp) Binding 0 + Decorate 550(g_tTex1df1a) DescriptorSet 0 + Decorate 553(g_tTex1di1a) DescriptorSet 0 + Decorate 556(g_tTex1du1a) DescriptorSet 0 + Decorate 559(g_tTex2df1a) DescriptorSet 0 + Decorate 562(g_tTex2di1a) DescriptorSet 0 + Decorate 565(g_tTex2du1a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 8: TypeFunction 6(int) 7(ptr) + 12: TypeInt 32 0 + 13: TypePointer Function 12(int) + 14: TypeFunction 12(int) 13(ptr) + 18: TypeFloat 32 + 19: TypePointer Function 18(float) + 20: TypeFunction 18(float) 19(ptr) + 24: TypeFunction 2 7(ptr) + 28: TypeFunction 2 13(ptr) + 32: TypeFunction 2 19(ptr) + 36: TypeFunction 18(float) + 48: 6(int) Constant 0 + 49: 12(int) Constant 0 + 50: 18(float) Constant 0 + 51: TypeVector 6(int) 2 + 52: TypeVector 6(int) 3 + 53: TypeVector 6(int) 4 + 54($Global): TypeStruct 6(int) 51(ivec2) 52(ivec3) 53(ivec4) 6(int) 51(ivec2) 52(ivec3) 53(ivec4) 18(float) 6(int) 12(int) + 55: TypePointer Uniform 54($Global) + 56: 55(ptr) Variable Uniform + 57: TypePointer Uniform 6(int) + 63: TypeImage 18(float) 1D nonsampled format:R32f + 64: TypePointer UniformConstant 63 + 65(g_tTex1df1): 64(ptr) Variable UniformConstant + 76: TypeImage 6(int) 1D nonsampled format:R32i + 77: TypePointer UniformConstant 76 + 78(g_tTex1di1): 77(ptr) Variable UniformConstant + 84: TypeImage 12(int) 1D nonsampled format:R32ui + 85: TypePointer UniformConstant 84 + 86(g_tTex1du1): 85(ptr) Variable UniformConstant + 92: TypeImage 18(float) 2D nonsampled format:R32f + 93: TypePointer UniformConstant 92 + 94(g_tTex2df1): 93(ptr) Variable UniformConstant + 96: 6(int) Constant 1 + 97: TypePointer Uniform 51(ivec2) + 102: TypeImage 6(int) 2D nonsampled format:R32i + 103: TypePointer UniformConstant 102 + 104(g_tTex2di1): 103(ptr) Variable UniformConstant + 110: TypeImage 12(int) 2D nonsampled format:R32ui + 111: TypePointer UniformConstant 110 + 112(g_tTex2du1): 111(ptr) Variable UniformConstant + 118: TypeImage 18(float) 3D nonsampled format:R32f + 119: TypePointer UniformConstant 118 + 120(g_tTex3df1): 119(ptr) Variable UniformConstant + 122: 6(int) Constant 2 + 123: TypePointer Uniform 52(ivec3) + 128: TypeImage 6(int) 3D nonsampled format:R32i + 129: TypePointer UniformConstant 128 + 130(g_tTex3di1): 129(ptr) Variable UniformConstant + 136: TypeImage 12(int) 3D nonsampled format:R32ui + 137: TypePointer UniformConstant 136 + 138(g_tTex3du1): 137(ptr) Variable UniformConstant + 144: 6(int) Constant 8 + 145: TypePointer Uniform 18(float) + 164: 12(int) Constant 3 + 177: 18(float) Constant 1073741824 + 191: 18(float) Constant 1077936128 + 204: 18(float) Constant 1082130432 + 241: 6(int) Constant 65535 + 254: 6(int) Constant 61680 + 295: 6(int) Constant 5 + 301: 12(int) Constant 6 + 322: 12(int) Constant 9 + 377: 18(float) Constant 1065353216 + 528: 6(int) Constant 3 + 529: 51(ivec2) ConstantComposite 122 528 + 533: TypeVector 18(float) 4 + 534(PS_OUTPUT): TypeStruct 533(fvec4) + 535: TypePointer Function 534(PS_OUTPUT) + 537: 533(fvec4) ConstantComposite 377 377 377 377 + 538: TypePointer Function 533(fvec4) + 540: TypePointer Output 533(fvec4) + 541(Color): 540(ptr) Variable Output + 545: TypeSampler + 546: TypePointer UniformConstant 545 + 547(g_sSamp): 546(ptr) Variable UniformConstant + 548: TypeImage 18(float) 1D array nonsampled format:R32f + 549: TypePointer UniformConstant 548 +550(g_tTex1df1a): 549(ptr) Variable UniformConstant + 551: TypeImage 6(int) 1D array nonsampled format:R32i + 552: TypePointer UniformConstant 551 +553(g_tTex1di1a): 552(ptr) Variable UniformConstant + 554: TypeImage 12(int) 1D array nonsampled format:R32ui + 555: TypePointer UniformConstant 554 +556(g_tTex1du1a): 555(ptr) Variable UniformConstant + 557: TypeImage 18(float) 2D array nonsampled format:R32f + 558: TypePointer UniformConstant 557 +559(g_tTex2df1a): 558(ptr) Variable UniformConstant + 560: TypeImage 6(int) 2D array nonsampled format:R32i + 561: TypePointer UniformConstant 560 +562(g_tTex2di1a): 561(ptr) Variable UniformConstant + 563: TypeImage 12(int) 2D array nonsampled format:R32ui + 564: TypePointer UniformConstant 563 +565(g_tTex2du1a): 564(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 70(r00): 19(ptr) Variable Function + 75(r01): 7(ptr) Variable Function + 83(r02): 13(ptr) Variable Function + 91(r10): 19(ptr) Variable Function + 101(r11): 7(ptr) Variable Function + 109(r12): 13(ptr) Variable Function + 117(r20): 19(ptr) Variable Function + 127(r21): 7(ptr) Variable Function + 135(r22): 13(ptr) Variable Function + 143(lf1): 19(ptr) Variable Function + 148(storeTemp): 19(ptr) Variable Function + 158(storeTemp): 7(ptr) Variable Function + 163(storeTemp): 13(ptr) Variable Function + 169(val1): 19(ptr) Variable Function + 170(coordTemp): 7(ptr) Variable Function + 173(storeTemp): 19(ptr) Variable Function + 184(coordTemp): 7(ptr) Variable Function + 187(storeTemp): 19(ptr) Variable Function + 197(coordTemp): 7(ptr) Variable Function + 200(storeTemp): 19(ptr) Variable Function + 210(coordTemp): 7(ptr) Variable Function + 213(storeTemp): 7(ptr) Variable Function + 222(coordTemp): 7(ptr) Variable Function + 225(storeTemp): 7(ptr) Variable Function + 234(coordTemp): 7(ptr) Variable Function + 237(storeTemp): 7(ptr) Variable Function + 247(coordTemp): 7(ptr) Variable Function + 250(storeTemp): 7(ptr) Variable Function + 260(coordTemp): 7(ptr) Variable Function + 263(storeTemp): 7(ptr) Variable Function + 272(coordTemp): 7(ptr) Variable Function + 275(storeTemp): 7(ptr) Variable Function + 284(storeTemp): 19(ptr) Variable Function + 294(storeTemp): 7(ptr) Variable Function + 300(storeTemp): 13(ptr) Variable Function + 306(storeTemp): 19(ptr) Variable Function + 316(storeTemp): 7(ptr) Variable Function + 321(storeTemp): 13(ptr) Variable Function + 331(param): 19(ptr) Variable Function + 337(param): 7(ptr) Variable Function + 343(param): 13(ptr) Variable Function + 345(tempArg): 19(ptr) Variable Function + 346(param): 19(ptr) Variable Function + 353(tempArg): 7(ptr) Variable Function + 354(param): 7(ptr) Variable Function + 361(tempArg): 13(ptr) Variable Function + 362(param): 13(ptr) Variable Function + 369(coordTemp): 7(ptr) Variable Function + 372(storeTemp): 19(ptr) Variable Function + 382(coordTemp): 7(ptr) Variable Function + 385(storeTemp): 7(ptr) Variable Function + 394(coordTemp): 7(ptr) Variable Function + 397(storeTemp): 13(ptr) Variable Function + 406(coordTemp): 7(ptr) Variable Function + 409(storeTemp): 19(ptr) Variable Function + 418(coordTemp): 7(ptr) Variable Function + 421(storeTemp): 7(ptr) Variable Function + 430(coordTemp): 7(ptr) Variable Function + 433(storeTemp): 13(ptr) Variable Function + 442(coordTemp): 7(ptr) Variable Function +445(storeTempPre): 19(ptr) Variable Function +449(storeTempPost): 19(ptr) Variable Function + 456(coordTemp): 7(ptr) Variable Function +459(storeTempPre): 13(ptr) Variable Function +463(storeTempPost): 13(ptr) Variable Function + 470(coordTemp): 7(ptr) Variable Function +473(storeTempPre): 7(ptr) Variable Function +477(storeTempPost): 7(ptr) Variable Function + 484(coordTemp): 7(ptr) Variable Function +487(storeTempPre): 19(ptr) Variable Function +491(storeTempPost): 19(ptr) Variable Function + 498(coordTemp): 7(ptr) Variable Function +501(storeTempPre): 7(ptr) Variable Function +505(storeTempPost): 7(ptr) Variable Function + 512(coordTemp): 7(ptr) Variable Function +515(storeTempPre): 13(ptr) Variable Function +519(storeTempPost): 13(ptr) Variable Function + 526(storeTemp): 19(ptr) Variable Function + 536(psout): 535(ptr) Variable Function + 66: 63 Load 65(g_tTex1df1) + 67: 57(ptr) AccessChain 56 48 + 68: 6(int) Load 67 + 69: 18(float) ImageRead 66 68 + 71: 63 Load 65(g_tTex1df1) + 72: 57(ptr) AccessChain 56 48 + 73: 6(int) Load 72 + 74: 18(float) ImageRead 71 73 + Store 70(r00) 74 + 79: 76 Load 78(g_tTex1di1) + 80: 57(ptr) AccessChain 56 48 + 81: 6(int) Load 80 + 82: 6(int) ImageRead 79 81 + Store 75(r01) 82 + 87: 84 Load 86(g_tTex1du1) + 88: 57(ptr) AccessChain 56 48 + 89: 6(int) Load 88 + 90: 12(int) ImageRead 87 89 + Store 83(r02) 90 + 95: 92 Load 94(g_tTex2df1) + 98: 97(ptr) AccessChain 56 96 + 99: 51(ivec2) Load 98 + 100: 18(float) ImageRead 95 99 + Store 91(r10) 100 + 105: 102 Load 104(g_tTex2di1) + 106: 97(ptr) AccessChain 56 96 + 107: 51(ivec2) Load 106 + 108: 6(int) ImageRead 105 107 + Store 101(r11) 108 + 113: 110 Load 112(g_tTex2du1) + 114: 97(ptr) AccessChain 56 96 + 115: 51(ivec2) Load 114 + 116: 12(int) ImageRead 113 115 + Store 109(r12) 116 + 121: 118 Load 120(g_tTex3df1) + 124: 123(ptr) AccessChain 56 122 + 125: 52(ivec3) Load 124 + 126: 18(float) ImageRead 121 125 + Store 117(r20) 126 + 131: 128 Load 130(g_tTex3di1) + 132: 123(ptr) AccessChain 56 122 + 133: 52(ivec3) Load 132 + 134: 6(int) ImageRead 131 133 + Store 127(r21) 134 + 139: 136 Load 138(g_tTex3du1) + 140: 123(ptr) AccessChain 56 122 + 141: 52(ivec3) Load 140 + 142: 12(int) ImageRead 139 141 + Store 135(r22) 142 + 146: 145(ptr) AccessChain 56 144 + 147: 18(float) Load 146 + Store 143(lf1) 147 + 149: 18(float) FunctionCall 37(SomeValue() + Store 148(storeTemp) 149 + 150: 63 Load 65(g_tTex1df1) + 151: 57(ptr) AccessChain 56 48 + 152: 6(int) Load 151 + 153: 18(float) Load 148(storeTemp) + ImageWrite 150 152 153 + 154: 63 Load 65(g_tTex1df1) + 155: 57(ptr) AccessChain 56 48 + 156: 6(int) Load 155 + 157: 18(float) Load 143(lf1) + ImageWrite 154 156 157 + Store 158(storeTemp) 122 + 159: 76 Load 78(g_tTex1di1) + 160: 57(ptr) AccessChain 56 48 + 161: 6(int) Load 160 + 162: 6(int) Load 158(storeTemp) + ImageWrite 159 161 162 + Store 163(storeTemp) 164 + 165: 84 Load 86(g_tTex1du1) + 166: 57(ptr) AccessChain 56 48 + 167: 6(int) Load 166 + 168: 12(int) Load 163(storeTemp) + ImageWrite 165 167 168 + 171: 57(ptr) AccessChain 56 48 + 172: 6(int) Load 171 + Store 170(coordTemp) 172 + 174: 63 Load 65(g_tTex1df1) + 175: 6(int) Load 170(coordTemp) + 176: 18(float) ImageRead 174 175 + Store 173(storeTemp) 176 + 178: 18(float) Load 173(storeTemp) + 179: 18(float) FMul 178 177 + Store 173(storeTemp) 179 + 180: 63 Load 65(g_tTex1df1) + 181: 6(int) Load 170(coordTemp) + 182: 18(float) Load 173(storeTemp) + ImageWrite 180 181 182 + 183: 18(float) Load 173(storeTemp) + Store 169(val1) 183 + 185: 57(ptr) AccessChain 56 48 + 186: 6(int) Load 185 + Store 184(coordTemp) 186 + 188: 63 Load 65(g_tTex1df1) + 189: 6(int) Load 184(coordTemp) + 190: 18(float) ImageRead 188 189 + Store 187(storeTemp) 190 + 192: 18(float) Load 187(storeTemp) + 193: 18(float) FSub 192 191 + Store 187(storeTemp) 193 + 194: 63 Load 65(g_tTex1df1) + 195: 6(int) Load 184(coordTemp) + 196: 18(float) Load 187(storeTemp) + ImageWrite 194 195 196 + 198: 57(ptr) AccessChain 56 48 + 199: 6(int) Load 198 + Store 197(coordTemp) 199 + 201: 63 Load 65(g_tTex1df1) + 202: 6(int) Load 197(coordTemp) + 203: 18(float) ImageRead 201 202 + Store 200(storeTemp) 203 + 205: 18(float) Load 200(storeTemp) + 206: 18(float) FAdd 205 204 + Store 200(storeTemp) 206 + 207: 63 Load 65(g_tTex1df1) + 208: 6(int) Load 197(coordTemp) + 209: 18(float) Load 200(storeTemp) + ImageWrite 207 208 209 + 211: 57(ptr) AccessChain 56 48 + 212: 6(int) Load 211 + Store 210(coordTemp) 212 + 214: 76 Load 78(g_tTex1di1) + 215: 6(int) Load 210(coordTemp) + 216: 6(int) ImageRead 214 215 + Store 213(storeTemp) 216 + 217: 6(int) Load 213(storeTemp) + 218: 6(int) SDiv 217 122 + Store 213(storeTemp) 218 + 219: 76 Load 78(g_tTex1di1) + 220: 6(int) Load 210(coordTemp) + 221: 6(int) Load 213(storeTemp) + ImageWrite 219 220 221 + 223: 57(ptr) AccessChain 56 48 + 224: 6(int) Load 223 + Store 222(coordTemp) 224 + 226: 76 Load 78(g_tTex1di1) + 227: 6(int) Load 222(coordTemp) + 228: 6(int) ImageRead 226 227 + Store 225(storeTemp) 228 + 229: 6(int) Load 225(storeTemp) + 230: 6(int) SMod 229 122 + Store 225(storeTemp) 230 + 231: 76 Load 78(g_tTex1di1) + 232: 6(int) Load 222(coordTemp) + 233: 6(int) Load 225(storeTemp) + ImageWrite 231 232 233 + 235: 57(ptr) AccessChain 56 48 + 236: 6(int) Load 235 + Store 234(coordTemp) 236 + 238: 76 Load 78(g_tTex1di1) + 239: 6(int) Load 234(coordTemp) + 240: 6(int) ImageRead 238 239 + Store 237(storeTemp) 240 + 242: 6(int) Load 237(storeTemp) + 243: 6(int) BitwiseAnd 242 241 + Store 237(storeTemp) 243 + 244: 76 Load 78(g_tTex1di1) + 245: 6(int) Load 234(coordTemp) + 246: 6(int) Load 237(storeTemp) + ImageWrite 244 245 246 + 248: 57(ptr) AccessChain 56 48 + 249: 6(int) Load 248 + Store 247(coordTemp) 249 + 251: 76 Load 78(g_tTex1di1) + 252: 6(int) Load 247(coordTemp) + 253: 6(int) ImageRead 251 252 + Store 250(storeTemp) 253 + 255: 6(int) Load 250(storeTemp) + 256: 6(int) BitwiseOr 255 254 + Store 250(storeTemp) 256 + 257: 76 Load 78(g_tTex1di1) + 258: 6(int) Load 247(coordTemp) + 259: 6(int) Load 250(storeTemp) + ImageWrite 257 258 259 + 261: 57(ptr) AccessChain 56 48 + 262: 6(int) Load 261 + Store 260(coordTemp) 262 + 264: 76 Load 78(g_tTex1di1) + 265: 6(int) Load 260(coordTemp) + 266: 6(int) ImageRead 264 265 + Store 263(storeTemp) 266 + 267: 6(int) Load 263(storeTemp) + 268: 6(int) ShiftLeftLogical 267 122 + Store 263(storeTemp) 268 + 269: 76 Load 78(g_tTex1di1) + 270: 6(int) Load 260(coordTemp) + 271: 6(int) Load 263(storeTemp) + ImageWrite 269 270 271 + 273: 57(ptr) AccessChain 56 48 + 274: 6(int) Load 273 + Store 272(coordTemp) 274 + 276: 76 Load 78(g_tTex1di1) + 277: 6(int) Load 272(coordTemp) + 278: 6(int) ImageRead 276 277 + Store 275(storeTemp) 278 + 279: 6(int) Load 275(storeTemp) + 280: 6(int) ShiftRightArithmetic 279 122 + Store 275(storeTemp) 280 + 281: 76 Load 78(g_tTex1di1) + 282: 6(int) Load 272(coordTemp) + 283: 6(int) Load 275(storeTemp) + ImageWrite 281 282 283 + 285: 18(float) FunctionCall 37(SomeValue() + Store 284(storeTemp) 285 + 286: 92 Load 94(g_tTex2df1) + 287: 97(ptr) AccessChain 56 96 + 288: 51(ivec2) Load 287 + 289: 18(float) Load 284(storeTemp) + ImageWrite 286 288 289 + 290: 92 Load 94(g_tTex2df1) + 291: 97(ptr) AccessChain 56 96 + 292: 51(ivec2) Load 291 + 293: 18(float) Load 143(lf1) + ImageWrite 290 292 293 + Store 294(storeTemp) 295 + 296: 102 Load 104(g_tTex2di1) + 297: 97(ptr) AccessChain 56 96 + 298: 51(ivec2) Load 297 + 299: 6(int) Load 294(storeTemp) + ImageWrite 296 298 299 + Store 300(storeTemp) 301 + 302: 110 Load 112(g_tTex2du1) + 303: 97(ptr) AccessChain 56 96 + 304: 51(ivec2) Load 303 + 305: 12(int) Load 300(storeTemp) + ImageWrite 302 304 305 + 307: 18(float) FunctionCall 37(SomeValue() + Store 306(storeTemp) 307 + 308: 118 Load 120(g_tTex3df1) + 309: 123(ptr) AccessChain 56 122 + 310: 52(ivec3) Load 309 + 311: 18(float) Load 306(storeTemp) + ImageWrite 308 310 311 + 312: 118 Load 120(g_tTex3df1) + 313: 123(ptr) AccessChain 56 122 + 314: 52(ivec3) Load 313 + 315: 18(float) Load 143(lf1) + ImageWrite 312 314 315 + Store 316(storeTemp) 144 + 317: 128 Load 130(g_tTex3di1) + 318: 123(ptr) AccessChain 56 122 + 319: 52(ivec3) Load 318 + 320: 6(int) Load 316(storeTemp) + ImageWrite 317 319 320 + Store 321(storeTemp) 322 + 323: 136 Load 138(g_tTex3du1) + 324: 123(ptr) AccessChain 56 122 + 325: 52(ivec3) Load 324 + 326: 12(int) Load 321(storeTemp) + ImageWrite 323 325 326 + 327: 63 Load 65(g_tTex1df1) + 328: 57(ptr) AccessChain 56 48 + 329: 6(int) Load 328 + 330: 18(float) ImageRead 327 329 + Store 331(param) 330 + 332: 18(float) FunctionCall 22(Fn1(f1;) 331(param) + 333: 76 Load 78(g_tTex1di1) + 334: 57(ptr) AccessChain 56 48 + 335: 6(int) Load 334 + 336: 6(int) ImageRead 333 335 + Store 337(param) 336 + 338: 6(int) FunctionCall 10(Fn1(i1;) 337(param) + 339: 84 Load 86(g_tTex1du1) + 340: 57(ptr) AccessChain 56 48 + 341: 6(int) Load 340 + 342: 12(int) ImageRead 339 341 + Store 343(param) 342 + 344: 12(int) FunctionCall 16(Fn1(u1;) 343(param) + 347: 2 FunctionCall 34(Fn2(f1;) 346(param) + 348: 18(float) Load 346(param) + Store 345(tempArg) 348 + 349: 63 Load 65(g_tTex1df1) + 350: 57(ptr) AccessChain 56 48 + 351: 6(int) Load 350 + 352: 18(float) Load 345(tempArg) + ImageWrite 349 351 352 + 355: 2 FunctionCall 26(Fn2(i1;) 354(param) + 356: 6(int) Load 354(param) + Store 353(tempArg) 356 + 357: 76 Load 78(g_tTex1di1) + 358: 57(ptr) AccessChain 56 48 + 359: 6(int) Load 358 + 360: 6(int) Load 353(tempArg) + ImageWrite 357 359 360 + 363: 2 FunctionCall 30(Fn2(u1;) 362(param) + 364: 12(int) Load 362(param) + Store 361(tempArg) 364 + 365: 84 Load 86(g_tTex1du1) + 366: 57(ptr) AccessChain 56 48 + 367: 6(int) Load 366 + 368: 12(int) Load 361(tempArg) + ImageWrite 365 367 368 + 370: 57(ptr) AccessChain 56 48 + 371: 6(int) Load 370 + Store 369(coordTemp) 371 + 373: 63 Load 65(g_tTex1df1) + 374: 6(int) Load 369(coordTemp) + 375: 18(float) ImageRead 373 374 + Store 372(storeTemp) 375 + 376: 18(float) Load 372(storeTemp) + 378: 18(float) FAdd 376 377 + Store 372(storeTemp) 378 + 379: 63 Load 65(g_tTex1df1) + 380: 6(int) Load 369(coordTemp) + 381: 18(float) Load 372(storeTemp) + ImageWrite 379 380 381 + 383: 57(ptr) AccessChain 56 48 + 384: 6(int) Load 383 + Store 382(coordTemp) 384 + 386: 76 Load 78(g_tTex1di1) + 387: 6(int) Load 382(coordTemp) + 388: 6(int) ImageRead 386 387 + Store 385(storeTemp) 388 + 389: 6(int) Load 385(storeTemp) + 390: 6(int) IAdd 389 96 + Store 385(storeTemp) 390 + 391: 76 Load 78(g_tTex1di1) + 392: 6(int) Load 382(coordTemp) + 393: 6(int) Load 385(storeTemp) + ImageWrite 391 392 393 + 395: 57(ptr) AccessChain 56 48 + 396: 6(int) Load 395 + Store 394(coordTemp) 396 + 398: 84 Load 86(g_tTex1du1) + 399: 6(int) Load 394(coordTemp) + 400: 12(int) ImageRead 398 399 + Store 397(storeTemp) 400 + 401: 12(int) Load 397(storeTemp) + 402: 12(int) IAdd 401 96 + Store 397(storeTemp) 402 + 403: 84 Load 86(g_tTex1du1) + 404: 6(int) Load 394(coordTemp) + 405: 12(int) Load 397(storeTemp) + ImageWrite 403 404 405 + 407: 57(ptr) AccessChain 56 48 + 408: 6(int) Load 407 + Store 406(coordTemp) 408 + 410: 63 Load 65(g_tTex1df1) + 411: 6(int) Load 406(coordTemp) + 412: 18(float) ImageRead 410 411 + Store 409(storeTemp) 412 + 413: 18(float) Load 409(storeTemp) + 414: 18(float) FSub 413 377 + Store 409(storeTemp) 414 + 415: 63 Load 65(g_tTex1df1) + 416: 6(int) Load 406(coordTemp) + 417: 18(float) Load 409(storeTemp) + ImageWrite 415 416 417 + 419: 57(ptr) AccessChain 56 48 + 420: 6(int) Load 419 + Store 418(coordTemp) 420 + 422: 76 Load 78(g_tTex1di1) + 423: 6(int) Load 418(coordTemp) + 424: 6(int) ImageRead 422 423 + Store 421(storeTemp) 424 + 425: 6(int) Load 421(storeTemp) + 426: 6(int) ISub 425 96 + Store 421(storeTemp) 426 + 427: 76 Load 78(g_tTex1di1) + 428: 6(int) Load 418(coordTemp) + 429: 6(int) Load 421(storeTemp) + ImageWrite 427 428 429 + 431: 57(ptr) AccessChain 56 48 + 432: 6(int) Load 431 + Store 430(coordTemp) 432 + 434: 84 Load 86(g_tTex1du1) + 435: 6(int) Load 430(coordTemp) + 436: 12(int) ImageRead 434 435 + Store 433(storeTemp) 436 + 437: 12(int) Load 433(storeTemp) + 438: 12(int) ISub 437 96 + Store 433(storeTemp) 438 + 439: 84 Load 86(g_tTex1du1) + 440: 6(int) Load 430(coordTemp) + 441: 12(int) Load 433(storeTemp) + ImageWrite 439 440 441 + 443: 57(ptr) AccessChain 56 48 + 444: 6(int) Load 443 + Store 442(coordTemp) 444 + 446: 63 Load 65(g_tTex1df1) + 447: 6(int) Load 442(coordTemp) + 448: 18(float) ImageRead 446 447 + Store 445(storeTempPre) 448 + 450: 18(float) Load 445(storeTempPre) + Store 449(storeTempPost) 450 + 451: 18(float) Load 449(storeTempPost) + 452: 18(float) FAdd 451 377 + Store 449(storeTempPost) 452 + 453: 63 Load 65(g_tTex1df1) + 454: 6(int) Load 442(coordTemp) + 455: 18(float) Load 449(storeTempPost) + ImageWrite 453 454 455 + 457: 57(ptr) AccessChain 56 48 + 458: 6(int) Load 457 + Store 456(coordTemp) 458 + 460: 84 Load 86(g_tTex1du1) + 461: 6(int) Load 456(coordTemp) + 462: 12(int) ImageRead 460 461 + Store 459(storeTempPre) 462 + 464: 12(int) Load 459(storeTempPre) + Store 463(storeTempPost) 464 + 465: 12(int) Load 463(storeTempPost) + 466: 12(int) ISub 465 96 + Store 463(storeTempPost) 466 + 467: 84 Load 86(g_tTex1du1) + 468: 6(int) Load 456(coordTemp) + 469: 12(int) Load 463(storeTempPost) + ImageWrite 467 468 469 + 471: 57(ptr) AccessChain 56 48 + 472: 6(int) Load 471 + Store 470(coordTemp) 472 + 474: 76 Load 78(g_tTex1di1) + 475: 6(int) Load 470(coordTemp) + 476: 6(int) ImageRead 474 475 + Store 473(storeTempPre) 476 + 478: 6(int) Load 473(storeTempPre) + Store 477(storeTempPost) 478 + 479: 6(int) Load 477(storeTempPost) + 480: 6(int) IAdd 479 96 + Store 477(storeTempPost) 480 + 481: 76 Load 78(g_tTex1di1) + 482: 6(int) Load 470(coordTemp) + 483: 6(int) Load 477(storeTempPost) + ImageWrite 481 482 483 + 485: 57(ptr) AccessChain 56 48 + 486: 6(int) Load 485 + Store 484(coordTemp) 486 + 488: 63 Load 65(g_tTex1df1) + 489: 6(int) Load 484(coordTemp) + 490: 18(float) ImageRead 488 489 + Store 487(storeTempPre) 490 + 492: 18(float) Load 487(storeTempPre) + Store 491(storeTempPost) 492 + 493: 18(float) Load 491(storeTempPost) + 494: 18(float) FSub 493 377 + Store 491(storeTempPost) 494 + 495: 63 Load 65(g_tTex1df1) + 496: 6(int) Load 484(coordTemp) + 497: 18(float) Load 491(storeTempPost) + ImageWrite 495 496 497 + 499: 57(ptr) AccessChain 56 48 + 500: 6(int) Load 499 + Store 498(coordTemp) 500 + 502: 76 Load 78(g_tTex1di1) + 503: 6(int) Load 498(coordTemp) + 504: 6(int) ImageRead 502 503 + Store 501(storeTempPre) 504 + 506: 6(int) Load 501(storeTempPre) + Store 505(storeTempPost) 506 + 507: 6(int) Load 505(storeTempPost) + 508: 6(int) IAdd 507 96 + Store 505(storeTempPost) 508 + 509: 76 Load 78(g_tTex1di1) + 510: 6(int) Load 498(coordTemp) + 511: 6(int) Load 505(storeTempPost) + ImageWrite 509 510 511 + 513: 57(ptr) AccessChain 56 48 + 514: 6(int) Load 513 + Store 512(coordTemp) 514 + 516: 84 Load 86(g_tTex1du1) + 517: 6(int) Load 512(coordTemp) + 518: 12(int) ImageRead 516 517 + Store 515(storeTempPre) 518 + 520: 12(int) Load 515(storeTempPre) + Store 519(storeTempPost) 520 + 521: 12(int) Load 519(storeTempPost) + 522: 12(int) ISub 521 96 + Store 519(storeTempPost) 522 + 523: 84 Load 86(g_tTex1du1) + 524: 6(int) Load 512(coordTemp) + 525: 12(int) Load 519(storeTempPost) + ImageWrite 523 524 525 + 527: 92 Load 94(g_tTex2df1) + 530: 18(float) ImageRead 527 529 + Store 526(storeTemp) 530 + 531: 63 Load 65(g_tTex1df1) + 532: 18(float) Load 526(storeTemp) + ImageWrite 531 96 532 + 539: 538(ptr) AccessChain 536(psout) 48 + Store 539 537 + 542: 538(ptr) AccessChain 536(psout) 48 + 543: 533(fvec4) Load 542 + Store 541(Color) 543 + Return + FunctionEnd + 10(Fn1(i1;): 6(int) Function None 8 + 9(x): 7(ptr) FunctionParameter + 11: Label + 39: 6(int) Load 9(x) + ReturnValue 39 + FunctionEnd + 16(Fn1(u1;): 12(int) Function None 14 + 15(x): 13(ptr) FunctionParameter + 17: Label + 42: 12(int) Load 15(x) + ReturnValue 42 + FunctionEnd + 22(Fn1(f1;): 18(float) Function None 20 + 21(x): 19(ptr) FunctionParameter + 23: Label + 45: 18(float) Load 21(x) + ReturnValue 45 + FunctionEnd + 26(Fn2(i1;): 2 Function None 24 + 25(x): 7(ptr) FunctionParameter + 27: Label + Store 25(x) 48 + Return + FunctionEnd + 30(Fn2(u1;): 2 Function None 28 + 29(x): 13(ptr) FunctionParameter + 31: Label + Store 29(x) 49 + Return + FunctionEnd + 34(Fn2(f1;): 2 Function None 32 + 33(x): 19(ptr) FunctionParameter + 35: Label + Store 33(x) 50 + Return + FunctionEnd + 37(SomeValue(): 18(float) Function None 36 + 38: Label + 58: 57(ptr) AccessChain 56 48 + 59: 6(int) Load 58 + 60: 18(float) ConvertSToF 59 + ReturnValue 60 + FunctionEnd diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out new file mode 100644 index 00000000..b8452c36 --- /dev/null +++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out @@ -0,0 +1,2613 @@ +hlsl.rw.vec2.bracket.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:42 Function Definition: Fn1(vi2; (temp 2-component vector of int) +0:42 Function Parameters: +0:42 'x' (in 2-component vector of int) +0:? Sequence +0:42 Branch: Return with expression +0:42 'x' (in 2-component vector of int) +0:43 Function Definition: Fn1(vu2; (temp 2-component vector of uint) +0:43 Function Parameters: +0:43 'x' (in 2-component vector of uint) +0:? Sequence +0:43 Branch: Return with expression +0:43 'x' (in 2-component vector of uint) +0:44 Function Definition: Fn1(vf2; (temp 2-component vector of float) +0:44 Function Parameters: +0:44 'x' (in 2-component vector of float) +0:? Sequence +0:44 Branch: Return with expression +0:44 'x' (in 2-component vector of float) +0:46 Function Definition: Fn2(vi2; (temp void) +0:46 Function Parameters: +0:46 'x' (out 2-component vector of int) +0:? Sequence +0:46 move second child to first child (temp 2-component vector of int) +0:46 'x' (out 2-component vector of int) +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:47 Function Definition: Fn2(vu2; (temp void) +0:47 Function Parameters: +0:47 'x' (out 2-component vector of uint) +0:? Sequence +0:47 move second child to first child (temp 2-component vector of uint) +0:47 'x' (out 2-component vector of uint) +0:? Constant: +0:? 0 (const uint) +0:? 0 (const uint) +0:48 Function Definition: Fn2(vf2; (temp void) +0:48 Function Parameters: +0:48 'x' (out 2-component vector of float) +0:? Sequence +0:48 move second child to first child (temp 2-component vector of float) +0:48 'x' (out 2-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:50 Function Definition: SomeValue( (temp 2-component vector of float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp 2-component vector of float) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:50 Constant: +0:50 1 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp 2-component vector of float) +0:57 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp 2-component vector of float) +0:59 'r00' (temp 2-component vector of float) +0:59 imageLoad (temp 2-component vector of float) +0:59 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:59 Constant: +0:59 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp 2-component vector of int) +0:60 'r01' (temp 2-component vector of int) +0:60 imageLoad (temp 2-component vector of int) +0:60 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:60 Constant: +0:60 0 (const uint) +0:61 Sequence +0:61 move second child to first child (temp 2-component vector of uint) +0:61 'r02' (temp 2-component vector of uint) +0:61 imageLoad (temp 2-component vector of uint) +0:61 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:61 Constant: +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp 2-component vector of float) +0:64 'r10' (temp 2-component vector of float) +0:64 imageLoad (temp 2-component vector of float) +0:64 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:64 Constant: +0:64 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp 2-component vector of int) +0:65 'r11' (temp 2-component vector of int) +0:65 imageLoad (temp 2-component vector of int) +0:65 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:65 Constant: +0:65 1 (const uint) +0:66 Sequence +0:66 move second child to first child (temp 2-component vector of uint) +0:66 'r12' (temp 2-component vector of uint) +0:66 imageLoad (temp 2-component vector of uint) +0:66 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:66 Constant: +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp 2-component vector of float) +0:69 'r20' (temp 2-component vector of float) +0:69 imageLoad (temp 2-component vector of float) +0:69 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp 2-component vector of int) +0:70 'r21' (temp 2-component vector of int) +0:70 imageLoad (temp 2-component vector of int) +0:70 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp 2-component vector of uint) +0:71 'r22' (temp 2-component vector of uint) +0:71 imageLoad (temp 2-component vector of uint) +0:71 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp 2-component vector of float) +0:73 'lf2' (temp 2-component vector of float) +0:73 uf2: direct index for structure (layout(offset=96 ) uniform 2-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp 2-component vector of float) +0:77 'storeTemp' (temp 2-component vector of float) +0:77 Function Call: SomeValue( (temp 2-component vector of float) +0:77 imageStore (temp void) +0:77 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp 2-component vector of float) +0:77 'storeTemp' (temp 2-component vector of float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf2' (temp 2-component vector of float) +0:78 'lf2' (temp 2-component vector of float) +0:79 Sequence +0:79 move second child to first child (temp 2-component vector of int) +0:79 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 2 (const int) +0:? 2 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp 2-component vector of int) +0:79 'storeTemp' (temp 2-component vector of int) +0:80 Sequence +0:80 move second child to first child (temp 2-component vector of uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 3 (const uint) +0:? 2 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:83 Sequence +0:83 move second child to first child (temp 2-component vector of float) +0:83 'val1' (temp 2-component vector of float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 imageLoad (temp 2-component vector of float) +0:83 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 vector scale second child into first child (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 imageLoad (temp 2-component vector of float) +0:84 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 imageLoad (temp 2-component vector of float) +0:85 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:87 Constant: +0:87 0 (const uint) +0:87 move second child to first child (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 imageLoad (temp 2-component vector of int) +0:87 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:88 Constant: +0:88 0 (const uint) +0:88 move second child to first child (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 imageLoad (temp 2-component vector of int) +0:88 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 imageLoad (temp 2-component vector of int) +0:89 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 imageLoad (temp 2-component vector of int) +0:90 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 imageLoad (temp 2-component vector of int) +0:91 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 imageLoad (temp 2-component vector of int) +0:92 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:95 Sequence +0:95 move second child to first child (temp 2-component vector of float) +0:95 'storeTemp' (temp 2-component vector of float) +0:95 Function Call: SomeValue( (temp 2-component vector of float) +0:95 imageStore (temp void) +0:95 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp 2-component vector of float) +0:95 'storeTemp' (temp 2-component vector of float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf2' (temp 2-component vector of float) +0:96 'lf2' (temp 2-component vector of float) +0:97 Sequence +0:97 move second child to first child (temp 2-component vector of int) +0:97 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 5 (const int) +0:? 2 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp 2-component vector of int) +0:97 'storeTemp' (temp 2-component vector of int) +0:98 Sequence +0:98 move second child to first child (temp 2-component vector of uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 6 (const uint) +0:? 2 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:101 Sequence +0:101 move second child to first child (temp 2-component vector of float) +0:101 'storeTemp' (temp 2-component vector of float) +0:101 Function Call: SomeValue( (temp 2-component vector of float) +0:101 imageStore (temp void) +0:101 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp 2-component vector of float) +0:101 'storeTemp' (temp 2-component vector of float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf2' (temp 2-component vector of float) +0:102 'lf2' (temp 2-component vector of float) +0:103 Sequence +0:103 move second child to first child (temp 2-component vector of int) +0:103 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 8 (const int) +0:? 6 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp 2-component vector of int) +0:103 'storeTemp' (temp 2-component vector of int) +0:104 Sequence +0:104 move second child to first child (temp 2-component vector of uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 9 (const uint) +0:? 2 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:107 Function Call: Fn1(vf2; (temp 2-component vector of float) +0:107 imageLoad (temp 2-component vector of float) +0:107 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(vi2; (temp 2-component vector of int) +0:108 imageLoad (temp 2-component vector of int) +0:108 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(vu2; (temp 2-component vector of uint) +0:109 imageLoad (temp 2-component vector of uint) +0:109 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(vf2; (temp void) +0:111 'tempArg' (temp 2-component vector of float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp 2-component vector of float) +0:111 'tempArg' (temp 2-component vector of float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(vi2; (temp void) +0:112 'tempArg' (temp 2-component vector of int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp 2-component vector of int) +0:112 'tempArg' (temp 2-component vector of int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(vu2; (temp void) +0:113 'tempArg' (temp 2-component vector of uint) +0:113 Sequence +0:113 imageStore (temp void) +0:113 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:113 Constant: +0:113 0 (const uint) +0:113 'tempArg' (temp 2-component vector of uint) +0:113 'tempArg' (temp 2-component vector of uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 imageLoad (temp 2-component vector of float) +0:117 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 imageStore (temp void) +0:117 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 imageLoad (temp 2-component vector of int) +0:118 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 imageStore (temp void) +0:118 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 imageLoad (temp 2-component vector of uint) +0:119 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 imageLoad (temp 2-component vector of float) +0:121 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 imageStore (temp void) +0:121 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 imageLoad (temp 2-component vector of int) +0:122 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 imageStore (temp void) +0:122 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 imageLoad (temp 2-component vector of uint) +0:123 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:126 imageLoad (temp 2-component vector of float) +0:126 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp 2-component vector of float) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:126 Post-Increment (temp 2-component vector of float) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 imageStore (temp void) +0:126 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:127 imageLoad (temp 2-component vector of uint) +0:127 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp 2-component vector of uint) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:127 Post-Decrement (temp 2-component vector of uint) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:128 imageLoad (temp 2-component vector of int) +0:128 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp 2-component vector of int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:128 Post-Increment (temp 2-component vector of int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 imageStore (temp void) +0:128 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:130 imageLoad (temp 2-component vector of float) +0:130 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp 2-component vector of float) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:130 Post-Decrement (temp 2-component vector of float) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 imageStore (temp void) +0:130 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:131 imageLoad (temp 2-component vector of int) +0:131 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp 2-component vector of int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:131 Post-Increment (temp 2-component vector of int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 imageStore (temp void) +0:131 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:132 imageLoad (temp 2-component vector of uint) +0:132 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp 2-component vector of uint) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:132 Post-Decrement (temp 2-component vector of uint) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:135 Sequence +0:135 move second child to first child (temp 2-component vector of float) +0:135 'storeTemp' (temp 2-component vector of float) +0:? imageLoad (temp 2-component vector of float) +0:135 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp 2-component vector of float) +0:135 'storeTemp' (temp 2-component vector of float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:? 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:? 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:? 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:? 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:? 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:? 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:? 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:? 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:? 'g_tTex1df2a' (layout(rg32f ) uniform image1DArray) +0:? 'g_tTex1di2a' (layout(rg32i ) uniform iimage1DArray) +0:? 'g_tTex1du2a' (layout(rg32ui ) uniform uimage1DArray) +0:? 'g_tTex2df2a' (layout(rg32f ) uniform image2DArray) +0:? 'g_tTex2di2a' (layout(rg32i ) uniform iimage2DArray) +0:? 'g_tTex2du2a' (layout(rg32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +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:42 Function Definition: Fn1(vi2; (temp 2-component vector of int) +0:42 Function Parameters: +0:42 'x' (in 2-component vector of int) +0:? Sequence +0:42 Branch: Return with expression +0:42 'x' (in 2-component vector of int) +0:43 Function Definition: Fn1(vu2; (temp 2-component vector of uint) +0:43 Function Parameters: +0:43 'x' (in 2-component vector of uint) +0:? Sequence +0:43 Branch: Return with expression +0:43 'x' (in 2-component vector of uint) +0:44 Function Definition: Fn1(vf2; (temp 2-component vector of float) +0:44 Function Parameters: +0:44 'x' (in 2-component vector of float) +0:? Sequence +0:44 Branch: Return with expression +0:44 'x' (in 2-component vector of float) +0:46 Function Definition: Fn2(vi2; (temp void) +0:46 Function Parameters: +0:46 'x' (out 2-component vector of int) +0:? Sequence +0:46 move second child to first child (temp 2-component vector of int) +0:46 'x' (out 2-component vector of int) +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:47 Function Definition: Fn2(vu2; (temp void) +0:47 Function Parameters: +0:47 'x' (out 2-component vector of uint) +0:? Sequence +0:47 move second child to first child (temp 2-component vector of uint) +0:47 'x' (out 2-component vector of uint) +0:? Constant: +0:? 0 (const uint) +0:? 0 (const uint) +0:48 Function Definition: Fn2(vf2; (temp void) +0:48 Function Parameters: +0:48 'x' (out 2-component vector of float) +0:? Sequence +0:48 move second child to first child (temp 2-component vector of float) +0:48 'x' (out 2-component vector of float) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:50 Function Definition: SomeValue( (temp 2-component vector of float) +0:50 Function Parameters: +0:? Sequence +0:50 Branch: Return with expression +0:50 Convert int to float (temp 2-component vector of float) +0:50 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:50 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:50 Constant: +0:50 1 (const uint) +0:53 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:53 Function Parameters: +0:? Sequence +0:57 imageLoad (temp 2-component vector of float) +0:57 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:57 c1: direct index for structure (layout(offset=0 ) uniform int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:57 Constant: +0:57 0 (const uint) +0:59 Sequence +0:59 move second child to first child (temp 2-component vector of float) +0:59 'r00' (temp 2-component vector of float) +0:59 imageLoad (temp 2-component vector of float) +0:59 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:59 c1: direct index for structure (layout(offset=0 ) uniform int) +0:59 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:59 Constant: +0:59 0 (const uint) +0:60 Sequence +0:60 move second child to first child (temp 2-component vector of int) +0:60 'r01' (temp 2-component vector of int) +0:60 imageLoad (temp 2-component vector of int) +0:60 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:60 c1: direct index for structure (layout(offset=0 ) uniform int) +0:60 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:60 Constant: +0:60 0 (const uint) +0:61 Sequence +0:61 move second child to first child (temp 2-component vector of uint) +0:61 'r02' (temp 2-component vector of uint) +0:61 imageLoad (temp 2-component vector of uint) +0:61 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:61 c1: direct index for structure (layout(offset=0 ) uniform int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:61 Constant: +0:61 0 (const uint) +0:64 Sequence +0:64 move second child to first child (temp 2-component vector of float) +0:64 'r10' (temp 2-component vector of float) +0:64 imageLoad (temp 2-component vector of float) +0:64 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:64 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:64 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:64 Constant: +0:64 1 (const uint) +0:65 Sequence +0:65 move second child to first child (temp 2-component vector of int) +0:65 'r11' (temp 2-component vector of int) +0:65 imageLoad (temp 2-component vector of int) +0:65 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:65 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:65 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:65 Constant: +0:65 1 (const uint) +0:66 Sequence +0:66 move second child to first child (temp 2-component vector of uint) +0:66 'r12' (temp 2-component vector of uint) +0:66 imageLoad (temp 2-component vector of uint) +0:66 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:66 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:66 Constant: +0:66 1 (const uint) +0:69 Sequence +0:69 move second child to first child (temp 2-component vector of float) +0:69 'r20' (temp 2-component vector of float) +0:69 imageLoad (temp 2-component vector of float) +0:69 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:69 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:69 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:69 Constant: +0:69 2 (const uint) +0:70 Sequence +0:70 move second child to first child (temp 2-component vector of int) +0:70 'r21' (temp 2-component vector of int) +0:70 imageLoad (temp 2-component vector of int) +0:70 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:70 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:70 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:70 Constant: +0:70 2 (const uint) +0:71 Sequence +0:71 move second child to first child (temp 2-component vector of uint) +0:71 'r22' (temp 2-component vector of uint) +0:71 imageLoad (temp 2-component vector of uint) +0:71 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:71 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:71 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:71 Constant: +0:71 2 (const uint) +0:73 Sequence +0:73 move second child to first child (temp 2-component vector of float) +0:73 'lf2' (temp 2-component vector of float) +0:73 uf2: direct index for structure (layout(offset=96 ) uniform 2-component vector of float) +0:73 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:73 Constant: +0:73 8 (const uint) +0:77 Sequence +0:77 move second child to first child (temp 2-component vector of float) +0:77 'storeTemp' (temp 2-component vector of float) +0:77 Function Call: SomeValue( (temp 2-component vector of float) +0:77 imageStore (temp void) +0:77 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:77 c1: direct index for structure (layout(offset=0 ) uniform int) +0:77 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:77 Constant: +0:77 0 (const uint) +0:77 'storeTemp' (temp 2-component vector of float) +0:77 'storeTemp' (temp 2-component vector of float) +0:78 Sequence +0:78 imageStore (temp void) +0:78 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:78 c1: direct index for structure (layout(offset=0 ) uniform int) +0:78 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:78 Constant: +0:78 0 (const uint) +0:78 'lf2' (temp 2-component vector of float) +0:78 'lf2' (temp 2-component vector of float) +0:79 Sequence +0:79 move second child to first child (temp 2-component vector of int) +0:79 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 2 (const int) +0:? 2 (const int) +0:79 imageStore (temp void) +0:79 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:79 c1: direct index for structure (layout(offset=0 ) uniform int) +0:79 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:79 Constant: +0:79 0 (const uint) +0:79 'storeTemp' (temp 2-component vector of int) +0:79 'storeTemp' (temp 2-component vector of int) +0:80 Sequence +0:80 move second child to first child (temp 2-component vector of uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 3 (const uint) +0:? 2 (const uint) +0:80 imageStore (temp void) +0:80 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:80 c1: direct index for structure (layout(offset=0 ) uniform int) +0:80 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:80 Constant: +0:80 0 (const uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:80 'storeTemp' (temp 2-component vector of uint) +0:83 Sequence +0:83 move second child to first child (temp 2-component vector of float) +0:83 'val1' (temp 2-component vector of float) +0:83 Sequence +0:83 move second child to first child (temp int) +0:83 'coordTemp' (temp int) +0:83 c1: direct index for structure (layout(offset=0 ) uniform int) +0:83 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:83 Constant: +0:83 0 (const uint) +0:83 move second child to first child (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 imageLoad (temp 2-component vector of float) +0:83 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 vector scale second child into first child (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 Constant: +0:83 2.000000 +0:83 imageStore (temp void) +0:83 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:83 'coordTemp' (temp int) +0:83 'storeTemp' (temp 2-component vector of float) +0:83 'storeTemp' (temp 2-component vector of float) +0:84 Sequence +0:84 move second child to first child (temp int) +0:84 'coordTemp' (temp int) +0:84 c1: direct index for structure (layout(offset=0 ) uniform int) +0:84 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:84 Constant: +0:84 0 (const uint) +0:84 move second child to first child (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 imageLoad (temp 2-component vector of float) +0:84 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 subtract second child into first child (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 Constant: +0:84 3.000000 +0:84 imageStore (temp void) +0:84 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:84 'coordTemp' (temp int) +0:84 'storeTemp' (temp 2-component vector of float) +0:84 'storeTemp' (temp 2-component vector of float) +0:85 Sequence +0:85 move second child to first child (temp int) +0:85 'coordTemp' (temp int) +0:85 c1: direct index for structure (layout(offset=0 ) uniform int) +0:85 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:85 Constant: +0:85 0 (const uint) +0:85 move second child to first child (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 imageLoad (temp 2-component vector of float) +0:85 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 add second child into first child (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 Constant: +0:85 4.000000 +0:85 imageStore (temp void) +0:85 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:85 'coordTemp' (temp int) +0:85 'storeTemp' (temp 2-component vector of float) +0:85 'storeTemp' (temp 2-component vector of float) +0:87 Sequence +0:87 move second child to first child (temp int) +0:87 'coordTemp' (temp int) +0:87 c1: direct index for structure (layout(offset=0 ) uniform int) +0:87 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:87 Constant: +0:87 0 (const uint) +0:87 move second child to first child (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 imageLoad (temp 2-component vector of int) +0:87 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 divide second child into first child (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 Constant: +0:87 2 (const int) +0:87 imageStore (temp void) +0:87 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:87 'coordTemp' (temp int) +0:87 'storeTemp' (temp 2-component vector of int) +0:87 'storeTemp' (temp 2-component vector of int) +0:88 Sequence +0:88 move second child to first child (temp int) +0:88 'coordTemp' (temp int) +0:88 c1: direct index for structure (layout(offset=0 ) uniform int) +0:88 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:88 Constant: +0:88 0 (const uint) +0:88 move second child to first child (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 imageLoad (temp 2-component vector of int) +0:88 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 mod second child into first child (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 Constant: +0:88 2 (const int) +0:88 imageStore (temp void) +0:88 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:88 'coordTemp' (temp int) +0:88 'storeTemp' (temp 2-component vector of int) +0:88 'storeTemp' (temp 2-component vector of int) +0:89 Sequence +0:89 move second child to first child (temp int) +0:89 'coordTemp' (temp int) +0:89 c1: direct index for structure (layout(offset=0 ) uniform int) +0:89 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:89 Constant: +0:89 0 (const uint) +0:89 move second child to first child (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 imageLoad (temp 2-component vector of int) +0:89 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 and second child into first child (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 Constant: +0:89 65535 (const int) +0:89 imageStore (temp void) +0:89 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:89 'coordTemp' (temp int) +0:89 'storeTemp' (temp 2-component vector of int) +0:89 'storeTemp' (temp 2-component vector of int) +0:90 Sequence +0:90 move second child to first child (temp int) +0:90 'coordTemp' (temp int) +0:90 c1: direct index for structure (layout(offset=0 ) uniform int) +0:90 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:90 Constant: +0:90 0 (const uint) +0:90 move second child to first child (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 imageLoad (temp 2-component vector of int) +0:90 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 or second child into first child (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 Constant: +0:90 61680 (const int) +0:90 imageStore (temp void) +0:90 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:90 'coordTemp' (temp int) +0:90 'storeTemp' (temp 2-component vector of int) +0:90 'storeTemp' (temp 2-component vector of int) +0:91 Sequence +0:91 move second child to first child (temp int) +0:91 'coordTemp' (temp int) +0:91 c1: direct index for structure (layout(offset=0 ) uniform int) +0:91 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:91 Constant: +0:91 0 (const uint) +0:91 move second child to first child (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 imageLoad (temp 2-component vector of int) +0:91 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 left shift second child into first child (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 Constant: +0:91 2 (const int) +0:91 imageStore (temp void) +0:91 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:91 'coordTemp' (temp int) +0:91 'storeTemp' (temp 2-component vector of int) +0:91 'storeTemp' (temp 2-component vector of int) +0:92 Sequence +0:92 move second child to first child (temp int) +0:92 'coordTemp' (temp int) +0:92 c1: direct index for structure (layout(offset=0 ) uniform int) +0:92 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:92 Constant: +0:92 0 (const uint) +0:92 move second child to first child (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 imageLoad (temp 2-component vector of int) +0:92 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 right shift second child into first child (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 Constant: +0:92 2 (const int) +0:92 imageStore (temp void) +0:92 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:92 'coordTemp' (temp int) +0:92 'storeTemp' (temp 2-component vector of int) +0:92 'storeTemp' (temp 2-component vector of int) +0:95 Sequence +0:95 move second child to first child (temp 2-component vector of float) +0:95 'storeTemp' (temp 2-component vector of float) +0:95 Function Call: SomeValue( (temp 2-component vector of float) +0:95 imageStore (temp void) +0:95 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:95 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:95 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:95 Constant: +0:95 1 (const uint) +0:95 'storeTemp' (temp 2-component vector of float) +0:95 'storeTemp' (temp 2-component vector of float) +0:96 Sequence +0:96 imageStore (temp void) +0:96 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:96 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:96 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:96 Constant: +0:96 1 (const uint) +0:96 'lf2' (temp 2-component vector of float) +0:96 'lf2' (temp 2-component vector of float) +0:97 Sequence +0:97 move second child to first child (temp 2-component vector of int) +0:97 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 5 (const int) +0:? 2 (const int) +0:97 imageStore (temp void) +0:97 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:97 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:97 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:97 Constant: +0:97 1 (const uint) +0:97 'storeTemp' (temp 2-component vector of int) +0:97 'storeTemp' (temp 2-component vector of int) +0:98 Sequence +0:98 move second child to first child (temp 2-component vector of uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 6 (const uint) +0:? 2 (const uint) +0:98 imageStore (temp void) +0:98 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:98 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:98 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:98 Constant: +0:98 1 (const uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:98 'storeTemp' (temp 2-component vector of uint) +0:101 Sequence +0:101 move second child to first child (temp 2-component vector of float) +0:101 'storeTemp' (temp 2-component vector of float) +0:101 Function Call: SomeValue( (temp 2-component vector of float) +0:101 imageStore (temp void) +0:101 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:101 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:101 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:101 Constant: +0:101 2 (const uint) +0:101 'storeTemp' (temp 2-component vector of float) +0:101 'storeTemp' (temp 2-component vector of float) +0:102 Sequence +0:102 imageStore (temp void) +0:102 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:102 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:102 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:102 Constant: +0:102 2 (const uint) +0:102 'lf2' (temp 2-component vector of float) +0:102 'lf2' (temp 2-component vector of float) +0:103 Sequence +0:103 move second child to first child (temp 2-component vector of int) +0:103 'storeTemp' (temp 2-component vector of int) +0:? Constant: +0:? 8 (const int) +0:? 6 (const int) +0:103 imageStore (temp void) +0:103 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:103 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:103 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:103 Constant: +0:103 2 (const uint) +0:103 'storeTemp' (temp 2-component vector of int) +0:103 'storeTemp' (temp 2-component vector of int) +0:104 Sequence +0:104 move second child to first child (temp 2-component vector of uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:? Constant: +0:? 9 (const uint) +0:? 2 (const uint) +0:104 imageStore (temp void) +0:104 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:104 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:104 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:104 Constant: +0:104 2 (const uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:104 'storeTemp' (temp 2-component vector of uint) +0:107 Function Call: Fn1(vf2; (temp 2-component vector of float) +0:107 imageLoad (temp 2-component vector of float) +0:107 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:107 c1: direct index for structure (layout(offset=0 ) uniform int) +0:107 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:107 Constant: +0:107 0 (const uint) +0:108 Function Call: Fn1(vi2; (temp 2-component vector of int) +0:108 imageLoad (temp 2-component vector of int) +0:108 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:108 c1: direct index for structure (layout(offset=0 ) uniform int) +0:108 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:108 Constant: +0:108 0 (const uint) +0:109 Function Call: Fn1(vu2; (temp 2-component vector of uint) +0:109 imageLoad (temp 2-component vector of uint) +0:109 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:109 c1: direct index for structure (layout(offset=0 ) uniform int) +0:109 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:109 Constant: +0:109 0 (const uint) +0:111 Comma (temp void) +0:111 Function Call: Fn2(vf2; (temp void) +0:111 'tempArg' (temp 2-component vector of float) +0:111 Sequence +0:111 imageStore (temp void) +0:111 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:111 c1: direct index for structure (layout(offset=0 ) uniform int) +0:111 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:111 Constant: +0:111 0 (const uint) +0:111 'tempArg' (temp 2-component vector of float) +0:111 'tempArg' (temp 2-component vector of float) +0:112 Comma (temp void) +0:112 Function Call: Fn2(vi2; (temp void) +0:112 'tempArg' (temp 2-component vector of int) +0:112 Sequence +0:112 imageStore (temp void) +0:112 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:112 c1: direct index for structure (layout(offset=0 ) uniform int) +0:112 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:112 Constant: +0:112 0 (const uint) +0:112 'tempArg' (temp 2-component vector of int) +0:112 'tempArg' (temp 2-component vector of int) +0:113 Comma (temp void) +0:113 Function Call: Fn2(vu2; (temp void) +0:113 'tempArg' (temp 2-component vector of uint) +0:113 Sequence +0:113 imageStore (temp void) +0:113 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:113 c1: direct index for structure (layout(offset=0 ) uniform int) +0:113 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:113 Constant: +0:113 0 (const uint) +0:113 'tempArg' (temp 2-component vector of uint) +0:113 'tempArg' (temp 2-component vector of uint) +0:117 Sequence +0:117 move second child to first child (temp int) +0:117 'coordTemp' (temp int) +0:117 c1: direct index for structure (layout(offset=0 ) uniform int) +0:117 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:117 Constant: +0:117 0 (const uint) +0:117 move second child to first child (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 imageLoad (temp 2-component vector of float) +0:117 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 Pre-Increment (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 imageStore (temp void) +0:117 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:117 'coordTemp' (temp int) +0:117 'storeTemp' (temp 2-component vector of float) +0:117 'storeTemp' (temp 2-component vector of float) +0:118 Sequence +0:118 move second child to first child (temp int) +0:118 'coordTemp' (temp int) +0:118 c1: direct index for structure (layout(offset=0 ) uniform int) +0:118 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:118 Constant: +0:118 0 (const uint) +0:118 move second child to first child (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 imageLoad (temp 2-component vector of int) +0:118 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 Pre-Increment (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 imageStore (temp void) +0:118 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:118 'coordTemp' (temp int) +0:118 'storeTemp' (temp 2-component vector of int) +0:118 'storeTemp' (temp 2-component vector of int) +0:119 Sequence +0:119 move second child to first child (temp int) +0:119 'coordTemp' (temp int) +0:119 c1: direct index for structure (layout(offset=0 ) uniform int) +0:119 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:119 Constant: +0:119 0 (const uint) +0:119 move second child to first child (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 imageLoad (temp 2-component vector of uint) +0:119 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 Pre-Increment (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 imageStore (temp void) +0:119 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:119 'coordTemp' (temp int) +0:119 'storeTemp' (temp 2-component vector of uint) +0:119 'storeTemp' (temp 2-component vector of uint) +0:121 Sequence +0:121 move second child to first child (temp int) +0:121 'coordTemp' (temp int) +0:121 c1: direct index for structure (layout(offset=0 ) uniform int) +0:121 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:121 Constant: +0:121 0 (const uint) +0:121 move second child to first child (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 imageLoad (temp 2-component vector of float) +0:121 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 Pre-Decrement (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 imageStore (temp void) +0:121 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:121 'coordTemp' (temp int) +0:121 'storeTemp' (temp 2-component vector of float) +0:121 'storeTemp' (temp 2-component vector of float) +0:122 Sequence +0:122 move second child to first child (temp int) +0:122 'coordTemp' (temp int) +0:122 c1: direct index for structure (layout(offset=0 ) uniform int) +0:122 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:122 Constant: +0:122 0 (const uint) +0:122 move second child to first child (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 imageLoad (temp 2-component vector of int) +0:122 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 Pre-Decrement (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 imageStore (temp void) +0:122 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:122 'coordTemp' (temp int) +0:122 'storeTemp' (temp 2-component vector of int) +0:122 'storeTemp' (temp 2-component vector of int) +0:123 Sequence +0:123 move second child to first child (temp int) +0:123 'coordTemp' (temp int) +0:123 c1: direct index for structure (layout(offset=0 ) uniform int) +0:123 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:123 Constant: +0:123 0 (const uint) +0:123 move second child to first child (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 imageLoad (temp 2-component vector of uint) +0:123 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 Pre-Decrement (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 imageStore (temp void) +0:123 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:123 'coordTemp' (temp int) +0:123 'storeTemp' (temp 2-component vector of uint) +0:123 'storeTemp' (temp 2-component vector of uint) +0:126 Sequence +0:126 move second child to first child (temp int) +0:126 'coordTemp' (temp int) +0:126 c1: direct index for structure (layout(offset=0 ) uniform int) +0:126 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:126 Constant: +0:126 0 (const uint) +0:126 move second child to first child (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:126 imageLoad (temp 2-component vector of float) +0:126 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 move second child to first child (temp 2-component vector of float) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:126 Post-Increment (temp 2-component vector of float) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 imageStore (temp void) +0:126 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:126 'coordTemp' (temp int) +0:126 'storeTempPost' (temp 2-component vector of float) +0:126 'storeTempPre' (temp 2-component vector of float) +0:127 Sequence +0:127 move second child to first child (temp int) +0:127 'coordTemp' (temp int) +0:127 c1: direct index for structure (layout(offset=0 ) uniform int) +0:127 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:127 Constant: +0:127 0 (const uint) +0:127 move second child to first child (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:127 imageLoad (temp 2-component vector of uint) +0:127 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 move second child to first child (temp 2-component vector of uint) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:127 Post-Decrement (temp 2-component vector of uint) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 imageStore (temp void) +0:127 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:127 'coordTemp' (temp int) +0:127 'storeTempPost' (temp 2-component vector of uint) +0:127 'storeTempPre' (temp 2-component vector of uint) +0:128 Sequence +0:128 move second child to first child (temp int) +0:128 'coordTemp' (temp int) +0:128 c1: direct index for structure (layout(offset=0 ) uniform int) +0:128 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:128 Constant: +0:128 0 (const uint) +0:128 move second child to first child (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:128 imageLoad (temp 2-component vector of int) +0:128 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 move second child to first child (temp 2-component vector of int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:128 Post-Increment (temp 2-component vector of int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 imageStore (temp void) +0:128 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:128 'coordTemp' (temp int) +0:128 'storeTempPost' (temp 2-component vector of int) +0:128 'storeTempPre' (temp 2-component vector of int) +0:130 Sequence +0:130 move second child to first child (temp int) +0:130 'coordTemp' (temp int) +0:130 c1: direct index for structure (layout(offset=0 ) uniform int) +0:130 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:130 Constant: +0:130 0 (const uint) +0:130 move second child to first child (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:130 imageLoad (temp 2-component vector of float) +0:130 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 move second child to first child (temp 2-component vector of float) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:130 Post-Decrement (temp 2-component vector of float) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 imageStore (temp void) +0:130 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:130 'coordTemp' (temp int) +0:130 'storeTempPost' (temp 2-component vector of float) +0:130 'storeTempPre' (temp 2-component vector of float) +0:131 Sequence +0:131 move second child to first child (temp int) +0:131 'coordTemp' (temp int) +0:131 c1: direct index for structure (layout(offset=0 ) uniform int) +0:131 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:131 Constant: +0:131 0 (const uint) +0:131 move second child to first child (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:131 imageLoad (temp 2-component vector of int) +0:131 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 move second child to first child (temp 2-component vector of int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:131 Post-Increment (temp 2-component vector of int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 imageStore (temp void) +0:131 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:131 'coordTemp' (temp int) +0:131 'storeTempPost' (temp 2-component vector of int) +0:131 'storeTempPre' (temp 2-component vector of int) +0:132 Sequence +0:132 move second child to first child (temp int) +0:132 'coordTemp' (temp int) +0:132 c1: direct index for structure (layout(offset=0 ) uniform int) +0:132 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:132 Constant: +0:132 0 (const uint) +0:132 move second child to first child (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:132 imageLoad (temp 2-component vector of uint) +0:132 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 move second child to first child (temp 2-component vector of uint) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:132 Post-Decrement (temp 2-component vector of uint) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 imageStore (temp void) +0:132 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:132 'coordTemp' (temp int) +0:132 'storeTempPost' (temp 2-component vector of uint) +0:132 'storeTempPre' (temp 2-component vector of uint) +0:135 Sequence +0:135 move second child to first child (temp 2-component vector of float) +0:135 'storeTemp' (temp 2-component vector of float) +0:? imageLoad (temp 2-component vector of float) +0:135 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:135 imageStore (temp void) +0:135 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:135 Constant: +0:135 1 (const int) +0:135 'storeTemp' (temp 2-component vector of float) +0:135 'storeTemp' (temp 2-component vector of float) +0:137 move second child to first child (temp 4-component vector of float) +0:137 Color: direct index for structure (temp 4-component vector of float) +0:137 'psout' (temp structure{temp 4-component vector of float Color}) +0:137 Constant: +0:137 0 (const int) +0:137 Constant: +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:137 1.000000 +0:139 Sequence +0:139 Sequence +0:139 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:139 Color: direct index for structure (temp 4-component vector of float) +0:139 'psout' (temp structure{temp 4-component vector of float Color}) +0:139 Constant: +0:139 0 (const int) +0:139 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df2' (layout(rg32f ) uniform image1D) +0:? 'g_tTex1di2' (layout(rg32i ) uniform iimage1D) +0:? 'g_tTex1du2' (layout(rg32ui ) uniform uimage1D) +0:? 'g_tTex2df2' (layout(rg32f ) uniform image2D) +0:? 'g_tTex2di2' (layout(rg32i ) uniform iimage2D) +0:? 'g_tTex2du2' (layout(rg32ui ) uniform uimage2D) +0:? 'g_tTex3df2' (layout(rg32f ) uniform image3D) +0:? 'g_tTex3di2' (layout(rg32i ) uniform iimage3D) +0:? 'g_tTex3du2' (layout(rg32ui ) uniform uimage3D) +0:? 'g_tTex1df2a' (layout(rg32f ) uniform image1DArray) +0:? 'g_tTex1di2a' (layout(rg32i ) uniform iimage1DArray) +0:? 'g_tTex1du2a' (layout(rg32ui ) uniform uimage1DArray) +0:? 'g_tTex2df2a' (layout(rg32f ) uniform image2DArray) +0:? 'g_tTex2di2a' (layout(rg32i ) uniform iimage2DArray) +0:? 'g_tTex2du2a' (layout(rg32ui ) uniform uimage2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 600 + + Capability Shader + Capability Sampled1D + Capability StorageImageExtendedFormats + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 575 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 11 "Fn1(vi2;" + Name 10 "x" + Name 18 "Fn1(vu2;" + Name 17 "x" + Name 25 "Fn1(vf2;" + Name 24 "x" + Name 29 "Fn2(vi2;" + Name 28 "x" + Name 33 "Fn2(vu2;" + Name 32 "x" + Name 37 "Fn2(vf2;" + Name 36 "x" + Name 40 "SomeValue(" + Name 59 "$Global" + MemberName 59($Global) 0 "c1" + MemberName 59($Global) 1 "c2" + MemberName 59($Global) 2 "c3" + MemberName 59($Global) 3 "c4" + MemberName 59($Global) 4 "o1" + MemberName 59($Global) 5 "o2" + MemberName 59($Global) 6 "o3" + MemberName 59($Global) 7 "o4" + MemberName 59($Global) 8 "uf2" + MemberName 59($Global) 9 "ui2" + MemberName 59($Global) 10 "uu2" + Name 61 "" + Name 71 "g_tTex1df2" + Name 77 "r00" + Name 82 "r01" + Name 85 "g_tTex1di2" + Name 90 "r02" + Name 93 "g_tTex1du2" + Name 98 "r10" + Name 101 "g_tTex2df2" + Name 106 "r11" + Name 109 "g_tTex2di2" + Name 114 "r12" + Name 117 "g_tTex2du2" + Name 122 "r20" + Name 125 "g_tTex3df2" + Name 132 "r21" + Name 135 "g_tTex3di2" + Name 140 "r22" + Name 143 "g_tTex3du2" + Name 148 "lf2" + Name 153 "storeTemp" + Name 163 "storeTemp" + Name 169 "storeTemp" + Name 177 "val1" + Name 179 "coordTemp" + Name 182 "storeTemp" + Name 193 "coordTemp" + Name 196 "storeTemp" + Name 207 "coordTemp" + Name 210 "storeTemp" + Name 221 "coordTemp" + Name 224 "storeTemp" + Name 234 "coordTemp" + Name 237 "storeTemp" + Name 247 "coordTemp" + Name 250 "storeTemp" + Name 261 "coordTemp" + Name 264 "storeTemp" + Name 275 "coordTemp" + Name 278 "storeTemp" + Name 288 "coordTemp" + Name 291 "storeTemp" + Name 301 "storeTemp" + Name 311 "storeTemp" + Name 318 "storeTemp" + Name 325 "storeTemp" + Name 335 "storeTemp" + Name 342 "storeTemp" + Name 353 "param" + Name 359 "param" + Name 365 "param" + Name 367 "tempArg" + Name 368 "param" + Name 375 "tempArg" + Name 376 "param" + Name 383 "tempArg" + Name 384 "param" + Name 391 "coordTemp" + Name 394 "storeTemp" + Name 405 "coordTemp" + Name 408 "storeTemp" + Name 418 "coordTemp" + Name 421 "storeTemp" + Name 431 "coordTemp" + Name 434 "storeTemp" + Name 444 "coordTemp" + Name 447 "storeTemp" + Name 457 "coordTemp" + Name 460 "storeTemp" + Name 470 "coordTemp" + Name 473 "storeTempPre" + Name 477 "storeTempPost" + Name 485 "coordTemp" + Name 488 "storeTempPre" + Name 492 "storeTempPost" + Name 500 "coordTemp" + Name 503 "storeTempPre" + Name 507 "storeTempPost" + Name 515 "coordTemp" + Name 518 "storeTempPre" + Name 522 "storeTempPost" + Name 530 "coordTemp" + Name 533 "storeTempPre" + Name 537 "storeTempPost" + Name 545 "coordTemp" + Name 548 "storeTempPre" + Name 552 "storeTempPost" + Name 560 "storeTemp" + Name 568 "PS_OUTPUT" + MemberName 568(PS_OUTPUT) 0 "Color" + Name 570 "psout" + Name 575 "Color" + Name 581 "g_sSamp" + Name 584 "g_tTex1df2a" + Name 587 "g_tTex1di2a" + Name 590 "g_tTex1du2a" + Name 593 "g_tTex2df2a" + Name 596 "g_tTex2di2a" + Name 599 "g_tTex2du2a" + MemberDecorate 59($Global) 0 Offset 0 + MemberDecorate 59($Global) 1 Offset 8 + MemberDecorate 59($Global) 2 Offset 16 + MemberDecorate 59($Global) 3 Offset 32 + MemberDecorate 59($Global) 4 Offset 48 + MemberDecorate 59($Global) 5 Offset 56 + MemberDecorate 59($Global) 6 Offset 64 + MemberDecorate 59($Global) 7 Offset 80 + MemberDecorate 59($Global) 8 Offset 96 + MemberDecorate 59($Global) 9 Offset 104 + MemberDecorate 59($Global) 10 Offset 112 + Decorate 59($Global) Block + Decorate 61 DescriptorSet 0 + Decorate 71(g_tTex1df2) DescriptorSet 0 + Decorate 85(g_tTex1di2) DescriptorSet 0 + Decorate 93(g_tTex1du2) DescriptorSet 0 + Decorate 101(g_tTex2df2) DescriptorSet 0 + Decorate 109(g_tTex2di2) DescriptorSet 0 + Decorate 117(g_tTex2du2) DescriptorSet 0 + Decorate 125(g_tTex3df2) DescriptorSet 0 + Decorate 135(g_tTex3di2) DescriptorSet 0 + Decorate 143(g_tTex3du2) DescriptorSet 0 + Decorate 575(Color) Location 0 + Decorate 581(g_sSamp) DescriptorSet 0 + Decorate 581(g_sSamp) Binding 0 + Decorate 584(g_tTex1df2a) DescriptorSet 0 + Decorate 587(g_tTex1di2a) DescriptorSet 0 + Decorate 590(g_tTex1du2a) DescriptorSet 0 + Decorate 593(g_tTex2df2a) DescriptorSet 0 + Decorate 596(g_tTex2di2a) DescriptorSet 0 + Decorate 599(g_tTex2du2a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 9: TypeFunction 7(ivec2) 8(ptr) + 13: TypeInt 32 0 + 14: TypeVector 13(int) 2 + 15: TypePointer Function 14(ivec2) + 16: TypeFunction 14(ivec2) 15(ptr) + 20: TypeFloat 32 + 21: TypeVector 20(float) 2 + 22: TypePointer Function 21(fvec2) + 23: TypeFunction 21(fvec2) 22(ptr) + 27: TypeFunction 2 8(ptr) + 31: TypeFunction 2 15(ptr) + 35: TypeFunction 2 22(ptr) + 39: TypeFunction 21(fvec2) + 51: 6(int) Constant 0 + 52: 7(ivec2) ConstantComposite 51 51 + 53: 13(int) Constant 0 + 54: 14(ivec2) ConstantComposite 53 53 + 55: 20(float) Constant 0 + 56: 21(fvec2) ConstantComposite 55 55 + 57: TypeVector 6(int) 3 + 58: TypeVector 6(int) 4 + 59($Global): TypeStruct 6(int) 7(ivec2) 57(ivec3) 58(ivec4) 6(int) 7(ivec2) 57(ivec3) 58(ivec4) 21(fvec2) 7(ivec2) 14(ivec2) + 60: TypePointer Uniform 59($Global) + 61: 60(ptr) Variable Uniform + 62: 6(int) Constant 1 + 63: TypePointer Uniform 7(ivec2) + 69: TypeImage 20(float) 1D nonsampled format:Rg32f + 70: TypePointer UniformConstant 69 + 71(g_tTex1df2): 70(ptr) Variable UniformConstant + 73: TypePointer Uniform 6(int) + 83: TypeImage 6(int) 1D nonsampled format:Rg32i + 84: TypePointer UniformConstant 83 + 85(g_tTex1di2): 84(ptr) Variable UniformConstant + 91: TypeImage 13(int) 1D nonsampled format:Rg32ui + 92: TypePointer UniformConstant 91 + 93(g_tTex1du2): 92(ptr) Variable UniformConstant + 99: TypeImage 20(float) 2D nonsampled format:Rg32f + 100: TypePointer UniformConstant 99 + 101(g_tTex2df2): 100(ptr) Variable UniformConstant + 107: TypeImage 6(int) 2D nonsampled format:Rg32i + 108: TypePointer UniformConstant 107 + 109(g_tTex2di2): 108(ptr) Variable UniformConstant + 115: TypeImage 13(int) 2D nonsampled format:Rg32ui + 116: TypePointer UniformConstant 115 + 117(g_tTex2du2): 116(ptr) Variable UniformConstant + 123: TypeImage 20(float) 3D nonsampled format:Rg32f + 124: TypePointer UniformConstant 123 + 125(g_tTex3df2): 124(ptr) Variable UniformConstant + 127: 6(int) Constant 2 + 128: TypePointer Uniform 57(ivec3) + 133: TypeImage 6(int) 3D nonsampled format:Rg32i + 134: TypePointer UniformConstant 133 + 135(g_tTex3di2): 134(ptr) Variable UniformConstant + 141: TypeImage 13(int) 3D nonsampled format:Rg32ui + 142: TypePointer UniformConstant 141 + 143(g_tTex3du2): 142(ptr) Variable UniformConstant + 149: 6(int) Constant 8 + 150: TypePointer Uniform 21(fvec2) + 164: 7(ivec2) ConstantComposite 127 127 + 170: 13(int) Constant 3 + 171: 13(int) Constant 2 + 172: 14(ivec2) ConstantComposite 170 171 + 178: TypePointer Function 6(int) + 186: 20(float) Constant 1073741824 + 200: 20(float) Constant 1077936128 + 214: 20(float) Constant 1082130432 + 254: 6(int) Constant 65535 + 268: 6(int) Constant 61680 + 312: 6(int) Constant 5 + 313: 7(ivec2) ConstantComposite 312 127 + 319: 13(int) Constant 6 + 320: 14(ivec2) ConstantComposite 319 171 + 336: 6(int) Constant 6 + 337: 7(ivec2) ConstantComposite 149 336 + 343: 13(int) Constant 9 + 344: 14(ivec2) ConstantComposite 343 171 + 399: 20(float) Constant 1065353216 + 562: 6(int) Constant 3 + 563: 7(ivec2) ConstantComposite 127 562 + 567: TypeVector 20(float) 4 + 568(PS_OUTPUT): TypeStruct 567(fvec4) + 569: TypePointer Function 568(PS_OUTPUT) + 571: 567(fvec4) ConstantComposite 399 399 399 399 + 572: TypePointer Function 567(fvec4) + 574: TypePointer Output 567(fvec4) + 575(Color): 574(ptr) Variable Output + 579: TypeSampler + 580: TypePointer UniformConstant 579 + 581(g_sSamp): 580(ptr) Variable UniformConstant + 582: TypeImage 20(float) 1D array nonsampled format:Rg32f + 583: TypePointer UniformConstant 582 +584(g_tTex1df2a): 583(ptr) Variable UniformConstant + 585: TypeImage 6(int) 1D array nonsampled format:Rg32i + 586: TypePointer UniformConstant 585 +587(g_tTex1di2a): 586(ptr) Variable UniformConstant + 588: TypeImage 13(int) 1D array nonsampled format:Rg32ui + 589: TypePointer UniformConstant 588 +590(g_tTex1du2a): 589(ptr) Variable UniformConstant + 591: TypeImage 20(float) 2D array nonsampled format:Rg32f + 592: TypePointer UniformConstant 591 +593(g_tTex2df2a): 592(ptr) Variable UniformConstant + 594: TypeImage 6(int) 2D array nonsampled format:Rg32i + 595: TypePointer UniformConstant 594 +596(g_tTex2di2a): 595(ptr) Variable UniformConstant + 597: TypeImage 13(int) 2D array nonsampled format:Rg32ui + 598: TypePointer UniformConstant 597 +599(g_tTex2du2a): 598(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 77(r00): 22(ptr) Variable Function + 82(r01): 8(ptr) Variable Function + 90(r02): 15(ptr) Variable Function + 98(r10): 22(ptr) Variable Function + 106(r11): 8(ptr) Variable Function + 114(r12): 15(ptr) Variable Function + 122(r20): 22(ptr) Variable Function + 132(r21): 8(ptr) Variable Function + 140(r22): 15(ptr) Variable Function + 148(lf2): 22(ptr) Variable Function + 153(storeTemp): 22(ptr) Variable Function + 163(storeTemp): 8(ptr) Variable Function + 169(storeTemp): 15(ptr) Variable Function + 177(val1): 22(ptr) Variable Function + 179(coordTemp): 178(ptr) Variable Function + 182(storeTemp): 22(ptr) Variable Function + 193(coordTemp): 178(ptr) Variable Function + 196(storeTemp): 22(ptr) Variable Function + 207(coordTemp): 178(ptr) Variable Function + 210(storeTemp): 22(ptr) Variable Function + 221(coordTemp): 178(ptr) Variable Function + 224(storeTemp): 8(ptr) Variable Function + 234(coordTemp): 178(ptr) Variable Function + 237(storeTemp): 8(ptr) Variable Function + 247(coordTemp): 178(ptr) Variable Function + 250(storeTemp): 8(ptr) Variable Function + 261(coordTemp): 178(ptr) Variable Function + 264(storeTemp): 8(ptr) Variable Function + 275(coordTemp): 178(ptr) Variable Function + 278(storeTemp): 8(ptr) Variable Function + 288(coordTemp): 178(ptr) Variable Function + 291(storeTemp): 8(ptr) Variable Function + 301(storeTemp): 22(ptr) Variable Function + 311(storeTemp): 8(ptr) Variable Function + 318(storeTemp): 15(ptr) Variable Function + 325(storeTemp): 22(ptr) Variable Function + 335(storeTemp): 8(ptr) Variable Function + 342(storeTemp): 15(ptr) Variable Function + 353(param): 22(ptr) Variable Function + 359(param): 8(ptr) Variable Function + 365(param): 15(ptr) Variable Function + 367(tempArg): 22(ptr) Variable Function + 368(param): 22(ptr) Variable Function + 375(tempArg): 8(ptr) Variable Function + 376(param): 8(ptr) Variable Function + 383(tempArg): 15(ptr) Variable Function + 384(param): 15(ptr) Variable Function + 391(coordTemp): 178(ptr) Variable Function + 394(storeTemp): 22(ptr) Variable Function + 405(coordTemp): 178(ptr) Variable Function + 408(storeTemp): 8(ptr) Variable Function + 418(coordTemp): 178(ptr) Variable Function + 421(storeTemp): 15(ptr) Variable Function + 431(coordTemp): 178(ptr) Variable Function + 434(storeTemp): 22(ptr) Variable Function + 444(coordTemp): 178(ptr) Variable Function + 447(storeTemp): 8(ptr) Variable Function + 457(coordTemp): 178(ptr) Variable Function + 460(storeTemp): 15(ptr) Variable Function + 470(coordTemp): 178(ptr) Variable Function +473(storeTempPre): 22(ptr) Variable Function +477(storeTempPost): 22(ptr) Variable Function + 485(coordTemp): 178(ptr) Variable Function +488(storeTempPre): 15(ptr) Variable Function +492(storeTempPost): 15(ptr) Variable Function + 500(coordTemp): 178(ptr) Variable Function +503(storeTempPre): 8(ptr) Variable Function +507(storeTempPost): 8(ptr) Variable Function + 515(coordTemp): 178(ptr) Variable Function +518(storeTempPre): 22(ptr) Variable Function +522(storeTempPost): 22(ptr) Variable Function + 530(coordTemp): 178(ptr) Variable Function +533(storeTempPre): 8(ptr) Variable Function +537(storeTempPost): 8(ptr) Variable Function + 545(coordTemp): 178(ptr) Variable Function +548(storeTempPre): 15(ptr) Variable Function +552(storeTempPost): 15(ptr) Variable Function + 560(storeTemp): 22(ptr) Variable Function + 570(psout): 569(ptr) Variable Function + 72: 69 Load 71(g_tTex1df2) + 74: 73(ptr) AccessChain 61 51 + 75: 6(int) Load 74 + 76: 21(fvec2) ImageRead 72 75 + 78: 69 Load 71(g_tTex1df2) + 79: 73(ptr) AccessChain 61 51 + 80: 6(int) Load 79 + 81: 21(fvec2) ImageRead 78 80 + Store 77(r00) 81 + 86: 83 Load 85(g_tTex1di2) + 87: 73(ptr) AccessChain 61 51 + 88: 6(int) Load 87 + 89: 7(ivec2) ImageRead 86 88 + Store 82(r01) 89 + 94: 91 Load 93(g_tTex1du2) + 95: 73(ptr) AccessChain 61 51 + 96: 6(int) Load 95 + 97: 14(ivec2) ImageRead 94 96 + Store 90(r02) 97 + 102: 99 Load 101(g_tTex2df2) + 103: 63(ptr) AccessChain 61 62 + 104: 7(ivec2) Load 103 + 105: 21(fvec2) ImageRead 102 104 + Store 98(r10) 105 + 110: 107 Load 109(g_tTex2di2) + 111: 63(ptr) AccessChain 61 62 + 112: 7(ivec2) Load 111 + 113: 7(ivec2) ImageRead 110 112 + Store 106(r11) 113 + 118: 115 Load 117(g_tTex2du2) + 119: 63(ptr) AccessChain 61 62 + 120: 7(ivec2) Load 119 + 121: 14(ivec2) ImageRead 118 120 + Store 114(r12) 121 + 126: 123 Load 125(g_tTex3df2) + 129: 128(ptr) AccessChain 61 127 + 130: 57(ivec3) Load 129 + 131: 21(fvec2) ImageRead 126 130 + Store 122(r20) 131 + 136: 133 Load 135(g_tTex3di2) + 137: 128(ptr) AccessChain 61 127 + 138: 57(ivec3) Load 137 + 139: 7(ivec2) ImageRead 136 138 + Store 132(r21) 139 + 144: 141 Load 143(g_tTex3du2) + 145: 128(ptr) AccessChain 61 127 + 146: 57(ivec3) Load 145 + 147: 14(ivec2) ImageRead 144 146 + Store 140(r22) 147 + 151: 150(ptr) AccessChain 61 149 + 152: 21(fvec2) Load 151 + Store 148(lf2) 152 + 154: 21(fvec2) FunctionCall 40(SomeValue() + Store 153(storeTemp) 154 + 155: 69 Load 71(g_tTex1df2) + 156: 73(ptr) AccessChain 61 51 + 157: 6(int) Load 156 + 158: 21(fvec2) Load 153(storeTemp) + ImageWrite 155 157 158 + 159: 69 Load 71(g_tTex1df2) + 160: 73(ptr) AccessChain 61 51 + 161: 6(int) Load 160 + 162: 21(fvec2) Load 148(lf2) + ImageWrite 159 161 162 + Store 163(storeTemp) 164 + 165: 83 Load 85(g_tTex1di2) + 166: 73(ptr) AccessChain 61 51 + 167: 6(int) Load 166 + 168: 7(ivec2) Load 163(storeTemp) + ImageWrite 165 167 168 + Store 169(storeTemp) 172 + 173: 91 Load 93(g_tTex1du2) + 174: 73(ptr) AccessChain 61 51 + 175: 6(int) Load 174 + 176: 14(ivec2) Load 169(storeTemp) + ImageWrite 173 175 176 + 180: 73(ptr) AccessChain 61 51 + 181: 6(int) Load 180 + Store 179(coordTemp) 181 + 183: 69 Load 71(g_tTex1df2) + 184: 6(int) Load 179(coordTemp) + 185: 21(fvec2) ImageRead 183 184 + Store 182(storeTemp) 185 + 187: 21(fvec2) Load 182(storeTemp) + 188: 21(fvec2) VectorTimesScalar 187 186 + Store 182(storeTemp) 188 + 189: 69 Load 71(g_tTex1df2) + 190: 6(int) Load 179(coordTemp) + 191: 21(fvec2) Load 182(storeTemp) + ImageWrite 189 190 191 + 192: 21(fvec2) Load 182(storeTemp) + Store 177(val1) 192 + 194: 73(ptr) AccessChain 61 51 + 195: 6(int) Load 194 + Store 193(coordTemp) 195 + 197: 69 Load 71(g_tTex1df2) + 198: 6(int) Load 193(coordTemp) + 199: 21(fvec2) ImageRead 197 198 + Store 196(storeTemp) 199 + 201: 21(fvec2) Load 196(storeTemp) + 202: 21(fvec2) CompositeConstruct 200 200 + 203: 21(fvec2) FSub 201 202 + Store 196(storeTemp) 203 + 204: 69 Load 71(g_tTex1df2) + 205: 6(int) Load 193(coordTemp) + 206: 21(fvec2) Load 196(storeTemp) + ImageWrite 204 205 206 + 208: 73(ptr) AccessChain 61 51 + 209: 6(int) Load 208 + Store 207(coordTemp) 209 + 211: 69 Load 71(g_tTex1df2) + 212: 6(int) Load 207(coordTemp) + 213: 21(fvec2) ImageRead 211 212 + Store 210(storeTemp) 213 + 215: 21(fvec2) Load 210(storeTemp) + 216: 21(fvec2) CompositeConstruct 214 214 + 217: 21(fvec2) FAdd 215 216 + Store 210(storeTemp) 217 + 218: 69 Load 71(g_tTex1df2) + 219: 6(int) Load 207(coordTemp) + 220: 21(fvec2) Load 210(storeTemp) + ImageWrite 218 219 220 + 222: 73(ptr) AccessChain 61 51 + 223: 6(int) Load 222 + Store 221(coordTemp) 223 + 225: 83 Load 85(g_tTex1di2) + 226: 6(int) Load 221(coordTemp) + 227: 7(ivec2) ImageRead 225 226 + Store 224(storeTemp) 227 + 228: 7(ivec2) Load 224(storeTemp) + 229: 7(ivec2) CompositeConstruct 127 127 + 230: 7(ivec2) SDiv 228 229 + Store 224(storeTemp) 230 + 231: 83 Load 85(g_tTex1di2) + 232: 6(int) Load 221(coordTemp) + 233: 7(ivec2) Load 224(storeTemp) + ImageWrite 231 232 233 + 235: 73(ptr) AccessChain 61 51 + 236: 6(int) Load 235 + Store 234(coordTemp) 236 + 238: 83 Load 85(g_tTex1di2) + 239: 6(int) Load 234(coordTemp) + 240: 7(ivec2) ImageRead 238 239 + Store 237(storeTemp) 240 + 241: 7(ivec2) Load 237(storeTemp) + 242: 7(ivec2) CompositeConstruct 127 127 + 243: 7(ivec2) SMod 241 242 + Store 237(storeTemp) 243 + 244: 83 Load 85(g_tTex1di2) + 245: 6(int) Load 234(coordTemp) + 246: 7(ivec2) Load 237(storeTemp) + ImageWrite 244 245 246 + 248: 73(ptr) AccessChain 61 51 + 249: 6(int) Load 248 + Store 247(coordTemp) 249 + 251: 83 Load 85(g_tTex1di2) + 252: 6(int) Load 247(coordTemp) + 253: 7(ivec2) ImageRead 251 252 + Store 250(storeTemp) 253 + 255: 7(ivec2) Load 250(storeTemp) + 256: 7(ivec2) CompositeConstruct 254 254 + 257: 7(ivec2) BitwiseAnd 255 256 + Store 250(storeTemp) 257 + 258: 83 Load 85(g_tTex1di2) + 259: 6(int) Load 247(coordTemp) + 260: 7(ivec2) Load 250(storeTemp) + ImageWrite 258 259 260 + 262: 73(ptr) AccessChain 61 51 + 263: 6(int) Load 262 + Store 261(coordTemp) 263 + 265: 83 Load 85(g_tTex1di2) + 266: 6(int) Load 261(coordTemp) + 267: 7(ivec2) ImageRead 265 266 + Store 264(storeTemp) 267 + 269: 7(ivec2) Load 264(storeTemp) + 270: 7(ivec2) CompositeConstruct 268 268 + 271: 7(ivec2) BitwiseOr 269 270 + Store 264(storeTemp) 271 + 272: 83 Load 85(g_tTex1di2) + 273: 6(int) Load 261(coordTemp) + 274: 7(ivec2) Load 264(storeTemp) + ImageWrite 272 273 274 + 276: 73(ptr) AccessChain 61 51 + 277: 6(int) Load 276 + Store 275(coordTemp) 277 + 279: 83 Load 85(g_tTex1di2) + 280: 6(int) Load 275(coordTemp) + 281: 7(ivec2) ImageRead 279 280 + Store 278(storeTemp) 281 + 282: 7(ivec2) Load 278(storeTemp) + 283: 7(ivec2) CompositeConstruct 127 127 + 284: 7(ivec2) ShiftLeftLogical 282 283 + Store 278(storeTemp) 284 + 285: 83 Load 85(g_tTex1di2) + 286: 6(int) Load 275(coordTemp) + 287: 7(ivec2) Load 278(storeTemp) + ImageWrite 285 286 287 + 289: 73(ptr) AccessChain 61 51 + 290: 6(int) Load 289 + Store 288(coordTemp) 290 + 292: 83 Load 85(g_tTex1di2) + 293: 6(int) Load 288(coordTemp) + 294: 7(ivec2) ImageRead 292 293 + Store 291(storeTemp) 294 + 295: 7(ivec2) Load 291(storeTemp) + 296: 7(ivec2) CompositeConstruct 127 127 + 297: 7(ivec2) ShiftRightArithmetic 295 296 + Store 291(storeTemp) 297 + 298: 83 Load 85(g_tTex1di2) + 299: 6(int) Load 288(coordTemp) + 300: 7(ivec2) Load 291(storeTemp) + ImageWrite 298 299 300 + 302: 21(fvec2) FunctionCall 40(SomeValue() + Store 301(storeTemp) 302 + 303: 99 Load 101(g_tTex2df2) + 304: 63(ptr) AccessChain 61 62 + 305: 7(ivec2) Load 304 + 306: 21(fvec2) Load 301(storeTemp) + ImageWrite 303 305 306 + 307: 99 Load 101(g_tTex2df2) + 308: 63(ptr) AccessChain 61 62 + 309: 7(ivec2) Load 308 + 310: 21(fvec2) Load 148(lf2) + ImageWrite 307 309 310 + Store 311(storeTemp) 313 + 314: 107 Load 109(g_tTex2di2) + 315: 63(ptr) AccessChain 61 62 + 316: 7(ivec2) Load 315 + 317: 7(ivec2) Load 311(storeTemp) + ImageWrite 314 316 317 + Store 318(storeTemp) 320 + 321: 115 Load 117(g_tTex2du2) + 322: 63(ptr) AccessChain 61 62 + 323: 7(ivec2) Load 322 + 324: 14(ivec2) Load 318(storeTemp) + ImageWrite 321 323 324 + 326: 21(fvec2) FunctionCall 40(SomeValue() + Store 325(storeTemp) 326 + 327: 123 Load 125(g_tTex3df2) + 328: 128(ptr) AccessChain 61 127 + 329: 57(ivec3) Load 328 + 330: 21(fvec2) Load 325(storeTemp) + ImageWrite 327 329 330 + 331: 123 Load 125(g_tTex3df2) + 332: 128(ptr) AccessChain 61 127 + 333: 57(ivec3) Load 332 + 334: 21(fvec2) Load 148(lf2) + ImageWrite 331 333 334 + Store 335(storeTemp) 337 + 338: 133 Load 135(g_tTex3di2) + 339: 128(ptr) AccessChain 61 127 + 340: 57(ivec3) Load 339 + 341: 7(ivec2) Load 335(storeTemp) + ImageWrite 338 340 341 + Store 342(storeTemp) 344 + 345: 141 Load 143(g_tTex3du2) + 346: 128(ptr) AccessChain 61 127 + 347: 57(ivec3) Load 346 + 348: 14(ivec2) Load 342(storeTemp) + ImageWrite 345 347 348 + 349: 69 Load 71(g_tTex1df2) + 350: 73(ptr) AccessChain 61 51 + 351: 6(int) Load 350 + 352: 21(fvec2) ImageRead 349 351 + Store 353(param) 352 + 354: 21(fvec2) FunctionCall 25(Fn1(vf2;) 353(param) + 355: 83 Load 85(g_tTex1di2) + 356: 73(ptr) AccessChain 61 51 + 357: 6(int) Load 356 + 358: 7(ivec2) ImageRead 355 357 + Store 359(param) 358 + 360: 7(ivec2) FunctionCall 11(Fn1(vi2;) 359(param) + 361: 91 Load 93(g_tTex1du2) + 362: 73(ptr) AccessChain 61 51 + 363: 6(int) Load 362 + 364: 14(ivec2) ImageRead 361 363 + Store 365(param) 364 + 366: 14(ivec2) FunctionCall 18(Fn1(vu2;) 365(param) + 369: 2 FunctionCall 37(Fn2(vf2;) 368(param) + 370: 21(fvec2) Load 368(param) + Store 367(tempArg) 370 + 371: 69 Load 71(g_tTex1df2) + 372: 73(ptr) AccessChain 61 51 + 373: 6(int) Load 372 + 374: 21(fvec2) Load 367(tempArg) + ImageWrite 371 373 374 + 377: 2 FunctionCall 29(Fn2(vi2;) 376(param) + 378: 7(ivec2) Load 376(param) + Store 375(tempArg) 378 + 379: 83 Load 85(g_tTex1di2) + 380: 73(ptr) AccessChain 61 51 + 381: 6(int) Load 380 + 382: 7(ivec2) Load 375(tempArg) + ImageWrite 379 381 382 + 385: 2 FunctionCall 33(Fn2(vu2;) 384(param) + 386: 14(ivec2) Load 384(param) + Store 383(tempArg) 386 + 387: 91 Load 93(g_tTex1du2) + 388: 73(ptr) AccessChain 61 51 + 389: 6(int) Load 388 + 390: 14(ivec2) Load 383(tempArg) + ImageWrite 387 389 390 + 392: 73(ptr) AccessChain 61 51 + 393: 6(int) Load 392 + Store 391(coordTemp) 393 + 395: 69 Load 71(g_tTex1df2) + 396: 6(int) Load 391(coordTemp) + 397: 21(fvec2) ImageRead 395 396 + Store 394(storeTemp) 397 + 398: 21(fvec2) Load 394(storeTemp) + 400: 21(fvec2) CompositeConstruct 399 399 + 401: 21(fvec2) FAdd 398 400 + Store 394(storeTemp) 401 + 402: 69 Load 71(g_tTex1df2) + 403: 6(int) Load 391(coordTemp) + 404: 21(fvec2) Load 394(storeTemp) + ImageWrite 402 403 404 + 406: 73(ptr) AccessChain 61 51 + 407: 6(int) Load 406 + Store 405(coordTemp) 407 + 409: 83 Load 85(g_tTex1di2) + 410: 6(int) Load 405(coordTemp) + 411: 7(ivec2) ImageRead 409 410 + Store 408(storeTemp) 411 + 412: 7(ivec2) Load 408(storeTemp) + 413: 7(ivec2) CompositeConstruct 62 62 + 414: 7(ivec2) IAdd 412 413 + Store 408(storeTemp) 414 + 415: 83 Load 85(g_tTex1di2) + 416: 6(int) Load 405(coordTemp) + 417: 7(ivec2) Load 408(storeTemp) + ImageWrite 415 416 417 + 419: 73(ptr) AccessChain 61 51 + 420: 6(int) Load 419 + Store 418(coordTemp) 420 + 422: 91 Load 93(g_tTex1du2) + 423: 6(int) Load 418(coordTemp) + 424: 14(ivec2) ImageRead 422 423 + Store 421(storeTemp) 424 + 425: 14(ivec2) Load 421(storeTemp) + 426: 7(ivec2) CompositeConstruct 62 62 + 427: 14(ivec2) IAdd 425 426 + Store 421(storeTemp) 427 + 428: 91 Load 93(g_tTex1du2) + 429: 6(int) Load 418(coordTemp) + 430: 14(ivec2) Load 421(storeTemp) + ImageWrite 428 429 430 + 432: 73(ptr) AccessChain 61 51 + 433: 6(int) Load 432 + Store 431(coordTemp) 433 + 435: 69 Load 71(g_tTex1df2) + 436: 6(int) Load 431(coordTemp) + 437: 21(fvec2) ImageRead 435 436 + Store 434(storeTemp) 437 + 438: 21(fvec2) Load 434(storeTemp) + 439: 21(fvec2) CompositeConstruct 399 399 + 440: 21(fvec2) FSub 438 439 + Store 434(storeTemp) 440 + 441: 69 Load 71(g_tTex1df2) + 442: 6(int) Load 431(coordTemp) + 443: 21(fvec2) Load 434(storeTemp) + ImageWrite 441 442 443 + 445: 73(ptr) AccessChain 61 51 + 446: 6(int) Load 445 + Store 444(coordTemp) 446 + 448: 83 Load 85(g_tTex1di2) + 449: 6(int) Load 444(coordTemp) + 450: 7(ivec2) ImageRead 448 449 + Store 447(storeTemp) 450 + 451: 7(ivec2) Load 447(storeTemp) + 452: 7(ivec2) CompositeConstruct 62 62 + 453: 7(ivec2) ISub 451 452 + Store 447(storeTemp) 453 + 454: 83 Load 85(g_tTex1di2) + 455: 6(int) Load 444(coordTemp) + 456: 7(ivec2) Load 447(storeTemp) + ImageWrite 454 455 456 + 458: 73(ptr) AccessChain 61 51 + 459: 6(int) Load 458 + Store 457(coordTemp) 459 + 461: 91 Load 93(g_tTex1du2) + 462: 6(int) Load 457(coordTemp) + 463: 14(ivec2) ImageRead 461 462 + Store 460(storeTemp) 463 + 464: 14(ivec2) Load 460(storeTemp) + 465: 7(ivec2) CompositeConstruct 62 62 + 466: 14(ivec2) ISub 464 465 + Store 460(storeTemp) 466 + 467: 91 Load 93(g_tTex1du2) + 468: 6(int) Load 457(coordTemp) + 469: 14(ivec2) Load 460(storeTemp) + ImageWrite 467 468 469 + 471: 73(ptr) AccessChain 61 51 + 472: 6(int) Load 471 + Store 470(coordTemp) 472 + 474: 69 Load 71(g_tTex1df2) + 475: 6(int) Load 470(coordTemp) + 476: 21(fvec2) ImageRead 474 475 + Store 473(storeTempPre) 476 + 478: 21(fvec2) Load 473(storeTempPre) + Store 477(storeTempPost) 478 + 479: 21(fvec2) Load 477(storeTempPost) + 480: 21(fvec2) CompositeConstruct 399 399 + 481: 21(fvec2) FAdd 479 480 + Store 477(storeTempPost) 481 + 482: 69 Load 71(g_tTex1df2) + 483: 6(int) Load 470(coordTemp) + 484: 21(fvec2) Load 477(storeTempPost) + ImageWrite 482 483 484 + 486: 73(ptr) AccessChain 61 51 + 487: 6(int) Load 486 + Store 485(coordTemp) 487 + 489: 91 Load 93(g_tTex1du2) + 490: 6(int) Load 485(coordTemp) + 491: 14(ivec2) ImageRead 489 490 + Store 488(storeTempPre) 491 + 493: 14(ivec2) Load 488(storeTempPre) + Store 492(storeTempPost) 493 + 494: 14(ivec2) Load 492(storeTempPost) + 495: 7(ivec2) CompositeConstruct 62 62 + 496: 14(ivec2) ISub 494 495 + Store 492(storeTempPost) 496 + 497: 91 Load 93(g_tTex1du2) + 498: 6(int) Load 485(coordTemp) + 499: 14(ivec2) Load 492(storeTempPost) + ImageWrite 497 498 499 + 501: 73(ptr) AccessChain 61 51 + 502: 6(int) Load 501 + Store 500(coordTemp) 502 + 504: 83 Load 85(g_tTex1di2) + 505: 6(int) Load 500(coordTemp) + 506: 7(ivec2) ImageRead 504 505 + Store 503(storeTempPre) 506 + 508: 7(ivec2) Load 503(storeTempPre) + Store 507(storeTempPost) 508 + 509: 7(ivec2) Load 507(storeTempPost) + 510: 7(ivec2) CompositeConstruct 62 62 + 511: 7(ivec2) IAdd 509 510 + Store 507(storeTempPost) 511 + 512: 83 Load 85(g_tTex1di2) + 513: 6(int) Load 500(coordTemp) + 514: 7(ivec2) Load 507(storeTempPost) + ImageWrite 512 513 514 + 516: 73(ptr) AccessChain 61 51 + 517: 6(int) Load 516 + Store 515(coordTemp) 517 + 519: 69 Load 71(g_tTex1df2) + 520: 6(int) Load 515(coordTemp) + 521: 21(fvec2) ImageRead 519 520 + Store 518(storeTempPre) 521 + 523: 21(fvec2) Load 518(storeTempPre) + Store 522(storeTempPost) 523 + 524: 21(fvec2) Load 522(storeTempPost) + 525: 21(fvec2) CompositeConstruct 399 399 + 526: 21(fvec2) FSub 524 525 + Store 522(storeTempPost) 526 + 527: 69 Load 71(g_tTex1df2) + 528: 6(int) Load 515(coordTemp) + 529: 21(fvec2) Load 522(storeTempPost) + ImageWrite 527 528 529 + 531: 73(ptr) AccessChain 61 51 + 532: 6(int) Load 531 + Store 530(coordTemp) 532 + 534: 83 Load 85(g_tTex1di2) + 535: 6(int) Load 530(coordTemp) + 536: 7(ivec2) ImageRead 534 535 + Store 533(storeTempPre) 536 + 538: 7(ivec2) Load 533(storeTempPre) + Store 537(storeTempPost) 538 + 539: 7(ivec2) Load 537(storeTempPost) + 540: 7(ivec2) CompositeConstruct 62 62 + 541: 7(ivec2) IAdd 539 540 + Store 537(storeTempPost) 541 + 542: 83 Load 85(g_tTex1di2) + 543: 6(int) Load 530(coordTemp) + 544: 7(ivec2) Load 537(storeTempPost) + ImageWrite 542 543 544 + 546: 73(ptr) AccessChain 61 51 + 547: 6(int) Load 546 + Store 545(coordTemp) 547 + 549: 91 Load 93(g_tTex1du2) + 550: 6(int) Load 545(coordTemp) + 551: 14(ivec2) ImageRead 549 550 + Store 548(storeTempPre) 551 + 553: 14(ivec2) Load 548(storeTempPre) + Store 552(storeTempPost) 553 + 554: 14(ivec2) Load 552(storeTempPost) + 555: 7(ivec2) CompositeConstruct 62 62 + 556: 14(ivec2) ISub 554 555 + Store 552(storeTempPost) 556 + 557: 91 Load 93(g_tTex1du2) + 558: 6(int) Load 545(coordTemp) + 559: 14(ivec2) Load 552(storeTempPost) + ImageWrite 557 558 559 + 561: 99 Load 101(g_tTex2df2) + 564: 21(fvec2) ImageRead 561 563 + Store 560(storeTemp) 564 + 565: 69 Load 71(g_tTex1df2) + 566: 21(fvec2) Load 560(storeTemp) + ImageWrite 565 62 566 + 573: 572(ptr) AccessChain 570(psout) 51 + Store 573 571 + 576: 572(ptr) AccessChain 570(psout) 51 + 577: 567(fvec4) Load 576 + Store 575(Color) 577 + Return + FunctionEnd + 11(Fn1(vi2;): 7(ivec2) Function None 9 + 10(x): 8(ptr) FunctionParameter + 12: Label + 42: 7(ivec2) Load 10(x) + ReturnValue 42 + FunctionEnd + 18(Fn1(vu2;): 14(ivec2) Function None 16 + 17(x): 15(ptr) FunctionParameter + 19: Label + 45: 14(ivec2) Load 17(x) + ReturnValue 45 + FunctionEnd + 25(Fn1(vf2;): 21(fvec2) Function None 23 + 24(x): 22(ptr) FunctionParameter + 26: Label + 48: 21(fvec2) Load 24(x) + ReturnValue 48 + FunctionEnd + 29(Fn2(vi2;): 2 Function None 27 + 28(x): 8(ptr) FunctionParameter + 30: Label + Store 28(x) 52 + Return + FunctionEnd + 33(Fn2(vu2;): 2 Function None 31 + 32(x): 15(ptr) FunctionParameter + 34: Label + Store 32(x) 54 + Return + FunctionEnd + 37(Fn2(vf2;): 2 Function None 35 + 36(x): 22(ptr) FunctionParameter + 38: Label + Store 36(x) 56 + Return + FunctionEnd + 40(SomeValue(): 21(fvec2) Function None 39 + 41: Label + 64: 63(ptr) AccessChain 61 62 + 65: 7(ivec2) Load 64 + 66: 21(fvec2) ConvertSToF 65 + ReturnValue 66 + FunctionEnd diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out new file mode 100644 index 00000000..6c6f187b --- /dev/null +++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out @@ -0,0 +1,514 @@ +hlsl.sample.array.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval10' (temp 4-component vector of float) +0:27 texture (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1DArray) +0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval11' (temp 4-component vector of int) +0:28 texture (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler1DArray) +0:28 'g_tTex1di4' (uniform itexture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval12' (temp 4-component vector of uint) +0:29 texture (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler1DArray) +0:29 'g_tTex1du4' (uniform utexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval20' (temp 4-component vector of float) +0:31 texture (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler2DArray) +0:31 'g_tTex2df4' (uniform texture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval21' (temp 4-component vector of int) +0:32 texture (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler2DArray) +0:32 'g_tTex2di4' (uniform itexture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval22' (temp 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler2DArray) +0:33 'g_tTex2du4' (uniform utexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval40' (temp 4-component vector of float) +0:35 texture (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp samplerCubeArray) +0:35 'g_tTexcdf4' (uniform textureCubeArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval41' (temp 4-component vector of int) +0:36 texture (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isamplerCubeArray) +0:36 'g_tTexcdi4' (uniform itextureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval42' (temp 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usamplerCubeArray) +0:37 'g_tTexcdu4' (uniform utextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +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 Depth}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1.000000 +0:39 1.000000 +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) +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 Sequence +0:42 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +0:? 'g_tTex2df4' (uniform texture2DArray) +0:? 'g_tTex2di4' (uniform itexture2DArray) +0:? 'g_tTex2du4' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval10' (temp 4-component vector of float) +0:27 texture (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1DArray) +0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval11' (temp 4-component vector of int) +0:28 texture (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler1DArray) +0:28 'g_tTex1di4' (uniform itexture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval12' (temp 4-component vector of uint) +0:29 texture (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler1DArray) +0:29 'g_tTex1du4' (uniform utexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval20' (temp 4-component vector of float) +0:31 texture (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler2DArray) +0:31 'g_tTex2df4' (uniform texture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval21' (temp 4-component vector of int) +0:32 texture (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler2DArray) +0:32 'g_tTex2di4' (uniform itexture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval22' (temp 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler2DArray) +0:33 'g_tTex2du4' (uniform utexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval40' (temp 4-component vector of float) +0:35 texture (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp samplerCubeArray) +0:35 'g_tTexcdf4' (uniform textureCubeArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval41' (temp 4-component vector of int) +0:36 texture (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isamplerCubeArray) +0:36 'g_tTexcdi4' (uniform itextureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval42' (temp 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usamplerCubeArray) +0:37 'g_tTexcdu4' (uniform utextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +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 Depth}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1.000000 +0:39 1.000000 +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) +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 Sequence +0:42 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +0:? 'g_tTex2df4' (uniform texture2DArray) +0:? 'g_tTex2di4' (uniform itexture2DArray) +0:? 'g_tTex2du4' (uniform utexture2DArray) +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 139 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 130 134 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 28 "txval11" + Name 31 "g_tTex1di4" + Name 42 "txval12" + Name 45 "g_tTex1du4" + Name 53 "txval20" + Name 56 "g_tTex2df4" + Name 64 "txval21" + Name 67 "g_tTex2di4" + Name 75 "txval22" + Name 78 "g_tTex2du4" + Name 87 "txval40" + Name 90 "g_tTexcdf4" + Name 97 "txval41" + Name 100 "g_tTexcdi4" + Name 107 "txval42" + Name 110 "g_tTexcdu4" + Name 120 "PS_OUTPUT" + MemberName 120(PS_OUTPUT) 0 "Color" + MemberName 120(PS_OUTPUT) 1 "Depth" + Name 122 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 31(g_tTex1di4) DescriptorSet 0 + Decorate 45(g_tTex1du4) DescriptorSet 0 + Decorate 56(g_tTex2df4) DescriptorSet 0 + Decorate 67(g_tTex2di4) DescriptorSet 0 + Decorate 78(g_tTex2du4) DescriptorSet 0 + Decorate 90(g_tTexcdf4) DescriptorSet 0 + Decorate 100(g_tTexcdi4) DescriptorSet 0 + Decorate 110(g_tTexcdu4) DescriptorSet 0 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 25: TypeInt 32 1 + 26: TypeVector 25(int) 4 + 27: TypePointer Function 26(ivec4) + 29: TypeImage 25(int) 1D array sampled format:Unknown + 30: TypePointer UniformConstant 29 + 31(g_tTex1di4): 30(ptr) Variable UniformConstant + 34: TypeSampledImage 29 + 36: 6(float) Constant 1050253722 + 37: 20(fvec2) ConstantComposite 22 36 + 39: TypeInt 32 0 + 40: TypeVector 39(int) 4 + 41: TypePointer Function 40(ivec4) + 43: TypeImage 39(int) 1D array sampled format:Unknown + 44: TypePointer UniformConstant 43 + 45(g_tTex1du4): 44(ptr) Variable UniformConstant + 48: TypeSampledImage 43 + 50: 6(float) Constant 1053609165 + 51: 20(fvec2) ConstantComposite 36 50 + 54: TypeImage 6(float) 2D array sampled format:Unknown + 55: TypePointer UniformConstant 54 + 56(g_tTex2df4): 55(ptr) Variable UniformConstant + 59: TypeSampledImage 54 + 61: TypeVector 6(float) 3 + 62: 61(fvec3) ConstantComposite 21 22 36 + 65: TypeImage 25(int) 2D array sampled format:Unknown + 66: TypePointer UniformConstant 65 + 67(g_tTex2di4): 66(ptr) Variable UniformConstant + 70: TypeSampledImage 65 + 72: 6(float) Constant 1056964608 + 73: 61(fvec3) ConstantComposite 36 50 72 + 76: TypeImage 39(int) 2D array sampled format:Unknown + 77: TypePointer UniformConstant 76 + 78(g_tTex2du4): 77(ptr) Variable UniformConstant + 81: TypeSampledImage 76 + 83: 6(float) Constant 1058642330 + 84: 6(float) Constant 1060320051 + 85: 61(fvec3) ConstantComposite 72 83 84 + 88: TypeImage 6(float) Cube array sampled format:Unknown + 89: TypePointer UniformConstant 88 + 90(g_tTexcdf4): 89(ptr) Variable UniformConstant + 93: TypeSampledImage 88 + 95: 7(fvec4) ConstantComposite 21 22 36 50 + 98: TypeImage 25(int) Cube array sampled format:Unknown + 99: TypePointer UniformConstant 98 + 100(g_tTexcdi4): 99(ptr) Variable UniformConstant + 103: TypeSampledImage 98 + 105: 7(fvec4) ConstantComposite 50 72 83 84 + 108: TypeImage 39(int) Cube array sampled format:Unknown + 109: TypePointer UniformConstant 108 + 110(g_tTexcdu4): 109(ptr) Variable UniformConstant + 113: TypeSampledImage 108 + 115: 6(float) Constant 1061997773 + 116: 6(float) Constant 1063675494 + 117: 6(float) Constant 1065353216 + 118: 7(fvec4) ConstantComposite 84 115 116 117 + 120(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 121: TypePointer Function 120(PS_OUTPUT) + 123: 25(int) Constant 0 + 124: 7(fvec4) ConstantComposite 117 117 117 117 + 126: 25(int) Constant 1 + 127: TypePointer Function 6(float) + 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 + 28(txval11): 27(ptr) Variable Function + 42(txval12): 41(ptr) Variable Function + 53(txval20): 8(ptr) Variable Function + 64(txval21): 27(ptr) Variable Function + 75(txval22): 41(ptr) Variable Function + 87(txval40): 8(ptr) Variable Function + 97(txval41): 27(ptr) Variable Function + 107(txval42): 41(ptr) Variable Function + 122(psout): 121(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 24: 7(fvec4) ImageSampleImplicitLod 19 23 + Store 9(txval10) 24 + 32: 29 Load 31(g_tTex1di4) + 33: 14 Load 16(g_sSamp) + 35: 34 SampledImage 32 33 + 38: 26(ivec4) ImageSampleImplicitLod 35 37 + Store 28(txval11) 38 + 46: 43 Load 45(g_tTex1du4) + 47: 14 Load 16(g_sSamp) + 49: 48 SampledImage 46 47 + 52: 40(ivec4) ImageSampleImplicitLod 49 51 + Store 42(txval12) 52 + 57: 54 Load 56(g_tTex2df4) + 58: 14 Load 16(g_sSamp) + 60: 59 SampledImage 57 58 + 63: 7(fvec4) ImageSampleImplicitLod 60 62 + Store 53(txval20) 63 + 68: 65 Load 67(g_tTex2di4) + 69: 14 Load 16(g_sSamp) + 71: 70 SampledImage 68 69 + 74: 26(ivec4) ImageSampleImplicitLod 71 73 + Store 64(txval21) 74 + 79: 76 Load 78(g_tTex2du4) + 80: 14 Load 16(g_sSamp) + 82: 81 SampledImage 79 80 + 86: 40(ivec4) ImageSampleImplicitLod 82 85 + Store 75(txval22) 86 + 91: 88 Load 90(g_tTexcdf4) + 92: 14 Load 16(g_sSamp) + 94: 93 SampledImage 91 92 + 96: 7(fvec4) ImageSampleImplicitLod 94 95 + Store 87(txval40) 96 + 101: 98 Load 100(g_tTexcdi4) + 102: 14 Load 16(g_sSamp) + 104: 103 SampledImage 101 102 + 106: 26(ivec4) ImageSampleImplicitLod 104 105 + Store 97(txval41) 106 + 111: 108 Load 110(g_tTexcdu4) + 112: 14 Load 16(g_sSamp) + 114: 113 SampledImage 111 112 + 119: 40(ivec4) ImageSampleImplicitLod 114 118 + Store 107(txval42) 119 + 125: 8(ptr) AccessChain 122(psout) 123 + Store 125 124 + 128: 127(ptr) AccessChain 122(psout) 126 + Store 128 117 + 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 new file mode 100644 index 00000000..de9a4f4b --- /dev/null +++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out @@ -0,0 +1,835 @@ +hlsl.sample.basic.dx10.frag +WARNING: 0:4: 'immediate sampler state' : unimplemented + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:53 Function Definition: main( (temp 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) +0:57 CalculateLevelOfDetail: direct index for structure (temp int) +0:57 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:57 Constant: +0:57 1 (const int) +0:57 Constant: +0:57 1 (const int) +0:58 move second child to first child (temp int) +0:58 CalculateLevelOfDetailUnclamped: direct index for structure (temp int) +0:58 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:58 Constant: +0:58 2 (const int) +0:58 Constant: +0:58 1 (const int) +0:59 move second child to first child (temp int) +0:59 Gather: direct index for structure (temp int) +0:59 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:59 Constant: +0:59 3 (const int) +0:59 Constant: +0:59 1 (const int) +0:60 move second child to first child (temp int) +0:60 GetDimensions: direct index for structure (temp int) +0:60 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:60 Constant: +0:60 4 (const int) +0:60 Constant: +0:60 1 (const int) +0:61 move second child to first child (temp int) +0:61 GetSamplePosition: direct index for structure (temp int) +0:61 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:61 Constant: +0:61 5 (const int) +0:61 Constant: +0:61 1 (const int) +0:62 move second child to first child (temp int) +0:62 Load: direct index for structure (temp int) +0:62 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:62 Constant: +0:62 6 (const int) +0:62 Constant: +0:62 1 (const int) +0:63 move second child to first child (temp int) +0:63 Sample: direct index for structure (temp int) +0:63 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1 (const int) +0:64 move second child to first child (temp int) +0:64 SampleBias: direct index for structure (temp int) +0:64 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:64 Constant: +0:64 7 (const int) +0:64 Constant: +0:64 1 (const int) +0:65 move second child to first child (temp int) +0:65 SampleCmp: direct index for structure (temp int) +0:65 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:65 Constant: +0:65 8 (const int) +0:65 Constant: +0:65 1 (const int) +0:66 move second child to first child (temp int) +0:66 SampleCmpLevelZero: direct index for structure (temp int) +0:66 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:66 Constant: +0:66 9 (const int) +0:66 Constant: +0:66 1 (const int) +0:67 move second child to first child (temp int) +0:67 SampleGrad: direct index for structure (temp int) +0:67 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:67 Constant: +0:67 10 (const int) +0:67 Constant: +0:67 1 (const int) +0:68 move second child to first child (temp int) +0:68 SampleLevel: direct index for structure (temp int) +0:68 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:68 Constant: +0:68 11 (const int) +0:68 Constant: +0:68 1 (const int) +0:70 Sequence +0:70 move second child to first child (temp 4-component vector of float) +0:70 'txval10' (temp 4-component vector of float) +0:70 texture (temp 4-component vector of float) +0:70 Construct combined texture-sampler (temp sampler1D) +0:70 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:70 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:70 Constant: +0:70 0.100000 +0:71 Sequence +0:71 move second child to first child (temp 4-component vector of int) +0:71 'txval11' (temp 4-component vector of int) +0:71 texture (temp 4-component vector of int) +0:71 Construct combined texture-sampler (temp isampler1D) +0:71 'g_tTex1di4' (uniform itexture1D) +0:71 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:71 Constant: +0:71 0.200000 +0:72 Sequence +0:72 move second child to first child (temp 4-component vector of uint) +0:72 'txval12' (temp 4-component vector of uint) +0:72 texture (temp 4-component vector of uint) +0:72 Construct combined texture-sampler (temp usampler1D) +0:72 'g_tTex1du4' (uniform utexture1D) +0:72 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:72 Constant: +0:72 0.300000 +0:74 Sequence +0:74 move second child to first child (temp 4-component vector of float) +0:74 'txval20' (temp 4-component vector of float) +0:74 texture (temp 4-component vector of float) +0:74 Construct combined texture-sampler (temp sampler2D) +0:74 'g_tTex2df4' (uniform texture2D) +0:74 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:75 Sequence +0:75 move second child to first child (temp 4-component vector of int) +0:75 'txval21' (temp 4-component vector of int) +0:75 texture (temp 4-component vector of int) +0:75 Construct combined texture-sampler (temp isampler2D) +0:75 'g_tTex2di4' (uniform itexture2D) +0:75 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:76 Sequence +0:76 move second child to first child (temp 4-component vector of uint) +0:76 'txval22' (temp 4-component vector of uint) +0:76 texture (temp 4-component vector of uint) +0:76 Construct combined texture-sampler (temp usampler2D) +0:76 'g_tTex2du4' (uniform utexture2D) +0:76 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:78 Sequence +0:78 move second child to first child (temp 4-component vector of float) +0:78 'txval30' (temp 4-component vector of float) +0:78 texture (temp 4-component vector of float) +0:78 Construct combined texture-sampler (temp sampler3D) +0:78 'g_tTex3df4' (uniform texture3D) +0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:79 Sequence +0:79 move second child to first child (temp 4-component vector of int) +0:79 'txval31' (temp 4-component vector of int) +0:79 texture (temp 4-component vector of int) +0:79 Construct combined texture-sampler (temp isampler3D) +0:79 'g_tTex3di4' (uniform itexture3D) +0:79 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:80 Sequence +0:80 move second child to first child (temp 4-component vector of uint) +0:80 'txval32' (temp 4-component vector of uint) +0:80 texture (temp 4-component vector of uint) +0:80 Construct combined texture-sampler (temp usampler3D) +0:80 'g_tTex3du4' (uniform utexture3D) +0:80 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:82 Sequence +0:82 move second child to first child (temp 4-component vector of float) +0:82 'txval40' (temp 4-component vector of float) +0:82 texture (temp 4-component vector of float) +0:82 Construct combined texture-sampler (temp samplerCube) +0:82 'g_tTexcdf4' (uniform textureCube) +0:82 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:83 Sequence +0:83 move second child to first child (temp 4-component vector of int) +0:83 'txval41' (temp 4-component vector of int) +0:83 texture (temp 4-component vector of int) +0:83 Construct combined texture-sampler (temp isamplerCube) +0:83 'g_tTexcdi4' (uniform itextureCube) +0:83 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:84 Sequence +0:84 move second child to first child (temp 4-component vector of uint) +0:84 'txval42' (temp 4-component vector of uint) +0:84 texture (temp 4-component vector of uint) +0:84 Construct combined texture-sampler (temp usamplerCube) +0:84 'g_tTexcdu4' (uniform utextureCube) +0:84 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +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 Depth}) +0:86 Constant: +0:86 0 (const int) +0:86 Constant: +0:86 1.000000 +0:86 1.000000 +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) +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 Sequence +0:89 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) +0:? 'g_sSamp2D_b' (uniform sampler) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:53 Function Definition: main( (temp 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) +0:57 CalculateLevelOfDetail: direct index for structure (temp int) +0:57 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:57 Constant: +0:57 1 (const int) +0:57 Constant: +0:57 1 (const int) +0:58 move second child to first child (temp int) +0:58 CalculateLevelOfDetailUnclamped: direct index for structure (temp int) +0:58 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:58 Constant: +0:58 2 (const int) +0:58 Constant: +0:58 1 (const int) +0:59 move second child to first child (temp int) +0:59 Gather: direct index for structure (temp int) +0:59 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:59 Constant: +0:59 3 (const int) +0:59 Constant: +0:59 1 (const int) +0:60 move second child to first child (temp int) +0:60 GetDimensions: direct index for structure (temp int) +0:60 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:60 Constant: +0:60 4 (const int) +0:60 Constant: +0:60 1 (const int) +0:61 move second child to first child (temp int) +0:61 GetSamplePosition: direct index for structure (temp int) +0:61 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:61 Constant: +0:61 5 (const int) +0:61 Constant: +0:61 1 (const int) +0:62 move second child to first child (temp int) +0:62 Load: direct index for structure (temp int) +0:62 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:62 Constant: +0:62 6 (const int) +0:62 Constant: +0:62 1 (const int) +0:63 move second child to first child (temp int) +0:63 Sample: direct index for structure (temp int) +0:63 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1 (const int) +0:64 move second child to first child (temp int) +0:64 SampleBias: direct index for structure (temp int) +0:64 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:64 Constant: +0:64 7 (const int) +0:64 Constant: +0:64 1 (const int) +0:65 move second child to first child (temp int) +0:65 SampleCmp: direct index for structure (temp int) +0:65 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:65 Constant: +0:65 8 (const int) +0:65 Constant: +0:65 1 (const int) +0:66 move second child to first child (temp int) +0:66 SampleCmpLevelZero: direct index for structure (temp int) +0:66 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:66 Constant: +0:66 9 (const int) +0:66 Constant: +0:66 1 (const int) +0:67 move second child to first child (temp int) +0:67 SampleGrad: direct index for structure (temp int) +0:67 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:67 Constant: +0:67 10 (const int) +0:67 Constant: +0:67 1 (const int) +0:68 move second child to first child (temp int) +0:68 SampleLevel: direct index for structure (temp int) +0:68 'mtest' (temp structure{temp int Sample, temp int CalculateLevelOfDetail, temp int CalculateLevelOfDetailUnclamped, temp int Gather, temp int GetDimensions, temp int GetSamplePosition, temp int Load, temp int SampleBias, temp int SampleCmp, temp int SampleCmpLevelZero, temp int SampleGrad, temp int SampleLevel}) +0:68 Constant: +0:68 11 (const int) +0:68 Constant: +0:68 1 (const int) +0:70 Sequence +0:70 move second child to first child (temp 4-component vector of float) +0:70 'txval10' (temp 4-component vector of float) +0:70 texture (temp 4-component vector of float) +0:70 Construct combined texture-sampler (temp sampler1D) +0:70 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:70 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:70 Constant: +0:70 0.100000 +0:71 Sequence +0:71 move second child to first child (temp 4-component vector of int) +0:71 'txval11' (temp 4-component vector of int) +0:71 texture (temp 4-component vector of int) +0:71 Construct combined texture-sampler (temp isampler1D) +0:71 'g_tTex1di4' (uniform itexture1D) +0:71 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:71 Constant: +0:71 0.200000 +0:72 Sequence +0:72 move second child to first child (temp 4-component vector of uint) +0:72 'txval12' (temp 4-component vector of uint) +0:72 texture (temp 4-component vector of uint) +0:72 Construct combined texture-sampler (temp usampler1D) +0:72 'g_tTex1du4' (uniform utexture1D) +0:72 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:72 Constant: +0:72 0.300000 +0:74 Sequence +0:74 move second child to first child (temp 4-component vector of float) +0:74 'txval20' (temp 4-component vector of float) +0:74 texture (temp 4-component vector of float) +0:74 Construct combined texture-sampler (temp sampler2D) +0:74 'g_tTex2df4' (uniform texture2D) +0:74 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:75 Sequence +0:75 move second child to first child (temp 4-component vector of int) +0:75 'txval21' (temp 4-component vector of int) +0:75 texture (temp 4-component vector of int) +0:75 Construct combined texture-sampler (temp isampler2D) +0:75 'g_tTex2di4' (uniform itexture2D) +0:75 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:76 Sequence +0:76 move second child to first child (temp 4-component vector of uint) +0:76 'txval22' (temp 4-component vector of uint) +0:76 texture (temp 4-component vector of uint) +0:76 Construct combined texture-sampler (temp usampler2D) +0:76 'g_tTex2du4' (uniform utexture2D) +0:76 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:78 Sequence +0:78 move second child to first child (temp 4-component vector of float) +0:78 'txval30' (temp 4-component vector of float) +0:78 texture (temp 4-component vector of float) +0:78 Construct combined texture-sampler (temp sampler3D) +0:78 'g_tTex3df4' (uniform texture3D) +0:78 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:79 Sequence +0:79 move second child to first child (temp 4-component vector of int) +0:79 'txval31' (temp 4-component vector of int) +0:79 texture (temp 4-component vector of int) +0:79 Construct combined texture-sampler (temp isampler3D) +0:79 'g_tTex3di4' (uniform itexture3D) +0:79 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:80 Sequence +0:80 move second child to first child (temp 4-component vector of uint) +0:80 'txval32' (temp 4-component vector of uint) +0:80 texture (temp 4-component vector of uint) +0:80 Construct combined texture-sampler (temp usampler3D) +0:80 'g_tTex3du4' (uniform utexture3D) +0:80 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:82 Sequence +0:82 move second child to first child (temp 4-component vector of float) +0:82 'txval40' (temp 4-component vector of float) +0:82 texture (temp 4-component vector of float) +0:82 Construct combined texture-sampler (temp samplerCube) +0:82 'g_tTexcdf4' (uniform textureCube) +0:82 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:83 Sequence +0:83 move second child to first child (temp 4-component vector of int) +0:83 'txval41' (temp 4-component vector of int) +0:83 texture (temp 4-component vector of int) +0:83 Construct combined texture-sampler (temp isamplerCube) +0:83 'g_tTexcdi4' (uniform itextureCube) +0:83 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:84 Sequence +0:84 move second child to first child (temp 4-component vector of uint) +0:84 'txval42' (temp 4-component vector of uint) +0:84 texture (temp 4-component vector of uint) +0:84 Construct combined texture-sampler (temp usamplerCube) +0:84 'g_tTexcdu4' (uniform utextureCube) +0:84 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +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 Depth}) +0:86 Constant: +0:86 0 (const int) +0:86 Constant: +0:86 1.000000 +0:86 1.000000 +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) +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 Sequence +0:89 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) +0:? 'g_sSamp2D_b' (uniform sampler) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 191 + + 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 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 + 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 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 + 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 + 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 + 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/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out new file mode 100644 index 00000000..67bf043f --- /dev/null +++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out @@ -0,0 +1,576 @@ +hlsl.sample.offset.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 textureOffset (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 1 (const int) +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 textureOffset (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 1 (const int) +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 textureOffset (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 1 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 textureOffset (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 textureOffset (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 textureOffset (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1 (const int) +0:? -1 (const int) +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 textureOffset (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:? 1 (const int) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 textureOffset (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:? 1 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 textureOffset (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +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 Depth}) +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1.000000 +0:45 1.000000 +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) +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 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 textureOffset (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 1 (const int) +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 textureOffset (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 1 (const int) +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 textureOffset (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 1 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 textureOffset (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 textureOffset (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 textureOffset (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1 (const int) +0:? -1 (const int) +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 textureOffset (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:? 1 (const int) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 textureOffset (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:? 1 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 textureOffset (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +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 Depth}) +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1.000000 +0:45 1.000000 +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) +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 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 154 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 136 140 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 26 "txval11" + Name 29 "g_tTex1di4" + Name 39 "txval12" + Name 42 "g_tTex1du4" + Name 49 "txval20" + Name 52 "g_tTex2df4" + Name 63 "txval21" + Name 66 "g_tTex2di4" + Name 75 "txval22" + Name 78 "g_tTex2du4" + Name 89 "txval30" + Name 92 "g_tTex3df4" + Name 102 "txval31" + Name 105 "g_tTex3di4" + Name 113 "txval32" + Name 116 "g_tTex3du4" + Name 127 "PS_OUTPUT" + MemberName 127(PS_OUTPUT) 0 "Color" + MemberName 127(PS_OUTPUT) 1 "Depth" + Name 129 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 29(g_tTex1di4) DescriptorSet 0 + Decorate 42(g_tTex1du4) DescriptorSet 0 + Decorate 52(g_tTex2df4) DescriptorSet 0 + Decorate 66(g_tTex2di4) DescriptorSet 0 + Decorate 78(g_tTex2du4) DescriptorSet 0 + Decorate 92(g_tTex3df4) DescriptorSet 0 + Decorate 105(g_tTex3di4) DescriptorSet 0 + Decorate 116(g_tTex3du4) 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: 6(float) Constant 1036831949 + 21: TypeInt 32 1 + 22: 21(int) Constant 1 + 24: TypeVector 21(int) 4 + 25: TypePointer Function 24(ivec4) + 27: TypeImage 21(int) 1D sampled format:Unknown + 28: TypePointer UniformConstant 27 + 29(g_tTex1di4): 28(ptr) Variable UniformConstant + 32: TypeSampledImage 27 + 34: 6(float) Constant 1045220557 + 36: TypeInt 32 0 + 37: TypeVector 36(int) 4 + 38: TypePointer Function 37(ivec4) + 40: TypeImage 36(int) 1D sampled format:Unknown + 41: TypePointer UniformConstant 40 + 42(g_tTex1du4): 41(ptr) Variable UniformConstant + 45: TypeSampledImage 40 + 47: 6(float) Constant 1050253722 + 50: TypeImage 6(float) 2D sampled format:Unknown + 51: TypePointer UniformConstant 50 + 52(g_tTex2df4): 51(ptr) Variable UniformConstant + 55: TypeSampledImage 50 + 57: TypeVector 6(float) 2 + 58: 57(fvec2) ConstantComposite 20 34 + 59: TypeVector 21(int) 2 + 60: 21(int) Constant 0 + 61: 59(ivec2) ConstantComposite 22 60 + 64: TypeImage 21(int) 2D sampled format:Unknown + 65: TypePointer UniformConstant 64 + 66(g_tTex2di4): 65(ptr) Variable UniformConstant + 69: TypeSampledImage 64 + 71: 6(float) Constant 1053609165 + 72: 57(fvec2) ConstantComposite 47 71 + 73: 59(ivec2) ConstantComposite 22 22 + 76: TypeImage 36(int) 2D sampled format:Unknown + 77: TypePointer UniformConstant 76 + 78(g_tTex2du4): 77(ptr) Variable UniformConstant + 81: TypeSampledImage 76 + 83: 6(float) Constant 1056964608 + 84: 6(float) Constant 1058642330 + 85: 57(fvec2) ConstantComposite 83 84 + 86: 21(int) Constant 4294967295 + 87: 59(ivec2) ConstantComposite 22 86 + 90: TypeImage 6(float) 3D sampled format:Unknown + 91: TypePointer UniformConstant 90 + 92(g_tTex3df4): 91(ptr) Variable UniformConstant + 95: TypeSampledImage 90 + 97: TypeVector 6(float) 3 + 98: 97(fvec3) ConstantComposite 20 34 47 + 99: TypeVector 21(int) 3 + 100: 99(ivec3) ConstantComposite 22 60 22 + 103: TypeImage 21(int) 3D sampled format:Unknown + 104: TypePointer UniformConstant 103 + 105(g_tTex3di4): 104(ptr) Variable UniformConstant + 108: TypeSampledImage 103 + 110: 97(fvec3) ConstantComposite 71 83 84 + 111: 99(ivec3) ConstantComposite 22 22 22 + 114: TypeImage 36(int) 3D sampled format:Unknown + 115: TypePointer UniformConstant 114 + 116(g_tTex3du4): 115(ptr) Variable UniformConstant + 119: TypeSampledImage 114 + 121: 6(float) Constant 1060320051 + 122: 6(float) Constant 1061997773 + 123: 6(float) Constant 1063675494 + 124: 97(fvec3) ConstantComposite 121 122 123 + 125: 99(ivec3) ConstantComposite 22 60 86 + 127(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 128: TypePointer Function 127(PS_OUTPUT) + 130: 6(float) Constant 1065353216 + 131: 7(fvec4) ConstantComposite 130 130 130 130 + 133: TypePointer Function 6(float) + 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 + 26(txval11): 25(ptr) Variable Function + 39(txval12): 38(ptr) Variable Function + 49(txval20): 8(ptr) Variable Function + 63(txval21): 25(ptr) Variable Function + 75(txval22): 38(ptr) Variable Function + 89(txval30): 8(ptr) Variable Function + 102(txval31): 25(ptr) Variable Function + 113(txval32): 38(ptr) Variable Function + 129(psout): 128(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 23: 7(fvec4) ImageSampleImplicitLod 19 20 ConstOffset 22 + Store 9(txval10) 23 + 30: 27 Load 29(g_tTex1di4) + 31: 14 Load 16(g_sSamp) + 33: 32 SampledImage 30 31 + 35: 24(ivec4) ImageSampleImplicitLod 33 34 ConstOffset 22 + Store 26(txval11) 35 + 43: 40 Load 42(g_tTex1du4) + 44: 14 Load 16(g_sSamp) + 46: 45 SampledImage 43 44 + 48: 37(ivec4) ImageSampleImplicitLod 46 47 ConstOffset 22 + Store 39(txval12) 48 + 53: 50 Load 52(g_tTex2df4) + 54: 14 Load 16(g_sSamp) + 56: 55 SampledImage 53 54 + 62: 7(fvec4) ImageSampleImplicitLod 56 58 ConstOffset 61 + Store 49(txval20) 62 + 67: 64 Load 66(g_tTex2di4) + 68: 14 Load 16(g_sSamp) + 70: 69 SampledImage 67 68 + 74: 24(ivec4) ImageSampleImplicitLod 70 72 ConstOffset 73 + Store 63(txval21) 74 + 79: 76 Load 78(g_tTex2du4) + 80: 14 Load 16(g_sSamp) + 82: 81 SampledImage 79 80 + 88: 37(ivec4) ImageSampleImplicitLod 82 85 ConstOffset 87 + Store 75(txval22) 88 + 93: 90 Load 92(g_tTex3df4) + 94: 14 Load 16(g_sSamp) + 96: 95 SampledImage 93 94 + 101: 7(fvec4) ImageSampleImplicitLod 96 98 ConstOffset 100 + Store 89(txval30) 101 + 106: 103 Load 105(g_tTex3di4) + 107: 14 Load 16(g_sSamp) + 109: 108 SampledImage 106 107 + 112: 24(ivec4) ImageSampleImplicitLod 109 110 ConstOffset 111 + Store 102(txval31) 112 + 117: 114 Load 116(g_tTex3du4) + 118: 14 Load 16(g_sSamp) + 120: 119 SampledImage 117 118 + 126: 37(ivec4) ImageSampleImplicitLod 120 124 ConstOffset 125 + Store 113(txval32) 126 + 132: 8(ptr) AccessChain 129(psout) 60 + Store 132 131 + 134: 133(ptr) AccessChain 129(psout) 22 + Store 134 130 + 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 new file mode 100644 index 00000000..83a0e8b7 --- /dev/null +++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out @@ -0,0 +1,425 @@ +hlsl.sample.offsetarray.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Parameters: +0:? Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:23 'txval10' (temp 4-component vector of float) +0:23 textureOffset (temp 4-component vector of float) +0:23 Construct combined texture-sampler (temp sampler1DArray) +0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:23 Constant: +0:23 0 (const int) +0:24 Sequence +0:24 move second child to first child (temp 4-component vector of int) +0:24 'txval11' (temp 4-component vector of int) +0:24 textureOffset (temp 4-component vector of int) +0:24 Construct combined texture-sampler (temp isampler1DArray) +0:24 'g_tTex1di4' (uniform itexture1DArray) +0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:24 Constant: +0:24 1 (const int) +0:25 Sequence +0:25 move second child to first child (temp 4-component vector of uint) +0:25 'txval12' (temp 4-component vector of uint) +0:25 textureOffset (temp 4-component vector of uint) +0:25 Construct combined texture-sampler (temp usampler1DArray) +0:25 'g_tTex1du4' (uniform utexture1DArray) +0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:25 Constant: +0:25 2 (const int) +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval20' (temp 4-component vector of float) +0:27 textureOffset (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler2DArray) +0:27 'g_tTex2df4' (uniform texture2DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval21' (temp 4-component vector of int) +0:28 textureOffset (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler2DArray) +0:28 'g_tTex2di4' (uniform itexture2DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval22' (temp 4-component vector of uint) +0:29 textureOffset (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler2DArray) +0:29 'g_tTex2du4' (uniform utexture2DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:? Constant: +0:? 0 (const int) +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 Depth}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 1.000000 +0:33 1.000000 +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) +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 Sequence +0:36 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Parameters: +0:? Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:23 'txval10' (temp 4-component vector of float) +0:23 textureOffset (temp 4-component vector of float) +0:23 Construct combined texture-sampler (temp sampler1DArray) +0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:23 Constant: +0:23 0 (const int) +0:24 Sequence +0:24 move second child to first child (temp 4-component vector of int) +0:24 'txval11' (temp 4-component vector of int) +0:24 textureOffset (temp 4-component vector of int) +0:24 Construct combined texture-sampler (temp isampler1DArray) +0:24 'g_tTex1di4' (uniform itexture1DArray) +0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:24 Constant: +0:24 1 (const int) +0:25 Sequence +0:25 move second child to first child (temp 4-component vector of uint) +0:25 'txval12' (temp 4-component vector of uint) +0:25 textureOffset (temp 4-component vector of uint) +0:25 Construct combined texture-sampler (temp usampler1DArray) +0:25 'g_tTex1du4' (uniform utexture1DArray) +0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:25 Constant: +0:25 2 (const int) +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval20' (temp 4-component vector of float) +0:27 textureOffset (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler2DArray) +0:27 'g_tTex2df4' (uniform texture2DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval21' (temp 4-component vector of int) +0:28 textureOffset (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler2DArray) +0:28 'g_tTex2di4' (uniform itexture2DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval22' (temp 4-component vector of uint) +0:29 textureOffset (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler2DArray) +0:29 'g_tTex2du4' (uniform utexture2DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:? Constant: +0:? 0 (const int) +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 Depth}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 1.000000 +0:33 1.000000 +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) +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 Sequence +0:36 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +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 111 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 102 106 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 29 "txval11" + Name 32 "g_tTex1di4" + Name 44 "txval12" + Name 47 "g_tTex1du4" + Name 56 "txval20" + Name 59 "g_tTex2df4" + Name 69 "txval21" + Name 72 "g_tTex2di4" + Name 80 "txval22" + Name 83 "g_tTex2du4" + Name 93 "PS_OUTPUT" + MemberName 93(PS_OUTPUT) 0 "Color" + MemberName 93(PS_OUTPUT) 1 "Depth" + Name 95 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 32(g_tTex1di4) DescriptorSet 0 + Decorate 47(g_tTex1du4) DescriptorSet 0 + Decorate 59(g_tTex2df4) DescriptorSet 0 + Decorate 72(g_tTex2di4) DescriptorSet 0 + Decorate 83(g_tTex2du4) DescriptorSet 0 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: TypeInt 32 1 + 25: 24(int) Constant 0 + 27: TypeVector 24(int) 4 + 28: TypePointer Function 27(ivec4) + 30: TypeImage 24(int) 1D array sampled format:Unknown + 31: TypePointer UniformConstant 30 + 32(g_tTex1di4): 31(ptr) Variable UniformConstant + 35: TypeSampledImage 30 + 37: 6(float) Constant 1050253722 + 38: 20(fvec2) ConstantComposite 22 37 + 39: 24(int) Constant 1 + 41: TypeInt 32 0 + 42: TypeVector 41(int) 4 + 43: TypePointer Function 42(ivec4) + 45: TypeImage 41(int) 1D array sampled format:Unknown + 46: TypePointer UniformConstant 45 + 47(g_tTex1du4): 46(ptr) Variable UniformConstant + 50: TypeSampledImage 45 + 52: 6(float) Constant 1053609165 + 53: 20(fvec2) ConstantComposite 37 52 + 54: 24(int) Constant 2 + 57: TypeImage 6(float) 2D array sampled format:Unknown + 58: TypePointer UniformConstant 57 + 59(g_tTex2df4): 58(ptr) Variable UniformConstant + 62: TypeSampledImage 57 + 64: TypeVector 6(float) 3 + 65: 64(fvec3) ConstantComposite 21 22 37 + 66: TypeVector 24(int) 2 + 67: 66(ivec2) ConstantComposite 25 25 + 70: TypeImage 24(int) 2D array sampled format:Unknown + 71: TypePointer UniformConstant 70 + 72(g_tTex2di4): 71(ptr) Variable UniformConstant + 75: TypeSampledImage 70 + 77: 6(float) Constant 1056964608 + 78: 64(fvec3) ConstantComposite 37 52 77 + 81: TypeImage 41(int) 2D array sampled format:Unknown + 82: TypePointer UniformConstant 81 + 83(g_tTex2du4): 82(ptr) Variable UniformConstant + 86: TypeSampledImage 81 + 88: 6(float) Constant 1058642330 + 89: 6(float) Constant 1060320051 + 90: 64(fvec3) ConstantComposite 77 88 89 + 91: 66(ivec2) ConstantComposite 25 39 + 93(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 94: TypePointer Function 93(PS_OUTPUT) + 96: 6(float) Constant 1065353216 + 97: 7(fvec4) ConstantComposite 96 96 96 96 + 99: TypePointer Function 6(float) + 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 + 29(txval11): 28(ptr) Variable Function + 44(txval12): 43(ptr) Variable Function + 56(txval20): 8(ptr) Variable Function + 69(txval21): 28(ptr) Variable Function + 80(txval22): 43(ptr) Variable Function + 95(psout): 94(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 26: 7(fvec4) ImageSampleImplicitLod 19 23 ConstOffset 25 + Store 9(txval10) 26 + 33: 30 Load 32(g_tTex1di4) + 34: 14 Load 16(g_sSamp) + 36: 35 SampledImage 33 34 + 40: 27(ivec4) ImageSampleImplicitLod 36 38 ConstOffset 39 + Store 29(txval11) 40 + 48: 45 Load 47(g_tTex1du4) + 49: 14 Load 16(g_sSamp) + 51: 50 SampledImage 48 49 + 55: 42(ivec4) ImageSampleImplicitLod 51 53 ConstOffset 54 + Store 44(txval12) 55 + 60: 57 Load 59(g_tTex2df4) + 61: 14 Load 16(g_sSamp) + 63: 62 SampledImage 60 61 + 68: 7(fvec4) ImageSampleImplicitLod 63 65 ConstOffset 67 + Store 56(txval20) 68 + 73: 70 Load 72(g_tTex2di4) + 74: 14 Load 16(g_sSamp) + 76: 75 SampledImage 73 74 + 79: 27(ivec4) ImageSampleImplicitLod 76 78 ConstOffset 67 + Store 69(txval21) 79 + 84: 81 Load 83(g_tTex2du4) + 85: 14 Load 16(g_sSamp) + 87: 86 SampledImage 84 85 + 92: 42(ivec4) ImageSampleImplicitLod 87 90 ConstOffset 91 + Store 80(txval22) 92 + 98: 8(ptr) AccessChain 95(psout) 25 + Store 98 97 + 100: 99(ptr) AccessChain 95(psout) 39 + Store 100 96 + 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.sample.sub-vec4.dx10.frag.out b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out new file mode 100644 index 00000000..5a97ed96 --- /dev/null +++ b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out @@ -0,0 +1,252 @@ +hlsl.sample.sub-vec4.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:14 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:14 Function Parameters: +0:? Sequence +0:17 Sequence +0:17 move second child to first child (temp float) +0:17 'txval10' (temp float) +0:17 Construct float (temp float) +0:? texture (temp 4-component vector of float) +0:17 Construct combined texture-sampler (temp sampler1D) +0:17 'g_tTex1df1' (uniform texture1D) +0:17 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:17 Constant: +0:17 0.100000 +0:18 Sequence +0:18 move second child to first child (temp 2-component vector of float) +0:18 'txval11' (temp 2-component vector of float) +0:18 Construct vec2 (temp 2-component vector of float) +0:? texture (temp 4-component vector of float) +0:18 Construct combined texture-sampler (temp sampler1D) +0:18 'g_tTex1df2' (uniform texture1D) +0:18 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:18 Constant: +0:18 0.200000 +0:19 Sequence +0:19 move second child to first child (temp 3-component vector of float) +0:19 'txval12' (temp 3-component vector of float) +0:19 Construct vec3 (temp 3-component vector of float) +0:? texture (temp 4-component vector of float) +0:19 Construct combined texture-sampler (temp sampler1D) +0:19 'g_tTex1df3' (uniform texture1D) +0:19 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:19 Constant: +0:19 0.200000 +0:20 Sequence +0:20 move second child to first child (temp 4-component vector of float) +0:20 'txval13' (temp 4-component vector of float) +0:20 texture (temp 4-component vector of float) +0:20 Construct combined texture-sampler (temp sampler1D) +0:20 'g_tTex1df4' (uniform texture1D) +0:20 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:20 Constant: +0:20 0.200000 +0:22 move second child to first child (temp 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}) +0:22 Constant: +0:22 0 (const int) +0:22 Constant: +0:22 1.000000 +0:22 1.000000 +0:22 1.000000 +0:22 1.000000 +0:23 Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:23 Color: direct index for structure (temp 4-component vector of float) +0:23 'psout' (temp structure{temp 4-component vector of float Color}) +0:23 Constant: +0:23 0 (const int) +0:23 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df1' (uniform texture1D) +0:? 'g_tTex1df2' (uniform texture1D) +0:? 'g_tTex1df3' (uniform texture1D) +0:? 'g_tTex1df4' (uniform texture1D) +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:14 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:14 Function Parameters: +0:? Sequence +0:17 Sequence +0:17 move second child to first child (temp float) +0:17 'txval10' (temp float) +0:17 Construct float (temp float) +0:? texture (temp 4-component vector of float) +0:17 Construct combined texture-sampler (temp sampler1D) +0:17 'g_tTex1df1' (uniform texture1D) +0:17 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:17 Constant: +0:17 0.100000 +0:18 Sequence +0:18 move second child to first child (temp 2-component vector of float) +0:18 'txval11' (temp 2-component vector of float) +0:18 Construct vec2 (temp 2-component vector of float) +0:? texture (temp 4-component vector of float) +0:18 Construct combined texture-sampler (temp sampler1D) +0:18 'g_tTex1df2' (uniform texture1D) +0:18 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:18 Constant: +0:18 0.200000 +0:19 Sequence +0:19 move second child to first child (temp 3-component vector of float) +0:19 'txval12' (temp 3-component vector of float) +0:19 Construct vec3 (temp 3-component vector of float) +0:? texture (temp 4-component vector of float) +0:19 Construct combined texture-sampler (temp sampler1D) +0:19 'g_tTex1df3' (uniform texture1D) +0:19 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:19 Constant: +0:19 0.200000 +0:20 Sequence +0:20 move second child to first child (temp 4-component vector of float) +0:20 'txval13' (temp 4-component vector of float) +0:20 texture (temp 4-component vector of float) +0:20 Construct combined texture-sampler (temp sampler1D) +0:20 'g_tTex1df4' (uniform texture1D) +0:20 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:20 Constant: +0:20 0.200000 +0:22 move second child to first child (temp 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}) +0:22 Constant: +0:22 0 (const int) +0:22 Constant: +0:22 1.000000 +0:22 1.000000 +0:22 1.000000 +0:22 1.000000 +0:23 Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:23 Color: direct index for structure (temp 4-component vector of float) +0:23 'psout' (temp structure{temp 4-component vector of float Color}) +0:23 Constant: +0:23 0 (const int) +0:23 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df1' (uniform texture1D) +0:? 'g_tTex1df2' (uniform texture1D) +0:? 'g_tTex1df3' (uniform texture1D) +0:? 'g_tTex1df4' (uniform texture1D) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 67 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 63 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "txval10" + Name 11 "g_tTex1df1" + Name 15 "g_sSamp" + Name 25 "txval11" + Name 26 "g_tTex1df2" + Name 37 "txval12" + Name 38 "g_tTex1df3" + Name 48 "txval13" + Name 49 "g_tTex1df4" + Name 54 "PS_OUTPUT" + MemberName 54(PS_OUTPUT) 0 "Color" + Name 56 "psout" + Name 63 "Color" + Decorate 11(g_tTex1df1) DescriptorSet 0 + Decorate 15(g_sSamp) DescriptorSet 0 + Decorate 15(g_sSamp) Binding 0 + Decorate 26(g_tTex1df2) DescriptorSet 0 + Decorate 38(g_tTex1df3) DescriptorSet 0 + Decorate 49(g_tTex1df4) DescriptorSet 0 + Decorate 63(Color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D sampled format:Unknown + 10: TypePointer UniformConstant 9 + 11(g_tTex1df1): 10(ptr) Variable UniformConstant + 13: TypeSampler + 14: TypePointer UniformConstant 13 + 15(g_sSamp): 14(ptr) Variable UniformConstant + 17: TypeSampledImage 9 + 19: 6(float) Constant 1036831949 + 20: TypeVector 6(float) 4 + 23: TypeVector 6(float) 2 + 24: TypePointer Function 23(fvec2) + 26(g_tTex1df2): 10(ptr) Variable UniformConstant + 30: 6(float) Constant 1045220557 + 35: TypeVector 6(float) 3 + 36: TypePointer Function 35(fvec3) + 38(g_tTex1df3): 10(ptr) Variable UniformConstant + 47: TypePointer Function 20(fvec4) + 49(g_tTex1df4): 10(ptr) Variable UniformConstant + 54(PS_OUTPUT): TypeStruct 20(fvec4) + 55: TypePointer Function 54(PS_OUTPUT) + 57: TypeInt 32 1 + 58: 57(int) Constant 0 + 59: 6(float) Constant 1065353216 + 60: 20(fvec4) ConstantComposite 59 59 59 59 + 62: TypePointer Output 20(fvec4) + 63(Color): 62(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 8(txval10): 7(ptr) Variable Function + 25(txval11): 24(ptr) Variable Function + 37(txval12): 36(ptr) Variable Function + 48(txval13): 47(ptr) Variable Function + 56(psout): 55(ptr) Variable Function + 12: 9 Load 11(g_tTex1df1) + 16: 13 Load 15(g_sSamp) + 18: 17 SampledImage 12 16 + 21: 20(fvec4) ImageSampleImplicitLod 18 19 + 22: 6(float) CompositeExtract 21 0 + Store 8(txval10) 22 + 27: 9 Load 26(g_tTex1df2) + 28: 13 Load 15(g_sSamp) + 29: 17 SampledImage 27 28 + 31: 20(fvec4) ImageSampleImplicitLod 29 30 + 32: 6(float) CompositeExtract 31 0 + 33: 6(float) CompositeExtract 31 1 + 34: 23(fvec2) CompositeConstruct 32 33 + Store 25(txval11) 34 + 39: 9 Load 38(g_tTex1df3) + 40: 13 Load 15(g_sSamp) + 41: 17 SampledImage 39 40 + 42: 20(fvec4) ImageSampleImplicitLod 41 30 + 43: 6(float) CompositeExtract 42 0 + 44: 6(float) CompositeExtract 42 1 + 45: 6(float) CompositeExtract 42 2 + 46: 35(fvec3) CompositeConstruct 43 44 45 + Store 37(txval12) 46 + 50: 9 Load 49(g_tTex1df4) + 51: 13 Load 15(g_sSamp) + 52: 17 SampledImage 50 51 + 53: 20(fvec4) ImageSampleImplicitLod 52 30 + Store 48(txval13) 53 + 61: 47(ptr) AccessChain 56(psout) 58 + Store 61 60 + 64: 47(ptr) AccessChain 56(psout) 58 + 65: 20(fvec4) Load 64 + Store 63(Color) 65 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out new file mode 100644 index 00000000..b2b38b65 --- /dev/null +++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out @@ -0,0 +1,550 @@ +hlsl.samplebias.array.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval10' (temp 4-component vector of float) +0:27 texture (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1DArray) +0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:27 Constant: +0:27 0.500000 +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval11' (temp 4-component vector of int) +0:28 texture (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler1DArray) +0:28 'g_tTex1di4' (uniform itexture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:28 Constant: +0:28 0.500000 +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval12' (temp 4-component vector of uint) +0:29 texture (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler1DArray) +0:29 'g_tTex1du4' (uniform utexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:29 Constant: +0:29 0.500000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval20' (temp 4-component vector of float) +0:31 texture (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler2DArray) +0:31 'g_tTex2df4' (uniform texture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:31 Constant: +0:31 0.500000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval21' (temp 4-component vector of int) +0:32 texture (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler2DArray) +0:32 'g_tTex2di4' (uniform itexture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:32 Constant: +0:32 0.500000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval22' (temp 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler2DArray) +0:33 'g_tTex2du4' (uniform utexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:33 Constant: +0:33 0.500000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval40' (temp 4-component vector of float) +0:35 texture (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp samplerCubeArray) +0:35 'g_tTexcdf4' (uniform textureCubeArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:35 Constant: +0:35 0.500000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval41' (temp 4-component vector of int) +0:36 texture (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isamplerCubeArray) +0:36 'g_tTexcdi4' (uniform itextureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:36 Constant: +0:36 0.500000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval42' (temp 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usamplerCubeArray) +0:37 'g_tTexcdu4' (uniform utextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? 1.000000 +0:37 Constant: +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 Depth}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1.000000 +0:39 1.000000 +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) +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 Sequence +0:42 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +0:? 'g_tTex2df4' (uniform texture2DArray) +0:? 'g_tTex2di4' (uniform itexture2DArray) +0:? 'g_tTex2du4' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval10' (temp 4-component vector of float) +0:27 texture (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1DArray) +0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:27 Constant: +0:27 0.500000 +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval11' (temp 4-component vector of int) +0:28 texture (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler1DArray) +0:28 'g_tTex1di4' (uniform itexture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:28 Constant: +0:28 0.500000 +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval12' (temp 4-component vector of uint) +0:29 texture (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler1DArray) +0:29 'g_tTex1du4' (uniform utexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:29 Constant: +0:29 0.500000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval20' (temp 4-component vector of float) +0:31 texture (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler2DArray) +0:31 'g_tTex2df4' (uniform texture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:31 Constant: +0:31 0.500000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval21' (temp 4-component vector of int) +0:32 texture (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler2DArray) +0:32 'g_tTex2di4' (uniform itexture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:32 Constant: +0:32 0.500000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval22' (temp 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler2DArray) +0:33 'g_tTex2du4' (uniform utexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:33 Constant: +0:33 0.500000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval40' (temp 4-component vector of float) +0:35 texture (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp samplerCubeArray) +0:35 'g_tTexcdf4' (uniform textureCubeArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:35 Constant: +0:35 0.500000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval41' (temp 4-component vector of int) +0:36 texture (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isamplerCubeArray) +0:36 'g_tTexcdi4' (uniform itextureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:36 Constant: +0:36 0.500000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval42' (temp 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usamplerCubeArray) +0:37 'g_tTexcdu4' (uniform utextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? 1.000000 +0:37 Constant: +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 Depth}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1.000000 +0:39 1.000000 +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) +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 Sequence +0:42 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +0:? 'g_tTex2df4' (uniform texture2DArray) +0:? 'g_tTex2di4' (uniform itexture2DArray) +0:? 'g_tTex2du4' (uniform utexture2DArray) +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 139 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 130 134 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 29 "txval11" + Name 32 "g_tTex1di4" + Name 43 "txval12" + Name 46 "g_tTex1du4" + Name 54 "txval20" + Name 57 "g_tTex2df4" + Name 65 "txval21" + Name 68 "g_tTex2di4" + Name 75 "txval22" + Name 78 "g_tTex2du4" + Name 87 "txval40" + Name 90 "g_tTexcdf4" + Name 97 "txval41" + Name 100 "g_tTexcdi4" + Name 107 "txval42" + Name 110 "g_tTexcdu4" + Name 120 "PS_OUTPUT" + MemberName 120(PS_OUTPUT) 0 "Color" + MemberName 120(PS_OUTPUT) 1 "Depth" + Name 122 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 32(g_tTex1di4) DescriptorSet 0 + Decorate 46(g_tTex1du4) DescriptorSet 0 + Decorate 57(g_tTex2df4) DescriptorSet 0 + Decorate 68(g_tTex2di4) DescriptorSet 0 + Decorate 78(g_tTex2du4) DescriptorSet 0 + Decorate 90(g_tTexcdf4) DescriptorSet 0 + Decorate 100(g_tTexcdi4) DescriptorSet 0 + Decorate 110(g_tTexcdu4) DescriptorSet 0 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: 6(float) Constant 1056964608 + 26: TypeInt 32 1 + 27: TypeVector 26(int) 4 + 28: TypePointer Function 27(ivec4) + 30: TypeImage 26(int) 1D array sampled format:Unknown + 31: TypePointer UniformConstant 30 + 32(g_tTex1di4): 31(ptr) Variable UniformConstant + 35: TypeSampledImage 30 + 37: 6(float) Constant 1050253722 + 38: 20(fvec2) ConstantComposite 22 37 + 40: TypeInt 32 0 + 41: TypeVector 40(int) 4 + 42: TypePointer Function 41(ivec4) + 44: TypeImage 40(int) 1D array sampled format:Unknown + 45: TypePointer UniformConstant 44 + 46(g_tTex1du4): 45(ptr) Variable UniformConstant + 49: TypeSampledImage 44 + 51: 6(float) Constant 1053609165 + 52: 20(fvec2) ConstantComposite 37 51 + 55: TypeImage 6(float) 2D array sampled format:Unknown + 56: TypePointer UniformConstant 55 + 57(g_tTex2df4): 56(ptr) Variable UniformConstant + 60: TypeSampledImage 55 + 62: TypeVector 6(float) 3 + 63: 62(fvec3) ConstantComposite 21 22 37 + 66: TypeImage 26(int) 2D array sampled format:Unknown + 67: TypePointer UniformConstant 66 + 68(g_tTex2di4): 67(ptr) Variable UniformConstant + 71: TypeSampledImage 66 + 73: 62(fvec3) ConstantComposite 37 51 24 + 76: TypeImage 40(int) 2D array sampled format:Unknown + 77: TypePointer UniformConstant 76 + 78(g_tTex2du4): 77(ptr) Variable UniformConstant + 81: TypeSampledImage 76 + 83: 6(float) Constant 1058642330 + 84: 6(float) Constant 1060320051 + 85: 62(fvec3) ConstantComposite 24 83 84 + 88: TypeImage 6(float) Cube array sampled format:Unknown + 89: TypePointer UniformConstant 88 + 90(g_tTexcdf4): 89(ptr) Variable UniformConstant + 93: TypeSampledImage 88 + 95: 7(fvec4) ConstantComposite 21 22 37 51 + 98: TypeImage 26(int) Cube array sampled format:Unknown + 99: TypePointer UniformConstant 98 + 100(g_tTexcdi4): 99(ptr) Variable UniformConstant + 103: TypeSampledImage 98 + 105: 7(fvec4) ConstantComposite 51 24 83 84 + 108: TypeImage 40(int) Cube array sampled format:Unknown + 109: TypePointer UniformConstant 108 + 110(g_tTexcdu4): 109(ptr) Variable UniformConstant + 113: TypeSampledImage 108 + 115: 6(float) Constant 1061997773 + 116: 6(float) Constant 1063675494 + 117: 6(float) Constant 1065353216 + 118: 7(fvec4) ConstantComposite 84 115 116 117 + 120(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 121: TypePointer Function 120(PS_OUTPUT) + 123: 26(int) Constant 0 + 124: 7(fvec4) ConstantComposite 117 117 117 117 + 126: 26(int) Constant 1 + 127: TypePointer Function 6(float) + 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 + 29(txval11): 28(ptr) Variable Function + 43(txval12): 42(ptr) Variable Function + 54(txval20): 8(ptr) Variable Function + 65(txval21): 28(ptr) Variable Function + 75(txval22): 42(ptr) Variable Function + 87(txval40): 8(ptr) Variable Function + 97(txval41): 28(ptr) Variable Function + 107(txval42): 42(ptr) Variable Function + 122(psout): 121(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 25: 7(fvec4) ImageSampleImplicitLod 19 23 Bias 24 + Store 9(txval10) 25 + 33: 30 Load 32(g_tTex1di4) + 34: 14 Load 16(g_sSamp) + 36: 35 SampledImage 33 34 + 39: 27(ivec4) ImageSampleImplicitLod 36 38 Bias 24 + Store 29(txval11) 39 + 47: 44 Load 46(g_tTex1du4) + 48: 14 Load 16(g_sSamp) + 50: 49 SampledImage 47 48 + 53: 41(ivec4) ImageSampleImplicitLod 50 52 Bias 24 + Store 43(txval12) 53 + 58: 55 Load 57(g_tTex2df4) + 59: 14 Load 16(g_sSamp) + 61: 60 SampledImage 58 59 + 64: 7(fvec4) ImageSampleImplicitLod 61 63 Bias 24 + Store 54(txval20) 64 + 69: 66 Load 68(g_tTex2di4) + 70: 14 Load 16(g_sSamp) + 72: 71 SampledImage 69 70 + 74: 27(ivec4) ImageSampleImplicitLod 72 73 Bias 24 + Store 65(txval21) 74 + 79: 76 Load 78(g_tTex2du4) + 80: 14 Load 16(g_sSamp) + 82: 81 SampledImage 79 80 + 86: 41(ivec4) ImageSampleImplicitLod 82 85 Bias 24 + Store 75(txval22) 86 + 91: 88 Load 90(g_tTexcdf4) + 92: 14 Load 16(g_sSamp) + 94: 93 SampledImage 91 92 + 96: 7(fvec4) ImageSampleImplicitLod 94 95 Bias 24 + Store 87(txval40) 96 + 101: 98 Load 100(g_tTexcdi4) + 102: 14 Load 16(g_sSamp) + 104: 103 SampledImage 101 102 + 106: 27(ivec4) ImageSampleImplicitLod 104 105 Bias 24 + Store 97(txval41) 106 + 111: 108 Load 110(g_tTexcdu4) + 112: 14 Load 16(g_sSamp) + 114: 113 SampledImage 111 112 + 119: 41(ivec4) ImageSampleImplicitLod 114 118 Bias 24 + Store 107(txval42) 119 + 125: 8(ptr) AccessChain 122(psout) 123 + Store 125 124 + 128: 127(ptr) AccessChain 122(psout) 126 + Store 128 117 + 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 new file mode 100644 index 00000000..c7949146 --- /dev/null +++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out @@ -0,0 +1,651 @@ +hlsl.samplebias.basic.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 texture (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 0.500000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 texture (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 0.500000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 0.500000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 texture (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:35 Constant: +0:35 0.500000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 texture (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:36 Constant: +0:36 0.500000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:37 Constant: +0:37 0.500000 +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 texture (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:39 Constant: +0:39 0.500000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 texture (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:40 Constant: +0:40 0.500000 +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 texture (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:41 Constant: +0:41 0.500000 +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of float) +0:43 'txval40' (temp 4-component vector of float) +0:43 texture (temp 4-component vector of float) +0:43 Construct combined texture-sampler (temp samplerCube) +0:43 'g_tTexcdf4' (uniform textureCube) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:43 Constant: +0:43 0.500000 +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of int) +0:44 'txval41' (temp 4-component vector of int) +0:44 texture (temp 4-component vector of int) +0:44 Construct combined texture-sampler (temp isamplerCube) +0:44 'g_tTexcdi4' (uniform itextureCube) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:44 Constant: +0:44 0.500000 +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of uint) +0:45 'txval42' (temp 4-component vector of uint) +0:45 texture (temp 4-component vector of uint) +0:45 Construct combined texture-sampler (temp usamplerCube) +0:45 'g_tTexcdu4' (uniform utextureCube) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:45 Constant: +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 Depth}) +0:47 Constant: +0:47 0 (const int) +0:47 Constant: +0:47 1.000000 +0:47 1.000000 +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) +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 Sequence +0:50 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 texture (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 0.500000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 texture (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 0.500000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 texture (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 0.500000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 texture (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:35 Constant: +0:35 0.500000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 texture (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:36 Constant: +0:36 0.500000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 texture (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:37 Constant: +0:37 0.500000 +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 texture (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:39 Constant: +0:39 0.500000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 texture (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:40 Constant: +0:40 0.500000 +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 texture (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:41 Constant: +0:41 0.500000 +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of float) +0:43 'txval40' (temp 4-component vector of float) +0:43 texture (temp 4-component vector of float) +0:43 Construct combined texture-sampler (temp samplerCube) +0:43 'g_tTexcdf4' (uniform textureCube) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:43 Constant: +0:43 0.500000 +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of int) +0:44 'txval41' (temp 4-component vector of int) +0:44 texture (temp 4-component vector of int) +0:44 Construct combined texture-sampler (temp isamplerCube) +0:44 'g_tTexcdi4' (uniform itextureCube) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:44 Constant: +0:44 0.500000 +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of uint) +0:45 'txval42' (temp 4-component vector of uint) +0:45 texture (temp 4-component vector of uint) +0:45 Construct combined texture-sampler (temp usamplerCube) +0:45 'g_tTexcdu4' (uniform utextureCube) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:45 Constant: +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 Depth}) +0:47 Constant: +0:47 0 (const int) +0:47 Constant: +0:47 1.000000 +0:47 1.000000 +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) +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 Sequence +0:50 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 163 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 154 158 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 26 "txval11" + Name 29 "g_tTex1di4" + Name 39 "txval12" + Name 42 "g_tTex1du4" + Name 49 "txval20" + Name 52 "g_tTex2df4" + Name 60 "txval21" + Name 63 "g_tTex2di4" + Name 71 "txval22" + Name 74 "g_tTex2du4" + Name 82 "txval30" + Name 85 "g_tTex3df4" + Name 93 "txval31" + Name 96 "g_tTex3di4" + Name 103 "txval32" + Name 106 "g_tTex3du4" + Name 116 "txval40" + Name 119 "g_tTexcdf4" + Name 125 "txval41" + Name 128 "g_tTexcdi4" + Name 134 "txval42" + Name 137 "g_tTexcdu4" + Name 143 "PS_OUTPUT" + MemberName 143(PS_OUTPUT) 0 "Color" + MemberName 143(PS_OUTPUT) 1 "Depth" + Name 145 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 29(g_tTex1di4) DescriptorSet 0 + Decorate 42(g_tTex1du4) DescriptorSet 0 + Decorate 52(g_tTex2df4) DescriptorSet 0 + Decorate 63(g_tTex2di4) DescriptorSet 0 + Decorate 74(g_tTex2du4) DescriptorSet 0 + Decorate 85(g_tTex3df4) DescriptorSet 0 + Decorate 96(g_tTex3di4) DescriptorSet 0 + Decorate 106(g_tTex3du4) DescriptorSet 0 + Decorate 119(g_tTexcdf4) DescriptorSet 0 + Decorate 128(g_tTexcdi4) DescriptorSet 0 + Decorate 137(g_tTexcdu4) DescriptorSet 0 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1056964608 + 23: TypeInt 32 1 + 24: TypeVector 23(int) 4 + 25: TypePointer Function 24(ivec4) + 27: TypeImage 23(int) 1D sampled format:Unknown + 28: TypePointer UniformConstant 27 + 29(g_tTex1di4): 28(ptr) Variable UniformConstant + 32: TypeSampledImage 27 + 34: 6(float) Constant 1045220557 + 36: TypeInt 32 0 + 37: TypeVector 36(int) 4 + 38: TypePointer Function 37(ivec4) + 40: TypeImage 36(int) 1D sampled format:Unknown + 41: TypePointer UniformConstant 40 + 42(g_tTex1du4): 41(ptr) Variable UniformConstant + 45: TypeSampledImage 40 + 47: 6(float) Constant 1050253722 + 50: TypeImage 6(float) 2D sampled format:Unknown + 51: TypePointer UniformConstant 50 + 52(g_tTex2df4): 51(ptr) Variable UniformConstant + 55: TypeSampledImage 50 + 57: TypeVector 6(float) 2 + 58: 57(fvec2) ConstantComposite 20 34 + 61: TypeImage 23(int) 2D sampled format:Unknown + 62: TypePointer UniformConstant 61 + 63(g_tTex2di4): 62(ptr) Variable UniformConstant + 66: TypeSampledImage 61 + 68: 6(float) Constant 1053609165 + 69: 57(fvec2) ConstantComposite 47 68 + 72: TypeImage 36(int) 2D sampled format:Unknown + 73: TypePointer UniformConstant 72 + 74(g_tTex2du4): 73(ptr) Variable UniformConstant + 77: TypeSampledImage 72 + 79: 6(float) Constant 1058642330 + 80: 57(fvec2) ConstantComposite 21 79 + 83: TypeImage 6(float) 3D sampled format:Unknown + 84: TypePointer UniformConstant 83 + 85(g_tTex3df4): 84(ptr) Variable UniformConstant + 88: TypeSampledImage 83 + 90: TypeVector 6(float) 3 + 91: 90(fvec3) ConstantComposite 20 34 47 + 94: TypeImage 23(int) 3D sampled format:Unknown + 95: TypePointer UniformConstant 94 + 96(g_tTex3di4): 95(ptr) Variable UniformConstant + 99: TypeSampledImage 94 + 101: 90(fvec3) ConstantComposite 68 21 79 + 104: TypeImage 36(int) 3D sampled format:Unknown + 105: TypePointer UniformConstant 104 + 106(g_tTex3du4): 105(ptr) Variable UniformConstant + 109: TypeSampledImage 104 + 111: 6(float) Constant 1060320051 + 112: 6(float) Constant 1061997773 + 113: 6(float) Constant 1063675494 + 114: 90(fvec3) ConstantComposite 111 112 113 + 117: TypeImage 6(float) Cube sampled format:Unknown + 118: TypePointer UniformConstant 117 + 119(g_tTexcdf4): 118(ptr) Variable UniformConstant + 122: TypeSampledImage 117 + 126: TypeImage 23(int) Cube sampled format:Unknown + 127: TypePointer UniformConstant 126 + 128(g_tTexcdi4): 127(ptr) Variable UniformConstant + 131: TypeSampledImage 126 + 135: TypeImage 36(int) Cube sampled format:Unknown + 136: TypePointer UniformConstant 135 + 137(g_tTexcdu4): 136(ptr) Variable UniformConstant + 140: TypeSampledImage 135 + 143(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 144: TypePointer Function 143(PS_OUTPUT) + 146: 23(int) Constant 0 + 147: 6(float) Constant 1065353216 + 148: 7(fvec4) ConstantComposite 147 147 147 147 + 150: 23(int) Constant 1 + 151: TypePointer Function 6(float) + 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 + 26(txval11): 25(ptr) Variable Function + 39(txval12): 38(ptr) Variable Function + 49(txval20): 8(ptr) Variable Function + 60(txval21): 25(ptr) Variable Function + 71(txval22): 38(ptr) Variable Function + 82(txval30): 8(ptr) Variable Function + 93(txval31): 25(ptr) Variable Function + 103(txval32): 38(ptr) Variable Function + 116(txval40): 8(ptr) Variable Function + 125(txval41): 25(ptr) Variable Function + 134(txval42): 38(ptr) Variable Function + 145(psout): 144(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 22: 7(fvec4) ImageSampleImplicitLod 19 20 Bias 21 + Store 9(txval10) 22 + 30: 27 Load 29(g_tTex1di4) + 31: 14 Load 16(g_sSamp) + 33: 32 SampledImage 30 31 + 35: 24(ivec4) ImageSampleImplicitLod 33 34 Bias 21 + Store 26(txval11) 35 + 43: 40 Load 42(g_tTex1du4) + 44: 14 Load 16(g_sSamp) + 46: 45 SampledImage 43 44 + 48: 37(ivec4) ImageSampleImplicitLod 46 47 Bias 21 + Store 39(txval12) 48 + 53: 50 Load 52(g_tTex2df4) + 54: 14 Load 16(g_sSamp) + 56: 55 SampledImage 53 54 + 59: 7(fvec4) ImageSampleImplicitLod 56 58 Bias 21 + Store 49(txval20) 59 + 64: 61 Load 63(g_tTex2di4) + 65: 14 Load 16(g_sSamp) + 67: 66 SampledImage 64 65 + 70: 24(ivec4) ImageSampleImplicitLod 67 69 Bias 21 + Store 60(txval21) 70 + 75: 72 Load 74(g_tTex2du4) + 76: 14 Load 16(g_sSamp) + 78: 77 SampledImage 75 76 + 81: 37(ivec4) ImageSampleImplicitLod 78 80 Bias 21 + Store 71(txval22) 81 + 86: 83 Load 85(g_tTex3df4) + 87: 14 Load 16(g_sSamp) + 89: 88 SampledImage 86 87 + 92: 7(fvec4) ImageSampleImplicitLod 89 91 Bias 21 + Store 82(txval30) 92 + 97: 94 Load 96(g_tTex3di4) + 98: 14 Load 16(g_sSamp) + 100: 99 SampledImage 97 98 + 102: 24(ivec4) ImageSampleImplicitLod 100 101 Bias 21 + Store 93(txval31) 102 + 107: 104 Load 106(g_tTex3du4) + 108: 14 Load 16(g_sSamp) + 110: 109 SampledImage 107 108 + 115: 37(ivec4) ImageSampleImplicitLod 110 114 Bias 21 + Store 103(txval32) 115 + 120: 117 Load 119(g_tTexcdf4) + 121: 14 Load 16(g_sSamp) + 123: 122 SampledImage 120 121 + 124: 7(fvec4) ImageSampleImplicitLod 123 91 Bias 21 + Store 116(txval40) 124 + 129: 126 Load 128(g_tTexcdi4) + 130: 14 Load 16(g_sSamp) + 132: 131 SampledImage 129 130 + 133: 24(ivec4) ImageSampleImplicitLod 132 101 Bias 21 + Store 125(txval41) 133 + 138: 135 Load 137(g_tTexcdu4) + 139: 14 Load 16(g_sSamp) + 141: 140 SampledImage 138 139 + 142: 37(ivec4) ImageSampleImplicitLod 141 114 Bias 21 + Store 134(txval42) 142 + 149: 8(ptr) AccessChain 145(psout) 146 + Store 149 148 + 152: 151(ptr) AccessChain 145(psout) 150 + Store 152 147 + 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 new file mode 100644 index 00000000..900eb4b0 --- /dev/null +++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out @@ -0,0 +1,612 @@ +hlsl.samplebias.offset.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 textureOffset (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 0.500000 +0:31 Constant: +0:31 1 (const int) +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 textureOffset (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 0.500000 +0:32 Constant: +0:32 1 (const int) +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 textureOffset (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 0.500000 +0:33 Constant: +0:33 1 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 textureOffset (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:35 Constant: +0:35 0.500000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 textureOffset (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:36 Constant: +0:36 0.500000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 textureOffset (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:37 Constant: +0:37 0.500000 +0:? Constant: +0:? 1 (const int) +0:? -1 (const int) +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 textureOffset (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:39 Constant: +0:39 0.500000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:? 1 (const int) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 textureOffset (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:40 Constant: +0:40 0.500000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:? 1 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 textureOffset (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:41 Constant: +0:41 0.500000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +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 Depth}) +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1.000000 +0:45 1.000000 +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) +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 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 textureOffset (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 0.500000 +0:31 Constant: +0:31 1 (const int) +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 textureOffset (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 0.500000 +0:32 Constant: +0:32 1 (const int) +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 textureOffset (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 0.500000 +0:33 Constant: +0:33 1 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 textureOffset (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:35 Constant: +0:35 0.500000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 textureOffset (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:36 Constant: +0:36 0.500000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 textureOffset (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:37 Constant: +0:37 0.500000 +0:? Constant: +0:? 1 (const int) +0:? -1 (const int) +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 textureOffset (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:39 Constant: +0:39 0.500000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:? 1 (const int) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 textureOffset (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:40 Constant: +0:40 0.500000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:? 1 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 textureOffset (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:41 Constant: +0:41 0.500000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +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 Depth}) +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1.000000 +0:45 1.000000 +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) +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 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 154 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 136 140 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 27 "txval11" + Name 30 "g_tTex1di4" + Name 40 "txval12" + Name 43 "g_tTex1du4" + Name 50 "txval20" + Name 53 "g_tTex2df4" + Name 64 "txval21" + Name 67 "g_tTex2di4" + Name 76 "txval22" + Name 79 "g_tTex2du4" + Name 89 "txval30" + Name 92 "g_tTex3df4" + Name 102 "txval31" + Name 105 "g_tTex3di4" + Name 113 "txval32" + Name 116 "g_tTex3du4" + Name 127 "PS_OUTPUT" + MemberName 127(PS_OUTPUT) 0 "Color" + MemberName 127(PS_OUTPUT) 1 "Depth" + Name 129 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 30(g_tTex1di4) DescriptorSet 0 + Decorate 43(g_tTex1du4) DescriptorSet 0 + Decorate 53(g_tTex2df4) DescriptorSet 0 + Decorate 67(g_tTex2di4) DescriptorSet 0 + Decorate 79(g_tTex2du4) DescriptorSet 0 + Decorate 92(g_tTex3df4) DescriptorSet 0 + Decorate 105(g_tTex3di4) DescriptorSet 0 + Decorate 116(g_tTex3du4) 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1056964608 + 22: TypeInt 32 1 + 23: 22(int) Constant 1 + 25: TypeVector 22(int) 4 + 26: TypePointer Function 25(ivec4) + 28: TypeImage 22(int) 1D sampled format:Unknown + 29: TypePointer UniformConstant 28 + 30(g_tTex1di4): 29(ptr) Variable UniformConstant + 33: TypeSampledImage 28 + 35: 6(float) Constant 1045220557 + 37: TypeInt 32 0 + 38: TypeVector 37(int) 4 + 39: TypePointer Function 38(ivec4) + 41: TypeImage 37(int) 1D sampled format:Unknown + 42: TypePointer UniformConstant 41 + 43(g_tTex1du4): 42(ptr) Variable UniformConstant + 46: TypeSampledImage 41 + 48: 6(float) Constant 1050253722 + 51: TypeImage 6(float) 2D sampled format:Unknown + 52: TypePointer UniformConstant 51 + 53(g_tTex2df4): 52(ptr) Variable UniformConstant + 56: TypeSampledImage 51 + 58: TypeVector 6(float) 2 + 59: 58(fvec2) ConstantComposite 20 35 + 60: TypeVector 22(int) 2 + 61: 22(int) Constant 0 + 62: 60(ivec2) ConstantComposite 23 61 + 65: TypeImage 22(int) 2D sampled format:Unknown + 66: TypePointer UniformConstant 65 + 67(g_tTex2di4): 66(ptr) Variable UniformConstant + 70: TypeSampledImage 65 + 72: 6(float) Constant 1053609165 + 73: 58(fvec2) ConstantComposite 48 72 + 74: 60(ivec2) ConstantComposite 23 23 + 77: TypeImage 37(int) 2D sampled format:Unknown + 78: TypePointer UniformConstant 77 + 79(g_tTex2du4): 78(ptr) Variable UniformConstant + 82: TypeSampledImage 77 + 84: 6(float) Constant 1058642330 + 85: 58(fvec2) ConstantComposite 21 84 + 86: 22(int) Constant 4294967295 + 87: 60(ivec2) ConstantComposite 23 86 + 90: TypeImage 6(float) 3D sampled format:Unknown + 91: TypePointer UniformConstant 90 + 92(g_tTex3df4): 91(ptr) Variable UniformConstant + 95: TypeSampledImage 90 + 97: TypeVector 6(float) 3 + 98: 97(fvec3) ConstantComposite 20 35 48 + 99: TypeVector 22(int) 3 + 100: 99(ivec3) ConstantComposite 23 61 23 + 103: TypeImage 22(int) 3D sampled format:Unknown + 104: TypePointer UniformConstant 103 + 105(g_tTex3di4): 104(ptr) Variable UniformConstant + 108: TypeSampledImage 103 + 110: 97(fvec3) ConstantComposite 72 21 84 + 111: 99(ivec3) ConstantComposite 23 23 23 + 114: TypeImage 37(int) 3D sampled format:Unknown + 115: TypePointer UniformConstant 114 + 116(g_tTex3du4): 115(ptr) Variable UniformConstant + 119: TypeSampledImage 114 + 121: 6(float) Constant 1060320051 + 122: 6(float) Constant 1061997773 + 123: 6(float) Constant 1063675494 + 124: 97(fvec3) ConstantComposite 121 122 123 + 125: 99(ivec3) ConstantComposite 23 61 86 + 127(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 128: TypePointer Function 127(PS_OUTPUT) + 130: 6(float) Constant 1065353216 + 131: 7(fvec4) ConstantComposite 130 130 130 130 + 133: TypePointer Function 6(float) + 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 + 27(txval11): 26(ptr) Variable Function + 40(txval12): 39(ptr) Variable Function + 50(txval20): 8(ptr) Variable Function + 64(txval21): 26(ptr) Variable Function + 76(txval22): 39(ptr) Variable Function + 89(txval30): 8(ptr) Variable Function + 102(txval31): 26(ptr) Variable Function + 113(txval32): 39(ptr) Variable Function + 129(psout): 128(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 24: 7(fvec4) ImageSampleImplicitLod 19 20 Bias ConstOffset 23 21 + Store 9(txval10) 24 + 31: 28 Load 30(g_tTex1di4) + 32: 14 Load 16(g_sSamp) + 34: 33 SampledImage 31 32 + 36: 25(ivec4) ImageSampleImplicitLod 34 35 Bias ConstOffset 23 21 + Store 27(txval11) 36 + 44: 41 Load 43(g_tTex1du4) + 45: 14 Load 16(g_sSamp) + 47: 46 SampledImage 44 45 + 49: 38(ivec4) ImageSampleImplicitLod 47 48 Bias ConstOffset 23 21 + Store 40(txval12) 49 + 54: 51 Load 53(g_tTex2df4) + 55: 14 Load 16(g_sSamp) + 57: 56 SampledImage 54 55 + 63: 7(fvec4) ImageSampleImplicitLod 57 59 Bias ConstOffset 62 21 + Store 50(txval20) 63 + 68: 65 Load 67(g_tTex2di4) + 69: 14 Load 16(g_sSamp) + 71: 70 SampledImage 68 69 + 75: 25(ivec4) ImageSampleImplicitLod 71 73 Bias ConstOffset 74 21 + Store 64(txval21) 75 + 80: 77 Load 79(g_tTex2du4) + 81: 14 Load 16(g_sSamp) + 83: 82 SampledImage 80 81 + 88: 38(ivec4) ImageSampleImplicitLod 83 85 Bias ConstOffset 87 21 + Store 76(txval22) 88 + 93: 90 Load 92(g_tTex3df4) + 94: 14 Load 16(g_sSamp) + 96: 95 SampledImage 93 94 + 101: 7(fvec4) ImageSampleImplicitLod 96 98 Bias ConstOffset 100 21 + Store 89(txval30) 101 + 106: 103 Load 105(g_tTex3di4) + 107: 14 Load 16(g_sSamp) + 109: 108 SampledImage 106 107 + 112: 25(ivec4) ImageSampleImplicitLod 109 110 Bias ConstOffset 111 21 + Store 102(txval31) 112 + 117: 114 Load 116(g_tTex3du4) + 118: 14 Load 16(g_sSamp) + 120: 119 SampledImage 117 118 + 126: 38(ivec4) ImageSampleImplicitLod 120 124 Bias ConstOffset 125 21 + Store 113(txval32) 126 + 132: 8(ptr) AccessChain 129(psout) 61 + Store 132 131 + 134: 133(ptr) AccessChain 129(psout) 23 + Store 134 130 + 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 new file mode 100644 index 00000000..bd216222 --- /dev/null +++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out @@ -0,0 +1,449 @@ +hlsl.samplebias.offsetarray.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Parameters: +0:? Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:23 'txval10' (temp 4-component vector of float) +0:23 textureOffset (temp 4-component vector of float) +0:23 Construct combined texture-sampler (temp sampler1DArray) +0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:23 Constant: +0:23 0.500000 +0:23 Constant: +0:23 0 (const int) +0:24 Sequence +0:24 move second child to first child (temp 4-component vector of int) +0:24 'txval11' (temp 4-component vector of int) +0:24 textureOffset (temp 4-component vector of int) +0:24 Construct combined texture-sampler (temp isampler1DArray) +0:24 'g_tTex1di4' (uniform itexture1DArray) +0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:24 Constant: +0:24 0.500000 +0:24 Constant: +0:24 1 (const int) +0:25 Sequence +0:25 move second child to first child (temp 4-component vector of uint) +0:25 'txval12' (temp 4-component vector of uint) +0:25 textureOffset (temp 4-component vector of uint) +0:25 Construct combined texture-sampler (temp usampler1DArray) +0:25 'g_tTex1du4' (uniform utexture1DArray) +0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:25 Constant: +0:25 0.500000 +0:25 Constant: +0:25 2 (const int) +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval20' (temp 4-component vector of float) +0:27 textureOffset (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler2DArray) +0:27 'g_tTex2df4' (uniform texture2DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:27 Constant: +0:27 0.500000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval21' (temp 4-component vector of int) +0:28 textureOffset (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler2DArray) +0:28 'g_tTex2di4' (uniform itexture2DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:28 Constant: +0:28 0.500000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval22' (temp 4-component vector of uint) +0:29 textureOffset (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler2DArray) +0:29 'g_tTex2du4' (uniform utexture2DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:29 Constant: +0:29 0.500000 +0:? Constant: +0:? 0 (const int) +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 Depth}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 1.000000 +0:33 1.000000 +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) +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 Sequence +0:36 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Parameters: +0:? Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:23 'txval10' (temp 4-component vector of float) +0:23 textureOffset (temp 4-component vector of float) +0:23 Construct combined texture-sampler (temp sampler1DArray) +0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:23 Constant: +0:23 0.500000 +0:23 Constant: +0:23 0 (const int) +0:24 Sequence +0:24 move second child to first child (temp 4-component vector of int) +0:24 'txval11' (temp 4-component vector of int) +0:24 textureOffset (temp 4-component vector of int) +0:24 Construct combined texture-sampler (temp isampler1DArray) +0:24 'g_tTex1di4' (uniform itexture1DArray) +0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:24 Constant: +0:24 0.500000 +0:24 Constant: +0:24 1 (const int) +0:25 Sequence +0:25 move second child to first child (temp 4-component vector of uint) +0:25 'txval12' (temp 4-component vector of uint) +0:25 textureOffset (temp 4-component vector of uint) +0:25 Construct combined texture-sampler (temp usampler1DArray) +0:25 'g_tTex1du4' (uniform utexture1DArray) +0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:25 Constant: +0:25 0.500000 +0:25 Constant: +0:25 2 (const int) +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval20' (temp 4-component vector of float) +0:27 textureOffset (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler2DArray) +0:27 'g_tTex2df4' (uniform texture2DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:27 Constant: +0:27 0.500000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval21' (temp 4-component vector of int) +0:28 textureOffset (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler2DArray) +0:28 'g_tTex2di4' (uniform itexture2DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:28 Constant: +0:28 0.500000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval22' (temp 4-component vector of uint) +0:29 textureOffset (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler2DArray) +0:29 'g_tTex2du4' (uniform utexture2DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:29 Constant: +0:29 0.500000 +0:? Constant: +0:? 0 (const int) +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 Depth}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 1.000000 +0:33 1.000000 +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) +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 Sequence +0:36 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +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 111 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 102 106 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 30 "txval11" + Name 33 "g_tTex1di4" + Name 45 "txval12" + Name 48 "g_tTex1du4" + Name 57 "txval20" + Name 60 "g_tTex2df4" + Name 70 "txval21" + Name 73 "g_tTex2di4" + Name 80 "txval22" + Name 83 "g_tTex2du4" + Name 93 "PS_OUTPUT" + MemberName 93(PS_OUTPUT) 0 "Color" + MemberName 93(PS_OUTPUT) 1 "Depth" + Name 95 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 33(g_tTex1di4) DescriptorSet 0 + Decorate 48(g_tTex1du4) DescriptorSet 0 + Decorate 60(g_tTex2df4) DescriptorSet 0 + Decorate 73(g_tTex2di4) DescriptorSet 0 + Decorate 83(g_tTex2du4) DescriptorSet 0 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: 6(float) Constant 1056964608 + 25: TypeInt 32 1 + 26: 25(int) Constant 0 + 28: TypeVector 25(int) 4 + 29: TypePointer Function 28(ivec4) + 31: TypeImage 25(int) 1D array sampled format:Unknown + 32: TypePointer UniformConstant 31 + 33(g_tTex1di4): 32(ptr) Variable UniformConstant + 36: TypeSampledImage 31 + 38: 6(float) Constant 1050253722 + 39: 20(fvec2) ConstantComposite 22 38 + 40: 25(int) Constant 1 + 42: TypeInt 32 0 + 43: TypeVector 42(int) 4 + 44: TypePointer Function 43(ivec4) + 46: TypeImage 42(int) 1D array sampled format:Unknown + 47: TypePointer UniformConstant 46 + 48(g_tTex1du4): 47(ptr) Variable UniformConstant + 51: TypeSampledImage 46 + 53: 6(float) Constant 1053609165 + 54: 20(fvec2) ConstantComposite 38 53 + 55: 25(int) Constant 2 + 58: TypeImage 6(float) 2D array sampled format:Unknown + 59: TypePointer UniformConstant 58 + 60(g_tTex2df4): 59(ptr) Variable UniformConstant + 63: TypeSampledImage 58 + 65: TypeVector 6(float) 3 + 66: 65(fvec3) ConstantComposite 21 22 38 + 67: TypeVector 25(int) 2 + 68: 67(ivec2) ConstantComposite 26 26 + 71: TypeImage 25(int) 2D array sampled format:Unknown + 72: TypePointer UniformConstant 71 + 73(g_tTex2di4): 72(ptr) Variable UniformConstant + 76: TypeSampledImage 71 + 78: 65(fvec3) ConstantComposite 38 53 24 + 81: TypeImage 42(int) 2D array sampled format:Unknown + 82: TypePointer UniformConstant 81 + 83(g_tTex2du4): 82(ptr) Variable UniformConstant + 86: TypeSampledImage 81 + 88: 6(float) Constant 1058642330 + 89: 6(float) Constant 1060320051 + 90: 65(fvec3) ConstantComposite 24 88 89 + 91: 67(ivec2) ConstantComposite 26 40 + 93(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 94: TypePointer Function 93(PS_OUTPUT) + 96: 6(float) Constant 1065353216 + 97: 7(fvec4) ConstantComposite 96 96 96 96 + 99: TypePointer Function 6(float) + 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 + 30(txval11): 29(ptr) Variable Function + 45(txval12): 44(ptr) Variable Function + 57(txval20): 8(ptr) Variable Function + 70(txval21): 29(ptr) Variable Function + 80(txval22): 44(ptr) Variable Function + 95(psout): 94(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 27: 7(fvec4) ImageSampleImplicitLod 19 23 Bias ConstOffset 26 24 + Store 9(txval10) 27 + 34: 31 Load 33(g_tTex1di4) + 35: 14 Load 16(g_sSamp) + 37: 36 SampledImage 34 35 + 41: 28(ivec4) ImageSampleImplicitLod 37 39 Bias ConstOffset 40 24 + Store 30(txval11) 41 + 49: 46 Load 48(g_tTex1du4) + 50: 14 Load 16(g_sSamp) + 52: 51 SampledImage 49 50 + 56: 43(ivec4) ImageSampleImplicitLod 52 54 Bias ConstOffset 55 24 + Store 45(txval12) 56 + 61: 58 Load 60(g_tTex2df4) + 62: 14 Load 16(g_sSamp) + 64: 63 SampledImage 61 62 + 69: 7(fvec4) ImageSampleImplicitLod 64 66 Bias ConstOffset 68 24 + Store 57(txval20) 69 + 74: 71 Load 73(g_tTex2di4) + 75: 14 Load 16(g_sSamp) + 77: 76 SampledImage 74 75 + 79: 28(ivec4) ImageSampleImplicitLod 77 78 Bias ConstOffset 68 24 + Store 70(txval21) 79 + 84: 81 Load 83(g_tTex2du4) + 85: 14 Load 16(g_sSamp) + 87: 86 SampledImage 84 85 + 92: 43(ivec4) ImageSampleImplicitLod 87 90 Bias ConstOffset 91 24 + Store 80(txval22) 92 + 98: 8(ptr) AccessChain 95(psout) 26 + Store 98 97 + 100: 99(ptr) AccessChain 95(psout) 40 + Store 100 96 + 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 new file mode 100644 index 00000000..b05595d5 --- /dev/null +++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out @@ -0,0 +1,683 @@ +hlsl.samplecmp.array.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r10' (temp float) +0:42 texture (global float) +0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) +0:42 'g_tTex1df4a' (uniform texture1DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:42 Constant: +0:42 0.750000 +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r12' (temp float) +0:43 texture (global float) +0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) +0:43 'g_tTex1di4a' (uniform itexture1DArray) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:43 Constant: +0:43 0.750000 +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r14' (temp float) +0:44 texture (global float) +0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) +0:44 'g_tTex1du4a' (uniform utexture1DArray) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:44 Constant: +0:44 0.750000 +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r30' (temp float) +0:47 texture (global float) +0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) +0:47 'g_tTex2df4a' (uniform texture2DArray) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:47 Constant: +0:47 0.750000 +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r32' (temp float) +0:48 texture (global float) +0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) +0:48 'g_tTex2di4a' (uniform itexture2DArray) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:48 Constant: +0:48 0.750000 +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r34' (temp float) +0:49 texture (global float) +0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) +0:49 'g_tTex2du4a' (uniform utexture2DArray) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:49 Constant: +0:49 0.750000 +0:52 Sequence +0:52 move second child to first child (temp float) +0:52 'r60' (temp float) +0:52 texture (global float) +0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) +0:52 'g_tTexcdf4a' (uniform textureCubeArray) +0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:52 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:52 Constant: +0:52 0.750000 +0:53 Sequence +0:53 move second child to first child (temp float) +0:53 'r62' (temp float) +0:53 texture (global float) +0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) +0:53 'g_tTexcdi4a' (uniform itextureCubeArray) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:53 Constant: +0:53 0.750000 +0:54 Sequence +0:54 move second child to first child (temp float) +0:54 'r64' (temp float) +0:54 texture (global float) +0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) +0:54 'g_tTexcdu4a' (uniform utextureCubeArray) +0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:54 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:54 Constant: +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 Depth}) +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1.000000 +0:56 1.000000 +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) +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 Sequence +0:59 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r10' (temp float) +0:42 texture (global float) +0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) +0:42 'g_tTex1df4a' (uniform texture1DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:42 Constant: +0:42 0.750000 +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r12' (temp float) +0:43 texture (global float) +0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) +0:43 'g_tTex1di4a' (uniform itexture1DArray) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:43 Constant: +0:43 0.750000 +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r14' (temp float) +0:44 texture (global float) +0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) +0:44 'g_tTex1du4a' (uniform utexture1DArray) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:44 Constant: +0:44 0.750000 +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r30' (temp float) +0:47 texture (global float) +0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) +0:47 'g_tTex2df4a' (uniform texture2DArray) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:47 Constant: +0:47 0.750000 +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r32' (temp float) +0:48 texture (global float) +0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) +0:48 'g_tTex2di4a' (uniform itexture2DArray) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:48 Constant: +0:48 0.750000 +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r34' (temp float) +0:49 texture (global float) +0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) +0:49 'g_tTex2du4a' (uniform utexture2DArray) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:49 Constant: +0:49 0.750000 +0:52 Sequence +0:52 move second child to first child (temp float) +0:52 'r60' (temp float) +0:52 texture (global float) +0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) +0:52 'g_tTexcdf4a' (uniform textureCubeArray) +0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:52 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:52 Constant: +0:52 0.750000 +0:53 Sequence +0:53 move second child to first child (temp float) +0:53 'r62' (temp float) +0:53 texture (global float) +0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) +0:53 'g_tTexcdi4a' (uniform itextureCubeArray) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:53 Constant: +0:53 0.750000 +0:54 Sequence +0:54 move second child to first child (temp float) +0:54 'r64' (temp float) +0:54 texture (global float) +0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) +0:54 'g_tTexcdu4a' (uniform utextureCubeArray) +0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:54 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:54 Constant: +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 Depth}) +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1.000000 +0:56 1.000000 +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) +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 Sequence +0:59 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 211 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 167 171 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r10" + Name 11 "g_tTex1df4a" + Name 15 "g_sSamp" + Name 31 "r12" + Name 35 "g_tTex1di4a" + Name 46 "r14" + Name 50 "g_tTex1du4a" + Name 61 "r30" + Name 64 "g_tTex2df4a" + Name 79 "r32" + Name 82 "g_tTex2di4a" + Name 94 "r34" + Name 97 "g_tTex2du4a" + Name 109 "r60" + Name 112 "g_tTexcdf4a" + Name 126 "r62" + Name 129 "g_tTexcdi4a" + Name 141 "r64" + Name 144 "g_tTexcdu4a" + Name 156 "PS_OUTPUT" + MemberName 156(PS_OUTPUT) 0 "Color" + MemberName 156(PS_OUTPUT) 1 "Depth" + Name 158 "psout" + Name 167 "Color" + Name 171 "Depth" + Name 177 "g_tTex1df4" + Name 180 "g_tTex1di4" + Name 183 "g_tTex1du4" + Name 186 "g_tTex2df4" + Name 189 "g_tTex2di4" + Name 192 "g_tTex2du4" + Name 195 "g_tTex3df4" + Name 198 "g_tTex3di4" + Name 201 "g_tTex3du4" + Name 204 "g_tTexcdf4" + Name 207 "g_tTexcdi4" + Name 210 "g_tTexcdu4" + Decorate 11(g_tTex1df4a) DescriptorSet 0 + Decorate 15(g_sSamp) DescriptorSet 0 + Decorate 15(g_sSamp) Binding 0 + Decorate 35(g_tTex1di4a) DescriptorSet 0 + Decorate 50(g_tTex1du4a) DescriptorSet 0 + Decorate 64(g_tTex2df4a) DescriptorSet 0 + Decorate 82(g_tTex2di4a) DescriptorSet 0 + Decorate 97(g_tTex2du4a) DescriptorSet 0 + Decorate 112(g_tTexcdf4a) DescriptorSet 0 + Decorate 129(g_tTexcdi4a) DescriptorSet 0 + Decorate 144(g_tTexcdu4a) DescriptorSet 0 + Decorate 167(Color) Location 0 + Decorate 171(Depth) BuiltIn FragDepth + Decorate 177(g_tTex1df4) DescriptorSet 0 + Decorate 177(g_tTex1df4) Binding 0 + Decorate 180(g_tTex1di4) DescriptorSet 0 + Decorate 183(g_tTex1du4) DescriptorSet 0 + Decorate 186(g_tTex2df4) DescriptorSet 0 + Decorate 189(g_tTex2di4) DescriptorSet 0 + Decorate 192(g_tTex2du4) DescriptorSet 0 + Decorate 195(g_tTex3df4) DescriptorSet 0 + Decorate 198(g_tTex3di4) DescriptorSet 0 + Decorate 201(g_tTex3du4) DescriptorSet 0 + Decorate 204(g_tTexcdf4) DescriptorSet 0 + Decorate 207(g_tTexcdi4) DescriptorSet 0 + Decorate 210(g_tTexcdu4) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D array sampled format:Unknown + 10: TypePointer UniformConstant 9 + 11(g_tTex1df4a): 10(ptr) Variable UniformConstant + 13: TypeSampler + 14: TypePointer UniformConstant 13 + 15(g_sSamp): 14(ptr) Variable UniformConstant + 17: TypeImage 6(float) 1D depth array sampled format:Unknown + 18: TypeSampledImage 17 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: 6(float) Constant 1061158912 + 25: TypeVector 6(float) 3 + 32: TypeInt 32 1 + 33: TypeImage 32(int) 1D array sampled format:Unknown + 34: TypePointer UniformConstant 33 + 35(g_tTex1di4a): 34(ptr) Variable UniformConstant + 38: TypeImage 32(int) 1D depth array sampled format:Unknown + 39: TypeSampledImage 38 + 47: TypeInt 32 0 + 48: TypeImage 47(int) 1D array sampled format:Unknown + 49: TypePointer UniformConstant 48 + 50(g_tTex1du4a): 49(ptr) Variable UniformConstant + 53: TypeImage 47(int) 1D depth array sampled format:Unknown + 54: TypeSampledImage 53 + 62: TypeImage 6(float) 2D array sampled format:Unknown + 63: TypePointer UniformConstant 62 + 64(g_tTex2df4a): 63(ptr) Variable UniformConstant + 67: TypeImage 6(float) 2D depth array sampled format:Unknown + 68: TypeSampledImage 67 + 70: 6(float) Constant 1050253722 + 71: 25(fvec3) ConstantComposite 21 22 70 + 72: TypeVector 6(float) 4 + 80: TypeImage 32(int) 2D array sampled format:Unknown + 81: TypePointer UniformConstant 80 + 82(g_tTex2di4a): 81(ptr) Variable UniformConstant + 85: TypeImage 32(int) 2D depth array sampled format:Unknown + 86: TypeSampledImage 85 + 95: TypeImage 47(int) 2D array sampled format:Unknown + 96: TypePointer UniformConstant 95 + 97(g_tTex2du4a): 96(ptr) Variable UniformConstant + 100: TypeImage 47(int) 2D depth array sampled format:Unknown + 101: TypeSampledImage 100 + 110: TypeImage 6(float) Cube array sampled format:Unknown + 111: TypePointer UniformConstant 110 +112(g_tTexcdf4a): 111(ptr) Variable UniformConstant + 115: TypeImage 6(float) Cube depth array sampled format:Unknown + 116: TypeSampledImage 115 + 118: 6(float) Constant 1053609165 + 119: 72(fvec4) ConstantComposite 21 22 70 118 + 127: TypeImage 32(int) Cube array sampled format:Unknown + 128: TypePointer UniformConstant 127 +129(g_tTexcdi4a): 128(ptr) Variable UniformConstant + 132: TypeImage 32(int) Cube depth array sampled format:Unknown + 133: TypeSampledImage 132 + 142: TypeImage 47(int) Cube array sampled format:Unknown + 143: TypePointer UniformConstant 142 +144(g_tTexcdu4a): 143(ptr) Variable UniformConstant + 147: TypeImage 47(int) Cube depth array sampled format:Unknown + 148: TypeSampledImage 147 + 156(PS_OUTPUT): TypeStruct 72(fvec4) 6(float) + 157: TypePointer Function 156(PS_OUTPUT) + 159: 32(int) Constant 0 + 160: 6(float) Constant 1065353216 + 161: 72(fvec4) ConstantComposite 160 160 160 160 + 162: TypePointer Function 72(fvec4) + 164: 32(int) Constant 1 + 166: TypePointer Output 72(fvec4) + 167(Color): 166(ptr) Variable Output + 170: TypePointer Output 6(float) + 171(Depth): 170(ptr) Variable Output + 175: TypeImage 6(float) 1D sampled format:Unknown + 176: TypePointer UniformConstant 175 + 177(g_tTex1df4): 176(ptr) Variable UniformConstant + 178: TypeImage 32(int) 1D sampled format:Unknown + 179: TypePointer UniformConstant 178 + 180(g_tTex1di4): 179(ptr) Variable UniformConstant + 181: TypeImage 47(int) 1D sampled format:Unknown + 182: TypePointer UniformConstant 181 + 183(g_tTex1du4): 182(ptr) Variable UniformConstant + 184: TypeImage 6(float) 2D sampled format:Unknown + 185: TypePointer UniformConstant 184 + 186(g_tTex2df4): 185(ptr) Variable UniformConstant + 187: TypeImage 32(int) 2D sampled format:Unknown + 188: TypePointer UniformConstant 187 + 189(g_tTex2di4): 188(ptr) Variable UniformConstant + 190: TypeImage 47(int) 2D sampled format:Unknown + 191: TypePointer UniformConstant 190 + 192(g_tTex2du4): 191(ptr) Variable UniformConstant + 193: TypeImage 6(float) 3D sampled format:Unknown + 194: TypePointer UniformConstant 193 + 195(g_tTex3df4): 194(ptr) Variable UniformConstant + 196: TypeImage 32(int) 3D sampled format:Unknown + 197: TypePointer UniformConstant 196 + 198(g_tTex3di4): 197(ptr) Variable UniformConstant + 199: TypeImage 47(int) 3D sampled format:Unknown + 200: TypePointer UniformConstant 199 + 201(g_tTex3du4): 200(ptr) Variable UniformConstant + 202: TypeImage 6(float) Cube sampled format:Unknown + 203: TypePointer UniformConstant 202 + 204(g_tTexcdf4): 203(ptr) Variable UniformConstant + 205: TypeImage 32(int) Cube sampled format:Unknown + 206: TypePointer UniformConstant 205 + 207(g_tTexcdi4): 206(ptr) Variable UniformConstant + 208: TypeImage 47(int) Cube sampled format:Unknown + 209: TypePointer UniformConstant 208 + 210(g_tTexcdu4): 209(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 8(r10): 7(ptr) Variable Function + 31(r12): 7(ptr) Variable Function + 46(r14): 7(ptr) Variable Function + 61(r30): 7(ptr) Variable Function + 79(r32): 7(ptr) Variable Function + 94(r34): 7(ptr) Variable Function + 109(r60): 7(ptr) Variable Function + 126(r62): 7(ptr) Variable Function + 141(r64): 7(ptr) Variable Function + 158(psout): 157(ptr) Variable Function + 12: 9 Load 11(g_tTex1df4a) + 16: 13 Load 15(g_sSamp) + 19: 18 SampledImage 12 16 + 26: 6(float) CompositeExtract 23 0 + 27: 6(float) CompositeExtract 23 1 + 28: 25(fvec3) CompositeConstruct 26 27 24 + 29: 6(float) CompositeExtract 28 2 + 30: 6(float) ImageSampleDrefImplicitLod 19 28 29 + Store 8(r10) 30 + 36: 33 Load 35(g_tTex1di4a) + 37: 13 Load 15(g_sSamp) + 40: 39 SampledImage 36 37 + 41: 6(float) CompositeExtract 23 0 + 42: 6(float) CompositeExtract 23 1 + 43: 25(fvec3) CompositeConstruct 41 42 24 + 44: 6(float) CompositeExtract 43 2 + 45: 6(float) ImageSampleDrefImplicitLod 40 43 44 + Store 31(r12) 45 + 51: 48 Load 50(g_tTex1du4a) + 52: 13 Load 15(g_sSamp) + 55: 54 SampledImage 51 52 + 56: 6(float) CompositeExtract 23 0 + 57: 6(float) CompositeExtract 23 1 + 58: 25(fvec3) CompositeConstruct 56 57 24 + 59: 6(float) CompositeExtract 58 2 + 60: 6(float) ImageSampleDrefImplicitLod 55 58 59 + Store 46(r14) 60 + 65: 62 Load 64(g_tTex2df4a) + 66: 13 Load 15(g_sSamp) + 69: 68 SampledImage 65 66 + 73: 6(float) CompositeExtract 71 0 + 74: 6(float) CompositeExtract 71 1 + 75: 6(float) CompositeExtract 71 2 + 76: 72(fvec4) CompositeConstruct 73 74 75 24 + 77: 6(float) CompositeExtract 76 3 + 78: 6(float) ImageSampleDrefImplicitLod 69 76 77 + Store 61(r30) 78 + 83: 80 Load 82(g_tTex2di4a) + 84: 13 Load 15(g_sSamp) + 87: 86 SampledImage 83 84 + 88: 6(float) CompositeExtract 71 0 + 89: 6(float) CompositeExtract 71 1 + 90: 6(float) CompositeExtract 71 2 + 91: 72(fvec4) CompositeConstruct 88 89 90 24 + 92: 6(float) CompositeExtract 91 3 + 93: 6(float) ImageSampleDrefImplicitLod 87 91 92 + Store 79(r32) 93 + 98: 95 Load 97(g_tTex2du4a) + 99: 13 Load 15(g_sSamp) + 102: 101 SampledImage 98 99 + 103: 6(float) CompositeExtract 71 0 + 104: 6(float) CompositeExtract 71 1 + 105: 6(float) CompositeExtract 71 2 + 106: 72(fvec4) CompositeConstruct 103 104 105 24 + 107: 6(float) CompositeExtract 106 3 + 108: 6(float) ImageSampleDrefImplicitLod 102 106 107 + Store 94(r34) 108 + 113: 110 Load 112(g_tTexcdf4a) + 114: 13 Load 15(g_sSamp) + 117: 116 SampledImage 113 114 + 120: 6(float) CompositeExtract 119 0 + 121: 6(float) CompositeExtract 119 1 + 122: 6(float) CompositeExtract 119 2 + 123: 6(float) CompositeExtract 119 3 + 124: 72(fvec4) CompositeConstruct 120 121 122 123 + 125: 6(float) ImageSampleDrefImplicitLod 117 124 24 + Store 109(r60) 125 + 130: 127 Load 129(g_tTexcdi4a) + 131: 13 Load 15(g_sSamp) + 134: 133 SampledImage 130 131 + 135: 6(float) CompositeExtract 119 0 + 136: 6(float) CompositeExtract 119 1 + 137: 6(float) CompositeExtract 119 2 + 138: 6(float) CompositeExtract 119 3 + 139: 72(fvec4) CompositeConstruct 135 136 137 138 + 140: 6(float) ImageSampleDrefImplicitLod 134 139 24 + Store 126(r62) 140 + 145: 142 Load 144(g_tTexcdu4a) + 146: 13 Load 15(g_sSamp) + 149: 148 SampledImage 145 146 + 150: 6(float) CompositeExtract 119 0 + 151: 6(float) CompositeExtract 119 1 + 152: 6(float) CompositeExtract 119 2 + 153: 6(float) CompositeExtract 119 3 + 154: 72(fvec4) CompositeConstruct 150 151 152 153 + 155: 6(float) ImageSampleDrefImplicitLod 149 154 24 + Store 141(r64) 155 + 163: 162(ptr) AccessChain 158(psout) 159 + Store 163 161 + 165: 7(ptr) AccessChain 158(psout) 164 + Store 165 160 + 168: 162(ptr) AccessChain 158(psout) 159 + 169: 72(fvec4) Load 168 + Store 167(Color) 169 + 172: 7(ptr) AccessChain 158(psout) 164 + 173: 6(float) Load 172 + Store 171(Depth) 173 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out new file mode 100644 index 00000000..aa9b3795 --- /dev/null +++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out @@ -0,0 +1,654 @@ +hlsl.samplecmp.basic.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r00' (temp float) +0:42 texture (global float) +0:42 Construct combined texture-sampler (temp sampler1DShadow) +0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec2 (temp 2-component vector of float) +0:42 Constant: +0:42 0.100000 +0:42 Constant: +0:42 0.750000 +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r02' (temp float) +0:43 texture (global float) +0:43 Construct combined texture-sampler (temp isampler1DShadow) +0:43 'g_tTex1di4' (uniform itexture1D) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec2 (temp 2-component vector of float) +0:43 Constant: +0:43 0.100000 +0:43 Constant: +0:43 0.750000 +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r04' (temp float) +0:44 texture (global float) +0:44 Construct combined texture-sampler (temp usampler1DShadow) +0:44 'g_tTex1du4' (uniform utexture1D) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec2 (temp 2-component vector of float) +0:44 Constant: +0:44 0.100000 +0:44 Constant: +0:44 0.750000 +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r20' (temp float) +0:47 texture (global float) +0:47 Construct combined texture-sampler (temp sampler2DShadow) +0:47 'g_tTex2df4' (uniform texture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:47 Constant: +0:47 0.750000 +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r22' (temp float) +0:48 texture (global float) +0:48 Construct combined texture-sampler (temp isampler2DShadow) +0:48 'g_tTex2di4' (uniform itexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:48 Constant: +0:48 0.750000 +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r24' (temp float) +0:49 texture (global float) +0:49 Construct combined texture-sampler (temp usampler2DShadow) +0:49 'g_tTex2du4' (uniform utexture2D) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:49 Constant: +0:49 0.750000 +0:53 Sequence +0:53 move second child to first child (temp float) +0:53 'r50' (temp float) +0:53 texture (global float) +0:53 Construct combined texture-sampler (temp samplerCubeShadow) +0:53 'g_tTexcdf4' (uniform textureCube) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:53 Constant: +0:53 0.750000 +0:54 Sequence +0:54 move second child to first child (temp float) +0:54 'r52' (temp float) +0:54 texture (global float) +0:54 Construct combined texture-sampler (temp isamplerCubeShadow) +0:54 'g_tTexcdi4' (uniform itextureCube) +0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:54 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:54 Constant: +0:54 0.750000 +0:55 Sequence +0:55 move second child to first child (temp float) +0:55 'r54' (temp float) +0:55 texture (global float) +0:55 Construct combined texture-sampler (temp usamplerCubeShadow) +0:55 'g_tTexcdu4' (uniform utextureCube) +0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:55 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:55 Constant: +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 Depth}) +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1.000000 +0:57 1.000000 +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) +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 Sequence +0:60 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r00' (temp float) +0:42 texture (global float) +0:42 Construct combined texture-sampler (temp sampler1DShadow) +0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec2 (temp 2-component vector of float) +0:42 Constant: +0:42 0.100000 +0:42 Constant: +0:42 0.750000 +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r02' (temp float) +0:43 texture (global float) +0:43 Construct combined texture-sampler (temp isampler1DShadow) +0:43 'g_tTex1di4' (uniform itexture1D) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec2 (temp 2-component vector of float) +0:43 Constant: +0:43 0.100000 +0:43 Constant: +0:43 0.750000 +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r04' (temp float) +0:44 texture (global float) +0:44 Construct combined texture-sampler (temp usampler1DShadow) +0:44 'g_tTex1du4' (uniform utexture1D) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec2 (temp 2-component vector of float) +0:44 Constant: +0:44 0.100000 +0:44 Constant: +0:44 0.750000 +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r20' (temp float) +0:47 texture (global float) +0:47 Construct combined texture-sampler (temp sampler2DShadow) +0:47 'g_tTex2df4' (uniform texture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:47 Constant: +0:47 0.750000 +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r22' (temp float) +0:48 texture (global float) +0:48 Construct combined texture-sampler (temp isampler2DShadow) +0:48 'g_tTex2di4' (uniform itexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:48 Constant: +0:48 0.750000 +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r24' (temp float) +0:49 texture (global float) +0:49 Construct combined texture-sampler (temp usampler2DShadow) +0:49 'g_tTex2du4' (uniform utexture2D) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:49 Constant: +0:49 0.750000 +0:53 Sequence +0:53 move second child to first child (temp float) +0:53 'r50' (temp float) +0:53 texture (global float) +0:53 Construct combined texture-sampler (temp samplerCubeShadow) +0:53 'g_tTexcdf4' (uniform textureCube) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:53 Constant: +0:53 0.750000 +0:54 Sequence +0:54 move second child to first child (temp float) +0:54 'r52' (temp float) +0:54 texture (global float) +0:54 Construct combined texture-sampler (temp isamplerCubeShadow) +0:54 'g_tTexcdi4' (uniform itextureCube) +0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:54 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:54 Constant: +0:54 0.750000 +0:55 Sequence +0:55 move second child to first child (temp float) +0:55 'r54' (temp float) +0:55 texture (global float) +0:55 Construct combined texture-sampler (temp usamplerCubeShadow) +0:55 'g_tTexcdu4' (uniform utextureCube) +0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:55 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:55 Constant: +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 Depth}) +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1.000000 +0:57 1.000000 +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) +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 Sequence +0:60 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 200 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 156 160 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r00" + Name 11 "g_tTex1df4" + Name 15 "g_sSamp" + Name 26 "r02" + Name 30 "g_tTex1di4" + Name 39 "r04" + Name 43 "g_tTex1du4" + Name 52 "r20" + Name 55 "g_tTex2df4" + Name 69 "r22" + Name 72 "g_tTex2di4" + Name 83 "r24" + Name 86 "g_tTex2du4" + Name 97 "r50" + Name 100 "g_tTexcdf4" + Name 115 "r52" + Name 118 "g_tTexcdi4" + Name 130 "r54" + Name 133 "g_tTexcdu4" + Name 145 "PS_OUTPUT" + MemberName 145(PS_OUTPUT) 0 "Color" + MemberName 145(PS_OUTPUT) 1 "Depth" + Name 147 "psout" + Name 156 "Color" + Name 160 "Depth" + Name 166 "g_tTex3df4" + Name 169 "g_tTex3di4" + Name 172 "g_tTex3du4" + Name 175 "g_tTex1df4a" + Name 178 "g_tTex1di4a" + Name 181 "g_tTex1du4a" + Name 184 "g_tTex2df4a" + Name 187 "g_tTex2di4a" + Name 190 "g_tTex2du4a" + Name 193 "g_tTexcdf4a" + Name 196 "g_tTexcdi4a" + Name 199 "g_tTexcdu4a" + Decorate 11(g_tTex1df4) DescriptorSet 0 + Decorate 11(g_tTex1df4) Binding 0 + Decorate 15(g_sSamp) DescriptorSet 0 + Decorate 15(g_sSamp) Binding 0 + Decorate 30(g_tTex1di4) DescriptorSet 0 + Decorate 43(g_tTex1du4) DescriptorSet 0 + Decorate 55(g_tTex2df4) DescriptorSet 0 + Decorate 72(g_tTex2di4) DescriptorSet 0 + Decorate 86(g_tTex2du4) DescriptorSet 0 + Decorate 100(g_tTexcdf4) DescriptorSet 0 + Decorate 118(g_tTexcdi4) DescriptorSet 0 + Decorate 133(g_tTexcdu4) DescriptorSet 0 + Decorate 156(Color) Location 0 + Decorate 160(Depth) BuiltIn FragDepth + Decorate 166(g_tTex3df4) DescriptorSet 0 + Decorate 169(g_tTex3di4) DescriptorSet 0 + Decorate 172(g_tTex3du4) DescriptorSet 0 + Decorate 175(g_tTex1df4a) DescriptorSet 0 + Decorate 178(g_tTex1di4a) DescriptorSet 0 + Decorate 181(g_tTex1du4a) DescriptorSet 0 + Decorate 184(g_tTex2df4a) DescriptorSet 0 + Decorate 187(g_tTex2di4a) DescriptorSet 0 + Decorate 190(g_tTex2du4a) DescriptorSet 0 + Decorate 193(g_tTexcdf4a) DescriptorSet 0 + Decorate 196(g_tTexcdi4a) DescriptorSet 0 + Decorate 199(g_tTexcdu4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D sampled format:Unknown + 10: TypePointer UniformConstant 9 + 11(g_tTex1df4): 10(ptr) Variable UniformConstant + 13: TypeSampler + 14: TypePointer UniformConstant 13 + 15(g_sSamp): 14(ptr) Variable UniformConstant + 17: TypeImage 6(float) 1D depth sampled format:Unknown + 18: TypeSampledImage 17 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1061158912 + 22: TypeVector 6(float) 2 + 27: TypeInt 32 1 + 28: TypeImage 27(int) 1D sampled format:Unknown + 29: TypePointer UniformConstant 28 + 30(g_tTex1di4): 29(ptr) Variable UniformConstant + 33: TypeImage 27(int) 1D depth sampled format:Unknown + 34: TypeSampledImage 33 + 40: TypeInt 32 0 + 41: TypeImage 40(int) 1D sampled format:Unknown + 42: TypePointer UniformConstant 41 + 43(g_tTex1du4): 42(ptr) Variable UniformConstant + 46: TypeImage 40(int) 1D depth sampled format:Unknown + 47: TypeSampledImage 46 + 53: TypeImage 6(float) 2D sampled format:Unknown + 54: TypePointer UniformConstant 53 + 55(g_tTex2df4): 54(ptr) Variable UniformConstant + 58: TypeImage 6(float) 2D depth sampled format:Unknown + 59: TypeSampledImage 58 + 61: 6(float) Constant 1045220557 + 62: 22(fvec2) ConstantComposite 20 61 + 63: TypeVector 6(float) 3 + 70: TypeImage 27(int) 2D sampled format:Unknown + 71: TypePointer UniformConstant 70 + 72(g_tTex2di4): 71(ptr) Variable UniformConstant + 75: TypeImage 27(int) 2D depth sampled format:Unknown + 76: TypeSampledImage 75 + 84: TypeImage 40(int) 2D sampled format:Unknown + 85: TypePointer UniformConstant 84 + 86(g_tTex2du4): 85(ptr) Variable UniformConstant + 89: TypeImage 40(int) 2D depth sampled format:Unknown + 90: TypeSampledImage 89 + 98: TypeImage 6(float) Cube sampled format:Unknown + 99: TypePointer UniformConstant 98 + 100(g_tTexcdf4): 99(ptr) Variable UniformConstant + 103: TypeImage 6(float) Cube depth sampled format:Unknown + 104: TypeSampledImage 103 + 106: 6(float) Constant 1050253722 + 107: 63(fvec3) ConstantComposite 20 61 106 + 108: TypeVector 6(float) 4 + 116: TypeImage 27(int) Cube sampled format:Unknown + 117: TypePointer UniformConstant 116 + 118(g_tTexcdi4): 117(ptr) Variable UniformConstant + 121: TypeImage 27(int) Cube depth sampled format:Unknown + 122: TypeSampledImage 121 + 131: TypeImage 40(int) Cube sampled format:Unknown + 132: TypePointer UniformConstant 131 + 133(g_tTexcdu4): 132(ptr) Variable UniformConstant + 136: TypeImage 40(int) Cube depth sampled format:Unknown + 137: TypeSampledImage 136 + 145(PS_OUTPUT): TypeStruct 108(fvec4) 6(float) + 146: TypePointer Function 145(PS_OUTPUT) + 148: 27(int) Constant 0 + 149: 6(float) Constant 1065353216 + 150: 108(fvec4) ConstantComposite 149 149 149 149 + 151: TypePointer Function 108(fvec4) + 153: 27(int) Constant 1 + 155: TypePointer Output 108(fvec4) + 156(Color): 155(ptr) Variable Output + 159: TypePointer Output 6(float) + 160(Depth): 159(ptr) Variable Output + 164: TypeImage 6(float) 3D sampled format:Unknown + 165: TypePointer UniformConstant 164 + 166(g_tTex3df4): 165(ptr) Variable UniformConstant + 167: TypeImage 27(int) 3D sampled format:Unknown + 168: TypePointer UniformConstant 167 + 169(g_tTex3di4): 168(ptr) Variable UniformConstant + 170: TypeImage 40(int) 3D sampled format:Unknown + 171: TypePointer UniformConstant 170 + 172(g_tTex3du4): 171(ptr) Variable UniformConstant + 173: TypeImage 6(float) 1D array sampled format:Unknown + 174: TypePointer UniformConstant 173 +175(g_tTex1df4a): 174(ptr) Variable UniformConstant + 176: TypeImage 27(int) 1D array sampled format:Unknown + 177: TypePointer UniformConstant 176 +178(g_tTex1di4a): 177(ptr) Variable UniformConstant + 179: TypeImage 40(int) 1D array sampled format:Unknown + 180: TypePointer UniformConstant 179 +181(g_tTex1du4a): 180(ptr) Variable UniformConstant + 182: TypeImage 6(float) 2D array sampled format:Unknown + 183: TypePointer UniformConstant 182 +184(g_tTex2df4a): 183(ptr) Variable UniformConstant + 185: TypeImage 27(int) 2D array sampled format:Unknown + 186: TypePointer UniformConstant 185 +187(g_tTex2di4a): 186(ptr) Variable UniformConstant + 188: TypeImage 40(int) 2D array sampled format:Unknown + 189: TypePointer UniformConstant 188 +190(g_tTex2du4a): 189(ptr) Variable UniformConstant + 191: TypeImage 6(float) Cube array sampled format:Unknown + 192: TypePointer UniformConstant 191 +193(g_tTexcdf4a): 192(ptr) Variable UniformConstant + 194: TypeImage 27(int) Cube array sampled format:Unknown + 195: TypePointer UniformConstant 194 +196(g_tTexcdi4a): 195(ptr) Variable UniformConstant + 197: TypeImage 40(int) Cube array sampled format:Unknown + 198: TypePointer UniformConstant 197 +199(g_tTexcdu4a): 198(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 8(r00): 7(ptr) Variable Function + 26(r02): 7(ptr) Variable Function + 39(r04): 7(ptr) Variable Function + 52(r20): 7(ptr) Variable Function + 69(r22): 7(ptr) Variable Function + 83(r24): 7(ptr) Variable Function + 97(r50): 7(ptr) Variable Function + 115(r52): 7(ptr) Variable Function + 130(r54): 7(ptr) Variable Function + 147(psout): 146(ptr) Variable Function + 12: 9 Load 11(g_tTex1df4) + 16: 13 Load 15(g_sSamp) + 19: 18 SampledImage 12 16 + 23: 22(fvec2) CompositeConstruct 20 21 + 24: 6(float) CompositeExtract 23 1 + 25: 6(float) ImageSampleDrefImplicitLod 19 23 24 + Store 8(r00) 25 + 31: 28 Load 30(g_tTex1di4) + 32: 13 Load 15(g_sSamp) + 35: 34 SampledImage 31 32 + 36: 22(fvec2) CompositeConstruct 20 21 + 37: 6(float) CompositeExtract 36 1 + 38: 6(float) ImageSampleDrefImplicitLod 35 36 37 + Store 26(r02) 38 + 44: 41 Load 43(g_tTex1du4) + 45: 13 Load 15(g_sSamp) + 48: 47 SampledImage 44 45 + 49: 22(fvec2) CompositeConstruct 20 21 + 50: 6(float) CompositeExtract 49 1 + 51: 6(float) ImageSampleDrefImplicitLod 48 49 50 + Store 39(r04) 51 + 56: 53 Load 55(g_tTex2df4) + 57: 13 Load 15(g_sSamp) + 60: 59 SampledImage 56 57 + 64: 6(float) CompositeExtract 62 0 + 65: 6(float) CompositeExtract 62 1 + 66: 63(fvec3) CompositeConstruct 64 65 21 + 67: 6(float) CompositeExtract 66 2 + 68: 6(float) ImageSampleDrefImplicitLod 60 66 67 + Store 52(r20) 68 + 73: 70 Load 72(g_tTex2di4) + 74: 13 Load 15(g_sSamp) + 77: 76 SampledImage 73 74 + 78: 6(float) CompositeExtract 62 0 + 79: 6(float) CompositeExtract 62 1 + 80: 63(fvec3) CompositeConstruct 78 79 21 + 81: 6(float) CompositeExtract 80 2 + 82: 6(float) ImageSampleDrefImplicitLod 77 80 81 + Store 69(r22) 82 + 87: 84 Load 86(g_tTex2du4) + 88: 13 Load 15(g_sSamp) + 91: 90 SampledImage 87 88 + 92: 6(float) CompositeExtract 62 0 + 93: 6(float) CompositeExtract 62 1 + 94: 63(fvec3) CompositeConstruct 92 93 21 + 95: 6(float) CompositeExtract 94 2 + 96: 6(float) ImageSampleDrefImplicitLod 91 94 95 + Store 83(r24) 96 + 101: 98 Load 100(g_tTexcdf4) + 102: 13 Load 15(g_sSamp) + 105: 104 SampledImage 101 102 + 109: 6(float) CompositeExtract 107 0 + 110: 6(float) CompositeExtract 107 1 + 111: 6(float) CompositeExtract 107 2 + 112: 108(fvec4) CompositeConstruct 109 110 111 21 + 113: 6(float) CompositeExtract 112 3 + 114: 6(float) ImageSampleDrefImplicitLod 105 112 113 + Store 97(r50) 114 + 119: 116 Load 118(g_tTexcdi4) + 120: 13 Load 15(g_sSamp) + 123: 122 SampledImage 119 120 + 124: 6(float) CompositeExtract 107 0 + 125: 6(float) CompositeExtract 107 1 + 126: 6(float) CompositeExtract 107 2 + 127: 108(fvec4) CompositeConstruct 124 125 126 21 + 128: 6(float) CompositeExtract 127 3 + 129: 6(float) ImageSampleDrefImplicitLod 123 127 128 + Store 115(r52) 129 + 134: 131 Load 133(g_tTexcdu4) + 135: 13 Load 15(g_sSamp) + 138: 137 SampledImage 134 135 + 139: 6(float) CompositeExtract 107 0 + 140: 6(float) CompositeExtract 107 1 + 141: 6(float) CompositeExtract 107 2 + 142: 108(fvec4) CompositeConstruct 139 140 141 21 + 143: 6(float) CompositeExtract 142 3 + 144: 6(float) ImageSampleDrefImplicitLod 138 142 143 + Store 130(r54) 144 + 152: 151(ptr) AccessChain 147(psout) 148 + Store 152 150 + 154: 7(ptr) AccessChain 147(psout) 153 + Store 154 149 + 157: 151(ptr) AccessChain 147(psout) 148 + 158: 108(fvec4) Load 157 + Store 156(Color) 158 + 161: 7(ptr) AccessChain 147(psout) 153 + 162: 6(float) Load 161 + Store 160(Depth) 162 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out new file mode 100644 index 00000000..fd3250f5 --- /dev/null +++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out @@ -0,0 +1,560 @@ +hlsl.samplecmp.offset.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r01' (temp float) +0:42 textureOffset (global float) +0:42 Construct combined texture-sampler (temp sampler1DShadow) +0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec2 (temp 2-component vector of float) +0:42 Constant: +0:42 0.100000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 2 (const int) +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r03' (temp float) +0:43 textureOffset (global float) +0:43 Construct combined texture-sampler (temp isampler1DShadow) +0:43 'g_tTex1di4' (uniform itexture1D) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec2 (temp 2-component vector of float) +0:43 Constant: +0:43 0.100000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 2 (const int) +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r05' (temp float) +0:44 textureOffset (global float) +0:44 Construct combined texture-sampler (temp usampler1DShadow) +0:44 'g_tTex1du4' (uniform utexture1D) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec2 (temp 2-component vector of float) +0:44 Constant: +0:44 0.100000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 2 (const int) +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r21' (temp float) +0:47 textureOffset (global float) +0:47 Construct combined texture-sampler (temp sampler2DShadow) +0:47 'g_tTex2df4' (uniform texture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:47 Constant: +0:47 0.750000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r23' (temp float) +0:48 textureOffset (global float) +0:48 Construct combined texture-sampler (temp isampler2DShadow) +0:48 'g_tTex2di4' (uniform itexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:48 Constant: +0:48 0.750000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r25' (temp float) +0:49 textureOffset (global float) +0:49 Construct combined texture-sampler (temp usampler2DShadow) +0:49 'g_tTex2du4' (uniform utexture2D) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:49 Constant: +0:49 0.750000 +0:? Constant: +0:? 2 (const int) +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 Depth}) +0:62 Constant: +0:62 0 (const int) +0:62 Constant: +0:62 1.000000 +0:62 1.000000 +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) +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 Sequence +0:65 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r01' (temp float) +0:42 textureOffset (global float) +0:42 Construct combined texture-sampler (temp sampler1DShadow) +0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec2 (temp 2-component vector of float) +0:42 Constant: +0:42 0.100000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 2 (const int) +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r03' (temp float) +0:43 textureOffset (global float) +0:43 Construct combined texture-sampler (temp isampler1DShadow) +0:43 'g_tTex1di4' (uniform itexture1D) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec2 (temp 2-component vector of float) +0:43 Constant: +0:43 0.100000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 2 (const int) +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r05' (temp float) +0:44 textureOffset (global float) +0:44 Construct combined texture-sampler (temp usampler1DShadow) +0:44 'g_tTex1du4' (uniform utexture1D) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec2 (temp 2-component vector of float) +0:44 Constant: +0:44 0.100000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 2 (const int) +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r21' (temp float) +0:47 textureOffset (global float) +0:47 Construct combined texture-sampler (temp sampler2DShadow) +0:47 'g_tTex2df4' (uniform texture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:47 Constant: +0:47 0.750000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r23' (temp float) +0:48 textureOffset (global float) +0:48 Construct combined texture-sampler (temp isampler2DShadow) +0:48 'g_tTex2di4' (uniform itexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:48 Constant: +0:48 0.750000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r25' (temp float) +0:49 textureOffset (global float) +0:49 Construct combined texture-sampler (temp usampler2DShadow) +0:49 'g_tTex2du4' (uniform utexture2D) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:49 Constant: +0:49 0.750000 +0:? Constant: +0:? 2 (const int) +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 Depth}) +0:62 Constant: +0:62 0 (const int) +0:62 Constant: +0:62 1.000000 +0:62 1.000000 +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) +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 Sequence +0:65 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 166 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 113 117 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r01" + Name 11 "g_tTex1df4" + Name 15 "g_sSamp" + Name 28 "r03" + Name 31 "g_tTex1di4" + Name 40 "r05" + Name 44 "g_tTex1du4" + Name 53 "r21" + Name 56 "g_tTex2df4" + Name 73 "r23" + Name 76 "g_tTex2di4" + Name 87 "r25" + Name 90 "g_tTex2du4" + Name 102 "PS_OUTPUT" + MemberName 102(PS_OUTPUT) 0 "Color" + MemberName 102(PS_OUTPUT) 1 "Depth" + Name 104 "psout" + Name 113 "Color" + Name 117 "Depth" + Name 123 "g_tTex3df4" + Name 126 "g_tTex3di4" + Name 129 "g_tTex3du4" + Name 132 "g_tTexcdf4" + Name 135 "g_tTexcdi4" + Name 138 "g_tTexcdu4" + Name 141 "g_tTex1df4a" + Name 144 "g_tTex1di4a" + Name 147 "g_tTex1du4a" + Name 150 "g_tTex2df4a" + Name 153 "g_tTex2di4a" + Name 156 "g_tTex2du4a" + Name 159 "g_tTexcdf4a" + Name 162 "g_tTexcdi4a" + Name 165 "g_tTexcdu4a" + Decorate 11(g_tTex1df4) DescriptorSet 0 + Decorate 11(g_tTex1df4) Binding 0 + Decorate 15(g_sSamp) DescriptorSet 0 + Decorate 15(g_sSamp) Binding 0 + Decorate 31(g_tTex1di4) DescriptorSet 0 + Decorate 44(g_tTex1du4) DescriptorSet 0 + Decorate 56(g_tTex2df4) DescriptorSet 0 + Decorate 76(g_tTex2di4) DescriptorSet 0 + Decorate 90(g_tTex2du4) DescriptorSet 0 + Decorate 113(Color) Location 0 + Decorate 117(Depth) BuiltIn FragDepth + Decorate 123(g_tTex3df4) DescriptorSet 0 + Decorate 126(g_tTex3di4) DescriptorSet 0 + Decorate 129(g_tTex3du4) DescriptorSet 0 + Decorate 132(g_tTexcdf4) DescriptorSet 0 + Decorate 135(g_tTexcdi4) DescriptorSet 0 + Decorate 138(g_tTexcdu4) DescriptorSet 0 + Decorate 141(g_tTex1df4a) DescriptorSet 0 + Decorate 144(g_tTex1di4a) DescriptorSet 0 + Decorate 147(g_tTex1du4a) DescriptorSet 0 + Decorate 150(g_tTex2df4a) DescriptorSet 0 + Decorate 153(g_tTex2di4a) DescriptorSet 0 + Decorate 156(g_tTex2du4a) DescriptorSet 0 + Decorate 159(g_tTexcdf4a) DescriptorSet 0 + Decorate 162(g_tTexcdi4a) DescriptorSet 0 + Decorate 165(g_tTexcdu4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D sampled format:Unknown + 10: TypePointer UniformConstant 9 + 11(g_tTex1df4): 10(ptr) Variable UniformConstant + 13: TypeSampler + 14: TypePointer UniformConstant 13 + 15(g_sSamp): 14(ptr) Variable UniformConstant + 17: TypeImage 6(float) 1D depth sampled format:Unknown + 18: TypeSampledImage 17 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1061158912 + 22: TypeVector 6(float) 2 + 24: TypeInt 32 1 + 25: 24(int) Constant 2 + 29: TypeImage 24(int) 1D sampled format:Unknown + 30: TypePointer UniformConstant 29 + 31(g_tTex1di4): 30(ptr) Variable UniformConstant + 34: TypeImage 24(int) 1D depth sampled format:Unknown + 35: TypeSampledImage 34 + 41: TypeInt 32 0 + 42: TypeImage 41(int) 1D sampled format:Unknown + 43: TypePointer UniformConstant 42 + 44(g_tTex1du4): 43(ptr) Variable UniformConstant + 47: TypeImage 41(int) 1D depth sampled format:Unknown + 48: TypeSampledImage 47 + 54: TypeImage 6(float) 2D sampled format:Unknown + 55: TypePointer UniformConstant 54 + 56(g_tTex2df4): 55(ptr) Variable UniformConstant + 59: TypeImage 6(float) 2D depth sampled format:Unknown + 60: TypeSampledImage 59 + 62: 6(float) Constant 1045220557 + 63: 22(fvec2) ConstantComposite 20 62 + 64: TypeVector 6(float) 3 + 68: TypeVector 24(int) 2 + 69: 24(int) Constant 3 + 70: 68(ivec2) ConstantComposite 25 69 + 74: TypeImage 24(int) 2D sampled format:Unknown + 75: TypePointer UniformConstant 74 + 76(g_tTex2di4): 75(ptr) Variable UniformConstant + 79: TypeImage 24(int) 2D depth sampled format:Unknown + 80: TypeSampledImage 79 + 88: TypeImage 41(int) 2D sampled format:Unknown + 89: TypePointer UniformConstant 88 + 90(g_tTex2du4): 89(ptr) Variable UniformConstant + 93: TypeImage 41(int) 2D depth sampled format:Unknown + 94: TypeSampledImage 93 + 101: TypeVector 6(float) 4 + 102(PS_OUTPUT): TypeStruct 101(fvec4) 6(float) + 103: TypePointer Function 102(PS_OUTPUT) + 105: 24(int) Constant 0 + 106: 6(float) Constant 1065353216 + 107: 101(fvec4) ConstantComposite 106 106 106 106 + 108: TypePointer Function 101(fvec4) + 110: 24(int) Constant 1 + 112: TypePointer Output 101(fvec4) + 113(Color): 112(ptr) Variable Output + 116: TypePointer Output 6(float) + 117(Depth): 116(ptr) Variable Output + 121: TypeImage 6(float) 3D sampled format:Unknown + 122: TypePointer UniformConstant 121 + 123(g_tTex3df4): 122(ptr) Variable UniformConstant + 124: TypeImage 24(int) 3D sampled format:Unknown + 125: TypePointer UniformConstant 124 + 126(g_tTex3di4): 125(ptr) Variable UniformConstant + 127: TypeImage 41(int) 3D sampled format:Unknown + 128: TypePointer UniformConstant 127 + 129(g_tTex3du4): 128(ptr) Variable UniformConstant + 130: TypeImage 6(float) Cube sampled format:Unknown + 131: TypePointer UniformConstant 130 + 132(g_tTexcdf4): 131(ptr) Variable UniformConstant + 133: TypeImage 24(int) Cube sampled format:Unknown + 134: TypePointer UniformConstant 133 + 135(g_tTexcdi4): 134(ptr) Variable UniformConstant + 136: TypeImage 41(int) Cube sampled format:Unknown + 137: TypePointer UniformConstant 136 + 138(g_tTexcdu4): 137(ptr) Variable UniformConstant + 139: TypeImage 6(float) 1D array sampled format:Unknown + 140: TypePointer UniformConstant 139 +141(g_tTex1df4a): 140(ptr) Variable UniformConstant + 142: TypeImage 24(int) 1D array sampled format:Unknown + 143: TypePointer UniformConstant 142 +144(g_tTex1di4a): 143(ptr) Variable UniformConstant + 145: TypeImage 41(int) 1D array sampled format:Unknown + 146: TypePointer UniformConstant 145 +147(g_tTex1du4a): 146(ptr) Variable UniformConstant + 148: TypeImage 6(float) 2D array sampled format:Unknown + 149: TypePointer UniformConstant 148 +150(g_tTex2df4a): 149(ptr) Variable UniformConstant + 151: TypeImage 24(int) 2D array sampled format:Unknown + 152: TypePointer UniformConstant 151 +153(g_tTex2di4a): 152(ptr) Variable UniformConstant + 154: TypeImage 41(int) 2D array sampled format:Unknown + 155: TypePointer UniformConstant 154 +156(g_tTex2du4a): 155(ptr) Variable UniformConstant + 157: TypeImage 6(float) Cube array sampled format:Unknown + 158: TypePointer UniformConstant 157 +159(g_tTexcdf4a): 158(ptr) Variable UniformConstant + 160: TypeImage 24(int) Cube array sampled format:Unknown + 161: TypePointer UniformConstant 160 +162(g_tTexcdi4a): 161(ptr) Variable UniformConstant + 163: TypeImage 41(int) Cube array sampled format:Unknown + 164: TypePointer UniformConstant 163 +165(g_tTexcdu4a): 164(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 8(r01): 7(ptr) Variable Function + 28(r03): 7(ptr) Variable Function + 40(r05): 7(ptr) Variable Function + 53(r21): 7(ptr) Variable Function + 73(r23): 7(ptr) Variable Function + 87(r25): 7(ptr) Variable Function + 104(psout): 103(ptr) Variable Function + 12: 9 Load 11(g_tTex1df4) + 16: 13 Load 15(g_sSamp) + 19: 18 SampledImage 12 16 + 23: 22(fvec2) CompositeConstruct 20 21 + 26: 6(float) CompositeExtract 23 1 + 27: 6(float) ImageSampleDrefImplicitLod 19 23 26 ConstOffset 25 + Store 8(r01) 27 + 32: 29 Load 31(g_tTex1di4) + 33: 13 Load 15(g_sSamp) + 36: 35 SampledImage 32 33 + 37: 22(fvec2) CompositeConstruct 20 21 + 38: 6(float) CompositeExtract 37 1 + 39: 6(float) ImageSampleDrefImplicitLod 36 37 38 ConstOffset 25 + Store 28(r03) 39 + 45: 42 Load 44(g_tTex1du4) + 46: 13 Load 15(g_sSamp) + 49: 48 SampledImage 45 46 + 50: 22(fvec2) CompositeConstruct 20 21 + 51: 6(float) CompositeExtract 50 1 + 52: 6(float) ImageSampleDrefImplicitLod 49 50 51 ConstOffset 25 + Store 40(r05) 52 + 57: 54 Load 56(g_tTex2df4) + 58: 13 Load 15(g_sSamp) + 61: 60 SampledImage 57 58 + 65: 6(float) CompositeExtract 63 0 + 66: 6(float) CompositeExtract 63 1 + 67: 64(fvec3) CompositeConstruct 65 66 21 + 71: 6(float) CompositeExtract 67 2 + 72: 6(float) ImageSampleDrefImplicitLod 61 67 71 ConstOffset 70 + Store 53(r21) 72 + 77: 74 Load 76(g_tTex2di4) + 78: 13 Load 15(g_sSamp) + 81: 80 SampledImage 77 78 + 82: 6(float) CompositeExtract 63 0 + 83: 6(float) CompositeExtract 63 1 + 84: 64(fvec3) CompositeConstruct 82 83 21 + 85: 6(float) CompositeExtract 84 2 + 86: 6(float) ImageSampleDrefImplicitLod 81 84 85 ConstOffset 70 + Store 73(r23) 86 + 91: 88 Load 90(g_tTex2du4) + 92: 13 Load 15(g_sSamp) + 95: 94 SampledImage 91 92 + 96: 6(float) CompositeExtract 63 0 + 97: 6(float) CompositeExtract 63 1 + 98: 64(fvec3) CompositeConstruct 96 97 21 + 99: 6(float) CompositeExtract 98 2 + 100: 6(float) ImageSampleDrefImplicitLod 95 98 99 ConstOffset 70 + Store 87(r25) 100 + 109: 108(ptr) AccessChain 104(psout) 105 + Store 109 107 + 111: 7(ptr) AccessChain 104(psout) 110 + Store 111 106 + 114: 108(ptr) AccessChain 104(psout) 105 + 115: 101(fvec4) Load 114 + Store 113(Color) 115 + 118: 7(ptr) AccessChain 104(psout) 110 + 119: 6(float) Load 118 + Store 117(Depth) 119 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out new file mode 100644 index 00000000..05695ed4 --- /dev/null +++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out @@ -0,0 +1,583 @@ +hlsl.samplecmp.offsetarray.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r11' (temp float) +0:42 textureOffset (global float) +0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) +0:42 'g_tTex1df4a' (uniform texture1DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 2 (const int) +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r13' (temp float) +0:43 textureOffset (global float) +0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) +0:43 'g_tTex1di4a' (uniform itexture1DArray) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 2 (const int) +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r15' (temp float) +0:44 textureOffset (global float) +0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) +0:44 'g_tTex1du4a' (uniform utexture1DArray) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 2 (const int) +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r31' (temp float) +0:47 textureOffset (global float) +0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) +0:47 'g_tTex2df4a' (uniform texture2DArray) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:47 Constant: +0:47 0.750000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r33' (temp float) +0:48 textureOffset (global float) +0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) +0:48 'g_tTex2di4a' (uniform itexture2DArray) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:48 Constant: +0:48 0.750000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r35' (temp float) +0:49 textureOffset (global float) +0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) +0:49 'g_tTex2du4a' (uniform utexture2DArray) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:49 Constant: +0:49 0.750000 +0:? Constant: +0:? 2 (const int) +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 Depth}) +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1.000000 +0:63 1.000000 +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) +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 Sequence +0:66 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r11' (temp float) +0:42 textureOffset (global float) +0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) +0:42 'g_tTex1df4a' (uniform texture1DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 2 (const int) +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r13' (temp float) +0:43 textureOffset (global float) +0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) +0:43 'g_tTex1di4a' (uniform itexture1DArray) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 2 (const int) +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r15' (temp float) +0:44 textureOffset (global float) +0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) +0:44 'g_tTex1du4a' (uniform utexture1DArray) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 2 (const int) +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r31' (temp float) +0:47 textureOffset (global float) +0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) +0:47 'g_tTex2df4a' (uniform texture2DArray) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:47 Constant: +0:47 0.750000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r33' (temp float) +0:48 textureOffset (global float) +0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) +0:48 'g_tTex2di4a' (uniform itexture2DArray) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:48 Constant: +0:48 0.750000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r35' (temp float) +0:49 textureOffset (global float) +0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) +0:49 'g_tTex2du4a' (uniform utexture2DArray) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:49 Constant: +0:49 0.750000 +0:? Constant: +0:? 2 (const int) +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 Depth}) +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1.000000 +0:63 1.000000 +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) +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 Sequence +0:66 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 124 128 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r11" + Name 11 "g_tTex1df4a" + Name 15 "g_sSamp" + Name 33 "r13" + Name 36 "g_tTex1di4a" + Name 47 "r15" + Name 51 "g_tTex1du4a" + Name 62 "r31" + Name 65 "g_tTex2df4a" + Name 83 "r33" + Name 86 "g_tTex2di4a" + Name 98 "r35" + Name 101 "g_tTex2du4a" + Name 113 "PS_OUTPUT" + MemberName 113(PS_OUTPUT) 0 "Color" + MemberName 113(PS_OUTPUT) 1 "Depth" + Name 115 "psout" + Name 124 "Color" + Name 128 "Depth" + Name 134 "g_tTex1df4" + Name 137 "g_tTex1di4" + Name 140 "g_tTex1du4" + Name 143 "g_tTex2df4" + Name 146 "g_tTex2di4" + Name 149 "g_tTex2du4" + Name 152 "g_tTex3df4" + Name 155 "g_tTex3di4" + Name 158 "g_tTex3du4" + Name 161 "g_tTexcdf4" + Name 164 "g_tTexcdi4" + Name 167 "g_tTexcdu4" + Name 170 "g_tTexcdf4a" + Name 173 "g_tTexcdi4a" + Name 176 "g_tTexcdu4a" + Decorate 11(g_tTex1df4a) DescriptorSet 0 + Decorate 15(g_sSamp) DescriptorSet 0 + Decorate 15(g_sSamp) Binding 0 + Decorate 36(g_tTex1di4a) DescriptorSet 0 + Decorate 51(g_tTex1du4a) DescriptorSet 0 + Decorate 65(g_tTex2df4a) DescriptorSet 0 + Decorate 86(g_tTex2di4a) DescriptorSet 0 + Decorate 101(g_tTex2du4a) DescriptorSet 0 + Decorate 124(Color) Location 0 + Decorate 128(Depth) BuiltIn FragDepth + Decorate 134(g_tTex1df4) DescriptorSet 0 + Decorate 134(g_tTex1df4) Binding 0 + Decorate 137(g_tTex1di4) DescriptorSet 0 + Decorate 140(g_tTex1du4) DescriptorSet 0 + Decorate 143(g_tTex2df4) DescriptorSet 0 + Decorate 146(g_tTex2di4) DescriptorSet 0 + Decorate 149(g_tTex2du4) DescriptorSet 0 + Decorate 152(g_tTex3df4) DescriptorSet 0 + Decorate 155(g_tTex3di4) DescriptorSet 0 + Decorate 158(g_tTex3du4) DescriptorSet 0 + Decorate 161(g_tTexcdf4) DescriptorSet 0 + Decorate 164(g_tTexcdi4) DescriptorSet 0 + Decorate 167(g_tTexcdu4) 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 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D array sampled format:Unknown + 10: TypePointer UniformConstant 9 + 11(g_tTex1df4a): 10(ptr) Variable UniformConstant + 13: TypeSampler + 14: TypePointer UniformConstant 13 + 15(g_sSamp): 14(ptr) Variable UniformConstant + 17: TypeImage 6(float) 1D depth array sampled format:Unknown + 18: TypeSampledImage 17 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: 6(float) Constant 1061158912 + 25: TypeVector 6(float) 3 + 29: TypeInt 32 1 + 30: 29(int) Constant 2 + 34: TypeImage 29(int) 1D array sampled format:Unknown + 35: TypePointer UniformConstant 34 + 36(g_tTex1di4a): 35(ptr) Variable UniformConstant + 39: TypeImage 29(int) 1D depth array sampled format:Unknown + 40: TypeSampledImage 39 + 48: TypeInt 32 0 + 49: TypeImage 48(int) 1D array sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex1du4a): 50(ptr) Variable UniformConstant + 54: TypeImage 48(int) 1D depth array sampled format:Unknown + 55: TypeSampledImage 54 + 63: TypeImage 6(float) 2D array sampled format:Unknown + 64: TypePointer UniformConstant 63 + 65(g_tTex2df4a): 64(ptr) Variable UniformConstant + 68: TypeImage 6(float) 2D depth array sampled format:Unknown + 69: TypeSampledImage 68 + 71: 6(float) Constant 1050253722 + 72: 25(fvec3) ConstantComposite 21 22 71 + 73: TypeVector 6(float) 4 + 78: TypeVector 29(int) 2 + 79: 29(int) Constant 3 + 80: 78(ivec2) ConstantComposite 30 79 + 84: TypeImage 29(int) 2D array sampled format:Unknown + 85: TypePointer UniformConstant 84 + 86(g_tTex2di4a): 85(ptr) Variable UniformConstant + 89: TypeImage 29(int) 2D depth array sampled format:Unknown + 90: TypeSampledImage 89 + 99: TypeImage 48(int) 2D array sampled format:Unknown + 100: TypePointer UniformConstant 99 +101(g_tTex2du4a): 100(ptr) Variable UniformConstant + 104: TypeImage 48(int) 2D depth array sampled format:Unknown + 105: TypeSampledImage 104 + 113(PS_OUTPUT): TypeStruct 73(fvec4) 6(float) + 114: TypePointer Function 113(PS_OUTPUT) + 116: 29(int) Constant 0 + 117: 6(float) Constant 1065353216 + 118: 73(fvec4) ConstantComposite 117 117 117 117 + 119: TypePointer Function 73(fvec4) + 121: 29(int) Constant 1 + 123: TypePointer Output 73(fvec4) + 124(Color): 123(ptr) Variable Output + 127: TypePointer Output 6(float) + 128(Depth): 127(ptr) Variable Output + 132: TypeImage 6(float) 1D sampled format:Unknown + 133: TypePointer UniformConstant 132 + 134(g_tTex1df4): 133(ptr) Variable UniformConstant + 135: TypeImage 29(int) 1D sampled format:Unknown + 136: TypePointer UniformConstant 135 + 137(g_tTex1di4): 136(ptr) Variable UniformConstant + 138: TypeImage 48(int) 1D sampled format:Unknown + 139: TypePointer UniformConstant 138 + 140(g_tTex1du4): 139(ptr) Variable UniformConstant + 141: TypeImage 6(float) 2D sampled format:Unknown + 142: TypePointer UniformConstant 141 + 143(g_tTex2df4): 142(ptr) Variable UniformConstant + 144: TypeImage 29(int) 2D sampled format:Unknown + 145: TypePointer UniformConstant 144 + 146(g_tTex2di4): 145(ptr) Variable UniformConstant + 147: TypeImage 48(int) 2D sampled format:Unknown + 148: TypePointer UniformConstant 147 + 149(g_tTex2du4): 148(ptr) Variable UniformConstant + 150: TypeImage 6(float) 3D sampled format:Unknown + 151: TypePointer UniformConstant 150 + 152(g_tTex3df4): 151(ptr) Variable UniformConstant + 153: TypeImage 29(int) 3D sampled format:Unknown + 154: TypePointer UniformConstant 153 + 155(g_tTex3di4): 154(ptr) Variable UniformConstant + 156: TypeImage 48(int) 3D sampled format:Unknown + 157: TypePointer UniformConstant 156 + 158(g_tTex3du4): 157(ptr) Variable UniformConstant + 159: TypeImage 6(float) Cube sampled format:Unknown + 160: TypePointer UniformConstant 159 + 161(g_tTexcdf4): 160(ptr) Variable UniformConstant + 162: TypeImage 29(int) Cube sampled format:Unknown + 163: TypePointer UniformConstant 162 + 164(g_tTexcdi4): 163(ptr) Variable UniformConstant + 165: TypeImage 48(int) Cube sampled format:Unknown + 166: TypePointer UniformConstant 165 + 167(g_tTexcdu4): 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 29(int) Cube array sampled format:Unknown + 172: TypePointer UniformConstant 171 +173(g_tTexcdi4a): 172(ptr) Variable UniformConstant + 174: TypeImage 48(int) Cube array sampled format:Unknown + 175: TypePointer UniformConstant 174 +176(g_tTexcdu4a): 175(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 8(r11): 7(ptr) Variable Function + 33(r13): 7(ptr) Variable Function + 47(r15): 7(ptr) Variable Function + 62(r31): 7(ptr) Variable Function + 83(r33): 7(ptr) Variable Function + 98(r35): 7(ptr) Variable Function + 115(psout): 114(ptr) Variable Function + 12: 9 Load 11(g_tTex1df4a) + 16: 13 Load 15(g_sSamp) + 19: 18 SampledImage 12 16 + 26: 6(float) CompositeExtract 23 0 + 27: 6(float) CompositeExtract 23 1 + 28: 25(fvec3) CompositeConstruct 26 27 24 + 31: 6(float) CompositeExtract 28 2 + 32: 6(float) ImageSampleDrefImplicitLod 19 28 31 ConstOffset 30 + Store 8(r11) 32 + 37: 34 Load 36(g_tTex1di4a) + 38: 13 Load 15(g_sSamp) + 41: 40 SampledImage 37 38 + 42: 6(float) CompositeExtract 23 0 + 43: 6(float) CompositeExtract 23 1 + 44: 25(fvec3) CompositeConstruct 42 43 24 + 45: 6(float) CompositeExtract 44 2 + 46: 6(float) ImageSampleDrefImplicitLod 41 44 45 ConstOffset 30 + Store 33(r13) 46 + 52: 49 Load 51(g_tTex1du4a) + 53: 13 Load 15(g_sSamp) + 56: 55 SampledImage 52 53 + 57: 6(float) CompositeExtract 23 0 + 58: 6(float) CompositeExtract 23 1 + 59: 25(fvec3) CompositeConstruct 57 58 24 + 60: 6(float) CompositeExtract 59 2 + 61: 6(float) ImageSampleDrefImplicitLod 56 59 60 ConstOffset 30 + Store 47(r15) 61 + 66: 63 Load 65(g_tTex2df4a) + 67: 13 Load 15(g_sSamp) + 70: 69 SampledImage 66 67 + 74: 6(float) CompositeExtract 72 0 + 75: 6(float) CompositeExtract 72 1 + 76: 6(float) CompositeExtract 72 2 + 77: 73(fvec4) CompositeConstruct 74 75 76 24 + 81: 6(float) CompositeExtract 77 3 + 82: 6(float) ImageSampleDrefImplicitLod 70 77 81 ConstOffset 80 + Store 62(r31) 82 + 87: 84 Load 86(g_tTex2di4a) + 88: 13 Load 15(g_sSamp) + 91: 90 SampledImage 87 88 + 92: 6(float) CompositeExtract 72 0 + 93: 6(float) CompositeExtract 72 1 + 94: 6(float) CompositeExtract 72 2 + 95: 73(fvec4) CompositeConstruct 92 93 94 24 + 96: 6(float) CompositeExtract 95 3 + 97: 6(float) ImageSampleDrefImplicitLod 91 95 96 ConstOffset 80 + Store 83(r33) 97 + 102: 99 Load 101(g_tTex2du4a) + 103: 13 Load 15(g_sSamp) + 106: 105 SampledImage 102 103 + 107: 6(float) CompositeExtract 72 0 + 108: 6(float) CompositeExtract 72 1 + 109: 6(float) CompositeExtract 72 2 + 110: 73(fvec4) CompositeConstruct 107 108 109 24 + 111: 6(float) CompositeExtract 110 3 + 112: 6(float) ImageSampleDrefImplicitLod 106 110 111 ConstOffset 80 + Store 98(r35) 112 + 120: 119(ptr) AccessChain 115(psout) 116 + Store 120 118 + 122: 7(ptr) AccessChain 115(psout) 121 + Store 122 117 + 125: 119(ptr) AccessChain 115(psout) 116 + 126: 73(fvec4) Load 125 + Store 124(Color) 126 + 129: 7(ptr) AccessChain 115(psout) 121 + 130: 6(float) Load 129 + Store 128(Depth) 130 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out new file mode 100644 index 00000000..40546103 --- /dev/null +++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out @@ -0,0 +1,720 @@ +hlsl.samplecmplevelzero.array.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r10' (temp float) +0:42 textureLod (global float) +0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) +0:42 'g_tTex1df4a' (uniform texture1DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 0.000000 +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r12' (temp float) +0:43 textureLod (global float) +0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) +0:43 'g_tTex1di4a' (uniform itexture1DArray) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 0.000000 +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r14' (temp float) +0:44 textureLod (global float) +0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) +0:44 'g_tTex1du4a' (uniform utexture1DArray) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 0.000000 +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r30' (temp float) +0:47 textureLod (global float) +0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) +0:47 'g_tTex2df4a' (uniform texture2DArray) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:47 Constant: +0:47 0.750000 +0:47 Constant: +0:47 0.000000 +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r32' (temp float) +0:48 textureLod (global float) +0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) +0:48 'g_tTex2di4a' (uniform itexture2DArray) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:48 Constant: +0:48 0.750000 +0:48 Constant: +0:48 0.000000 +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r34' (temp float) +0:49 textureLod (global float) +0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) +0:49 'g_tTex2du4a' (uniform utexture2DArray) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:49 Constant: +0:49 0.750000 +0:49 Constant: +0:49 0.000000 +0:52 Sequence +0:52 move second child to first child (temp float) +0:52 'r60' (temp float) +0:52 textureLod (global float) +0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) +0:52 'g_tTexcdf4a' (uniform textureCubeArray) +0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:52 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:52 Constant: +0:52 0.750000 +0:52 Constant: +0:52 0.000000 +0:53 Sequence +0:53 move second child to first child (temp float) +0:53 'r62' (temp float) +0:53 textureLod (global float) +0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) +0:53 'g_tTexcdi4a' (uniform itextureCubeArray) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:53 Constant: +0:53 0.750000 +0:53 Constant: +0:53 0.000000 +0:54 Sequence +0:54 move second child to first child (temp float) +0:54 'r64' (temp float) +0:54 textureLod (global float) +0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) +0:54 'g_tTexcdu4a' (uniform utextureCubeArray) +0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:54 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:54 Constant: +0:54 0.750000 +0:54 Constant: +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 Depth}) +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1.000000 +0:56 1.000000 +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) +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 Sequence +0:59 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r10' (temp float) +0:42 textureLod (global float) +0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) +0:42 'g_tTex1df4a' (uniform texture1DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 0.000000 +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r12' (temp float) +0:43 textureLod (global float) +0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) +0:43 'g_tTex1di4a' (uniform itexture1DArray) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 0.000000 +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r14' (temp float) +0:44 textureLod (global float) +0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) +0:44 'g_tTex1du4a' (uniform utexture1DArray) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 0.000000 +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r30' (temp float) +0:47 textureLod (global float) +0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) +0:47 'g_tTex2df4a' (uniform texture2DArray) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:47 Constant: +0:47 0.750000 +0:47 Constant: +0:47 0.000000 +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r32' (temp float) +0:48 textureLod (global float) +0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) +0:48 'g_tTex2di4a' (uniform itexture2DArray) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:48 Constant: +0:48 0.750000 +0:48 Constant: +0:48 0.000000 +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r34' (temp float) +0:49 textureLod (global float) +0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) +0:49 'g_tTex2du4a' (uniform utexture2DArray) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:49 Constant: +0:49 0.750000 +0:49 Constant: +0:49 0.000000 +0:52 Sequence +0:52 move second child to first child (temp float) +0:52 'r60' (temp float) +0:52 textureLod (global float) +0:52 Construct combined texture-sampler (temp samplerCubeArrayShadow) +0:52 'g_tTexcdf4a' (uniform textureCubeArray) +0:52 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:52 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:52 Constant: +0:52 0.750000 +0:52 Constant: +0:52 0.000000 +0:53 Sequence +0:53 move second child to first child (temp float) +0:53 'r62' (temp float) +0:53 textureLod (global float) +0:53 Construct combined texture-sampler (temp isamplerCubeArrayShadow) +0:53 'g_tTexcdi4a' (uniform itextureCubeArray) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:53 Constant: +0:53 0.750000 +0:53 Constant: +0:53 0.000000 +0:54 Sequence +0:54 move second child to first child (temp float) +0:54 'r64' (temp float) +0:54 textureLod (global float) +0:54 Construct combined texture-sampler (temp usamplerCubeArrayShadow) +0:54 'g_tTexcdu4a' (uniform utextureCubeArray) +0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:54 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:54 Constant: +0:54 0.750000 +0:54 Constant: +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 Depth}) +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1.000000 +0:56 1.000000 +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) +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 Sequence +0:59 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 212 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 168 172 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r10" + Name 11 "g_tTex1df4a" + Name 15 "g_sSamp" + Name 32 "r12" + Name 36 "g_tTex1di4a" + Name 47 "r14" + Name 51 "g_tTex1du4a" + Name 62 "r30" + Name 65 "g_tTex2df4a" + Name 80 "r32" + Name 83 "g_tTex2di4a" + Name 95 "r34" + Name 98 "g_tTex2du4a" + Name 110 "r60" + Name 113 "g_tTexcdf4a" + Name 127 "r62" + Name 130 "g_tTexcdi4a" + Name 142 "r64" + Name 145 "g_tTexcdu4a" + Name 157 "PS_OUTPUT" + MemberName 157(PS_OUTPUT) 0 "Color" + MemberName 157(PS_OUTPUT) 1 "Depth" + Name 159 "psout" + Name 168 "Color" + Name 172 "Depth" + Name 178 "g_tTex1df4" + Name 181 "g_tTex1di4" + Name 184 "g_tTex1du4" + Name 187 "g_tTex2df4" + Name 190 "g_tTex2di4" + Name 193 "g_tTex2du4" + Name 196 "g_tTex3df4" + Name 199 "g_tTex3di4" + Name 202 "g_tTex3du4" + Name 205 "g_tTexcdf4" + Name 208 "g_tTexcdi4" + Name 211 "g_tTexcdu4" + Decorate 11(g_tTex1df4a) DescriptorSet 0 + Decorate 15(g_sSamp) DescriptorSet 0 + Decorate 15(g_sSamp) Binding 0 + Decorate 36(g_tTex1di4a) DescriptorSet 0 + Decorate 51(g_tTex1du4a) DescriptorSet 0 + Decorate 65(g_tTex2df4a) DescriptorSet 0 + Decorate 83(g_tTex2di4a) DescriptorSet 0 + Decorate 98(g_tTex2du4a) DescriptorSet 0 + Decorate 113(g_tTexcdf4a) DescriptorSet 0 + Decorate 130(g_tTexcdi4a) DescriptorSet 0 + Decorate 145(g_tTexcdu4a) DescriptorSet 0 + Decorate 168(Color) Location 0 + Decorate 172(Depth) BuiltIn FragDepth + Decorate 178(g_tTex1df4) DescriptorSet 0 + Decorate 178(g_tTex1df4) Binding 0 + Decorate 181(g_tTex1di4) DescriptorSet 0 + Decorate 184(g_tTex1du4) DescriptorSet 0 + Decorate 187(g_tTex2df4) DescriptorSet 0 + Decorate 190(g_tTex2di4) DescriptorSet 0 + Decorate 193(g_tTex2du4) DescriptorSet 0 + Decorate 196(g_tTex3df4) DescriptorSet 0 + Decorate 199(g_tTex3di4) DescriptorSet 0 + Decorate 202(g_tTex3du4) DescriptorSet 0 + Decorate 205(g_tTexcdf4) DescriptorSet 0 + Decorate 208(g_tTexcdi4) DescriptorSet 0 + Decorate 211(g_tTexcdu4) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D array sampled format:Unknown + 10: TypePointer UniformConstant 9 + 11(g_tTex1df4a): 10(ptr) Variable UniformConstant + 13: TypeSampler + 14: TypePointer UniformConstant 13 + 15(g_sSamp): 14(ptr) Variable UniformConstant + 17: TypeImage 6(float) 1D depth array sampled format:Unknown + 18: TypeSampledImage 17 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: 6(float) Constant 1061158912 + 25: TypeVector 6(float) 3 + 29: 6(float) Constant 0 + 33: TypeInt 32 1 + 34: TypeImage 33(int) 1D array sampled format:Unknown + 35: TypePointer UniformConstant 34 + 36(g_tTex1di4a): 35(ptr) Variable UniformConstant + 39: TypeImage 33(int) 1D depth array sampled format:Unknown + 40: TypeSampledImage 39 + 48: TypeInt 32 0 + 49: TypeImage 48(int) 1D array sampled format:Unknown + 50: TypePointer UniformConstant 49 + 51(g_tTex1du4a): 50(ptr) Variable UniformConstant + 54: TypeImage 48(int) 1D depth array sampled format:Unknown + 55: TypeSampledImage 54 + 63: TypeImage 6(float) 2D array sampled format:Unknown + 64: TypePointer UniformConstant 63 + 65(g_tTex2df4a): 64(ptr) Variable UniformConstant + 68: TypeImage 6(float) 2D depth array sampled format:Unknown + 69: TypeSampledImage 68 + 71: 6(float) Constant 1050253722 + 72: 25(fvec3) ConstantComposite 21 22 71 + 73: TypeVector 6(float) 4 + 81: TypeImage 33(int) 2D array sampled format:Unknown + 82: TypePointer UniformConstant 81 + 83(g_tTex2di4a): 82(ptr) Variable UniformConstant + 86: TypeImage 33(int) 2D depth array sampled format:Unknown + 87: TypeSampledImage 86 + 96: TypeImage 48(int) 2D array sampled format:Unknown + 97: TypePointer UniformConstant 96 + 98(g_tTex2du4a): 97(ptr) Variable UniformConstant + 101: TypeImage 48(int) 2D depth array sampled format:Unknown + 102: TypeSampledImage 101 + 111: TypeImage 6(float) Cube array sampled format:Unknown + 112: TypePointer UniformConstant 111 +113(g_tTexcdf4a): 112(ptr) Variable UniformConstant + 116: TypeImage 6(float) Cube depth array sampled format:Unknown + 117: TypeSampledImage 116 + 119: 6(float) Constant 1053609165 + 120: 73(fvec4) ConstantComposite 21 22 71 119 + 128: TypeImage 33(int) Cube array sampled format:Unknown + 129: TypePointer UniformConstant 128 +130(g_tTexcdi4a): 129(ptr) Variable UniformConstant + 133: TypeImage 33(int) Cube depth array sampled format:Unknown + 134: TypeSampledImage 133 + 143: TypeImage 48(int) Cube array sampled format:Unknown + 144: TypePointer UniformConstant 143 +145(g_tTexcdu4a): 144(ptr) Variable UniformConstant + 148: TypeImage 48(int) Cube depth array sampled format:Unknown + 149: TypeSampledImage 148 + 157(PS_OUTPUT): TypeStruct 73(fvec4) 6(float) + 158: TypePointer Function 157(PS_OUTPUT) + 160: 33(int) Constant 0 + 161: 6(float) Constant 1065353216 + 162: 73(fvec4) ConstantComposite 161 161 161 161 + 163: TypePointer Function 73(fvec4) + 165: 33(int) Constant 1 + 167: TypePointer Output 73(fvec4) + 168(Color): 167(ptr) Variable Output + 171: TypePointer Output 6(float) + 172(Depth): 171(ptr) Variable Output + 176: TypeImage 6(float) 1D sampled format:Unknown + 177: TypePointer UniformConstant 176 + 178(g_tTex1df4): 177(ptr) Variable UniformConstant + 179: TypeImage 33(int) 1D sampled format:Unknown + 180: TypePointer UniformConstant 179 + 181(g_tTex1di4): 180(ptr) Variable UniformConstant + 182: TypeImage 48(int) 1D sampled format:Unknown + 183: TypePointer UniformConstant 182 + 184(g_tTex1du4): 183(ptr) Variable UniformConstant + 185: TypeImage 6(float) 2D sampled format:Unknown + 186: TypePointer UniformConstant 185 + 187(g_tTex2df4): 186(ptr) Variable UniformConstant + 188: TypeImage 33(int) 2D sampled format:Unknown + 189: TypePointer UniformConstant 188 + 190(g_tTex2di4): 189(ptr) Variable UniformConstant + 191: TypeImage 48(int) 2D sampled format:Unknown + 192: TypePointer UniformConstant 191 + 193(g_tTex2du4): 192(ptr) Variable UniformConstant + 194: TypeImage 6(float) 3D sampled format:Unknown + 195: TypePointer UniformConstant 194 + 196(g_tTex3df4): 195(ptr) Variable UniformConstant + 197: TypeImage 33(int) 3D sampled format:Unknown + 198: TypePointer UniformConstant 197 + 199(g_tTex3di4): 198(ptr) Variable UniformConstant + 200: TypeImage 48(int) 3D sampled format:Unknown + 201: TypePointer UniformConstant 200 + 202(g_tTex3du4): 201(ptr) Variable UniformConstant + 203: TypeImage 6(float) Cube sampled format:Unknown + 204: TypePointer UniformConstant 203 + 205(g_tTexcdf4): 204(ptr) Variable UniformConstant + 206: TypeImage 33(int) Cube sampled format:Unknown + 207: TypePointer UniformConstant 206 + 208(g_tTexcdi4): 207(ptr) Variable UniformConstant + 209: TypeImage 48(int) Cube sampled format:Unknown + 210: TypePointer UniformConstant 209 + 211(g_tTexcdu4): 210(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 8(r10): 7(ptr) Variable Function + 32(r12): 7(ptr) Variable Function + 47(r14): 7(ptr) Variable Function + 62(r30): 7(ptr) Variable Function + 80(r32): 7(ptr) Variable Function + 95(r34): 7(ptr) Variable Function + 110(r60): 7(ptr) Variable Function + 127(r62): 7(ptr) Variable Function + 142(r64): 7(ptr) Variable Function + 159(psout): 158(ptr) Variable Function + 12: 9 Load 11(g_tTex1df4a) + 16: 13 Load 15(g_sSamp) + 19: 18 SampledImage 12 16 + 26: 6(float) CompositeExtract 23 0 + 27: 6(float) CompositeExtract 23 1 + 28: 25(fvec3) CompositeConstruct 26 27 24 + 30: 6(float) CompositeExtract 28 2 + 31: 6(float) ImageSampleDrefExplicitLod 19 28 30 Lod 29 + Store 8(r10) 31 + 37: 34 Load 36(g_tTex1di4a) + 38: 13 Load 15(g_sSamp) + 41: 40 SampledImage 37 38 + 42: 6(float) CompositeExtract 23 0 + 43: 6(float) CompositeExtract 23 1 + 44: 25(fvec3) CompositeConstruct 42 43 24 + 45: 6(float) CompositeExtract 44 2 + 46: 6(float) ImageSampleDrefExplicitLod 41 44 45 Lod 29 + Store 32(r12) 46 + 52: 49 Load 51(g_tTex1du4a) + 53: 13 Load 15(g_sSamp) + 56: 55 SampledImage 52 53 + 57: 6(float) CompositeExtract 23 0 + 58: 6(float) CompositeExtract 23 1 + 59: 25(fvec3) CompositeConstruct 57 58 24 + 60: 6(float) CompositeExtract 59 2 + 61: 6(float) ImageSampleDrefExplicitLod 56 59 60 Lod 29 + Store 47(r14) 61 + 66: 63 Load 65(g_tTex2df4a) + 67: 13 Load 15(g_sSamp) + 70: 69 SampledImage 66 67 + 74: 6(float) CompositeExtract 72 0 + 75: 6(float) CompositeExtract 72 1 + 76: 6(float) CompositeExtract 72 2 + 77: 73(fvec4) CompositeConstruct 74 75 76 24 + 78: 6(float) CompositeExtract 77 3 + 79: 6(float) ImageSampleDrefExplicitLod 70 77 78 Lod 29 + Store 62(r30) 79 + 84: 81 Load 83(g_tTex2di4a) + 85: 13 Load 15(g_sSamp) + 88: 87 SampledImage 84 85 + 89: 6(float) CompositeExtract 72 0 + 90: 6(float) CompositeExtract 72 1 + 91: 6(float) CompositeExtract 72 2 + 92: 73(fvec4) CompositeConstruct 89 90 91 24 + 93: 6(float) CompositeExtract 92 3 + 94: 6(float) ImageSampleDrefExplicitLod 88 92 93 Lod 29 + Store 80(r32) 94 + 99: 96 Load 98(g_tTex2du4a) + 100: 13 Load 15(g_sSamp) + 103: 102 SampledImage 99 100 + 104: 6(float) CompositeExtract 72 0 + 105: 6(float) CompositeExtract 72 1 + 106: 6(float) CompositeExtract 72 2 + 107: 73(fvec4) CompositeConstruct 104 105 106 24 + 108: 6(float) CompositeExtract 107 3 + 109: 6(float) ImageSampleDrefExplicitLod 103 107 108 Lod 29 + Store 95(r34) 109 + 114: 111 Load 113(g_tTexcdf4a) + 115: 13 Load 15(g_sSamp) + 118: 117 SampledImage 114 115 + 121: 6(float) CompositeExtract 120 0 + 122: 6(float) CompositeExtract 120 1 + 123: 6(float) CompositeExtract 120 2 + 124: 6(float) CompositeExtract 120 3 + 125: 73(fvec4) CompositeConstruct 121 122 123 124 + 126: 6(float) ImageSampleDrefExplicitLod 118 125 24 Lod 24 + Store 110(r60) 126 + 131: 128 Load 130(g_tTexcdi4a) + 132: 13 Load 15(g_sSamp) + 135: 134 SampledImage 131 132 + 136: 6(float) CompositeExtract 120 0 + 137: 6(float) CompositeExtract 120 1 + 138: 6(float) CompositeExtract 120 2 + 139: 6(float) CompositeExtract 120 3 + 140: 73(fvec4) CompositeConstruct 136 137 138 139 + 141: 6(float) ImageSampleDrefExplicitLod 135 140 24 Lod 24 + Store 127(r62) 141 + 146: 143 Load 145(g_tTexcdu4a) + 147: 13 Load 15(g_sSamp) + 150: 149 SampledImage 146 147 + 151: 6(float) CompositeExtract 120 0 + 152: 6(float) CompositeExtract 120 1 + 153: 6(float) CompositeExtract 120 2 + 154: 6(float) CompositeExtract 120 3 + 155: 73(fvec4) CompositeConstruct 151 152 153 154 + 156: 6(float) ImageSampleDrefExplicitLod 150 155 24 Lod 24 + Store 142(r64) 156 + 164: 163(ptr) AccessChain 159(psout) 160 + Store 164 162 + 166: 7(ptr) AccessChain 159(psout) 165 + Store 166 161 + 169: 163(ptr) AccessChain 159(psout) 160 + 170: 73(fvec4) Load 169 + Store 168(Color) 170 + 173: 7(ptr) AccessChain 159(psout) 165 + 174: 6(float) Load 173 + Store 172(Depth) 174 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out new file mode 100644 index 00000000..a5923367 --- /dev/null +++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out @@ -0,0 +1,691 @@ +hlsl.samplecmplevelzero.basic.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r00' (temp float) +0:42 textureLod (global float) +0:42 Construct combined texture-sampler (temp sampler1DShadow) +0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec2 (temp 2-component vector of float) +0:42 Constant: +0:42 0.100000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 0.000000 +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r02' (temp float) +0:43 textureLod (global float) +0:43 Construct combined texture-sampler (temp isampler1DShadow) +0:43 'g_tTex1di4' (uniform itexture1D) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec2 (temp 2-component vector of float) +0:43 Constant: +0:43 0.100000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 0.000000 +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r04' (temp float) +0:44 textureLod (global float) +0:44 Construct combined texture-sampler (temp usampler1DShadow) +0:44 'g_tTex1du4' (uniform utexture1D) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec2 (temp 2-component vector of float) +0:44 Constant: +0:44 0.100000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 0.000000 +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r20' (temp float) +0:47 textureLod (global float) +0:47 Construct combined texture-sampler (temp sampler2DShadow) +0:47 'g_tTex2df4' (uniform texture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:47 Constant: +0:47 0.750000 +0:47 Constant: +0:47 0.000000 +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r22' (temp float) +0:48 textureLod (global float) +0:48 Construct combined texture-sampler (temp isampler2DShadow) +0:48 'g_tTex2di4' (uniform itexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:48 Constant: +0:48 0.750000 +0:48 Constant: +0:48 0.000000 +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r24' (temp float) +0:49 textureLod (global float) +0:49 Construct combined texture-sampler (temp usampler2DShadow) +0:49 'g_tTex2du4' (uniform utexture2D) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:49 Constant: +0:49 0.750000 +0:49 Constant: +0:49 0.000000 +0:53 Sequence +0:53 move second child to first child (temp float) +0:53 'r50' (temp float) +0:53 textureLod (global float) +0:53 Construct combined texture-sampler (temp samplerCubeShadow) +0:53 'g_tTexcdf4' (uniform textureCube) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:53 Constant: +0:53 0.750000 +0:53 Constant: +0:53 0.000000 +0:54 Sequence +0:54 move second child to first child (temp float) +0:54 'r52' (temp float) +0:54 textureLod (global float) +0:54 Construct combined texture-sampler (temp isamplerCubeShadow) +0:54 'g_tTexcdi4' (uniform itextureCube) +0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:54 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:54 Constant: +0:54 0.750000 +0:54 Constant: +0:54 0.000000 +0:55 Sequence +0:55 move second child to first child (temp float) +0:55 'r54' (temp float) +0:55 textureLod (global float) +0:55 Construct combined texture-sampler (temp usamplerCubeShadow) +0:55 'g_tTexcdu4' (uniform utextureCube) +0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:55 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:55 Constant: +0:55 0.750000 +0:55 Constant: +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 Depth}) +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1.000000 +0:57 1.000000 +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) +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 Sequence +0:60 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r00' (temp float) +0:42 textureLod (global float) +0:42 Construct combined texture-sampler (temp sampler1DShadow) +0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec2 (temp 2-component vector of float) +0:42 Constant: +0:42 0.100000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 0.000000 +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r02' (temp float) +0:43 textureLod (global float) +0:43 Construct combined texture-sampler (temp isampler1DShadow) +0:43 'g_tTex1di4' (uniform itexture1D) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec2 (temp 2-component vector of float) +0:43 Constant: +0:43 0.100000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 0.000000 +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r04' (temp float) +0:44 textureLod (global float) +0:44 Construct combined texture-sampler (temp usampler1DShadow) +0:44 'g_tTex1du4' (uniform utexture1D) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec2 (temp 2-component vector of float) +0:44 Constant: +0:44 0.100000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 0.000000 +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r20' (temp float) +0:47 textureLod (global float) +0:47 Construct combined texture-sampler (temp sampler2DShadow) +0:47 'g_tTex2df4' (uniform texture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:47 Constant: +0:47 0.750000 +0:47 Constant: +0:47 0.000000 +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r22' (temp float) +0:48 textureLod (global float) +0:48 Construct combined texture-sampler (temp isampler2DShadow) +0:48 'g_tTex2di4' (uniform itexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:48 Constant: +0:48 0.750000 +0:48 Constant: +0:48 0.000000 +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r24' (temp float) +0:49 textureLod (global float) +0:49 Construct combined texture-sampler (temp usampler2DShadow) +0:49 'g_tTex2du4' (uniform utexture2D) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:49 Constant: +0:49 0.750000 +0:49 Constant: +0:49 0.000000 +0:53 Sequence +0:53 move second child to first child (temp float) +0:53 'r50' (temp float) +0:53 textureLod (global float) +0:53 Construct combined texture-sampler (temp samplerCubeShadow) +0:53 'g_tTexcdf4' (uniform textureCube) +0:53 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:53 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:53 Constant: +0:53 0.750000 +0:53 Constant: +0:53 0.000000 +0:54 Sequence +0:54 move second child to first child (temp float) +0:54 'r52' (temp float) +0:54 textureLod (global float) +0:54 Construct combined texture-sampler (temp isamplerCubeShadow) +0:54 'g_tTexcdi4' (uniform itextureCube) +0:54 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:54 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:54 Constant: +0:54 0.750000 +0:54 Constant: +0:54 0.000000 +0:55 Sequence +0:55 move second child to first child (temp float) +0:55 'r54' (temp float) +0:55 textureLod (global float) +0:55 Construct combined texture-sampler (temp usamplerCubeShadow) +0:55 'g_tTexcdu4' (uniform utextureCube) +0:55 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:55 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:55 Constant: +0:55 0.750000 +0:55 Constant: +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 Depth}) +0:57 Constant: +0:57 0 (const int) +0:57 Constant: +0:57 1.000000 +0:57 1.000000 +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) +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 Sequence +0:60 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 201 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 157 161 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r00" + Name 11 "g_tTex1df4" + Name 15 "g_sSamp" + Name 27 "r02" + Name 31 "g_tTex1di4" + Name 40 "r04" + Name 44 "g_tTex1du4" + Name 53 "r20" + Name 56 "g_tTex2df4" + Name 70 "r22" + Name 73 "g_tTex2di4" + Name 84 "r24" + Name 87 "g_tTex2du4" + Name 98 "r50" + Name 101 "g_tTexcdf4" + Name 116 "r52" + Name 119 "g_tTexcdi4" + Name 131 "r54" + Name 134 "g_tTexcdu4" + Name 146 "PS_OUTPUT" + MemberName 146(PS_OUTPUT) 0 "Color" + MemberName 146(PS_OUTPUT) 1 "Depth" + Name 148 "psout" + Name 157 "Color" + Name 161 "Depth" + Name 167 "g_tTex3df4" + Name 170 "g_tTex3di4" + Name 173 "g_tTex3du4" + Name 176 "g_tTex1df4a" + Name 179 "g_tTex1di4a" + Name 182 "g_tTex1du4a" + Name 185 "g_tTex2df4a" + Name 188 "g_tTex2di4a" + Name 191 "g_tTex2du4a" + Name 194 "g_tTexcdf4a" + Name 197 "g_tTexcdi4a" + Name 200 "g_tTexcdu4a" + Decorate 11(g_tTex1df4) DescriptorSet 0 + Decorate 11(g_tTex1df4) Binding 0 + Decorate 15(g_sSamp) DescriptorSet 0 + Decorate 15(g_sSamp) Binding 0 + Decorate 31(g_tTex1di4) DescriptorSet 0 + Decorate 44(g_tTex1du4) DescriptorSet 0 + Decorate 56(g_tTex2df4) DescriptorSet 0 + Decorate 73(g_tTex2di4) DescriptorSet 0 + Decorate 87(g_tTex2du4) DescriptorSet 0 + Decorate 101(g_tTexcdf4) DescriptorSet 0 + Decorate 119(g_tTexcdi4) DescriptorSet 0 + Decorate 134(g_tTexcdu4) DescriptorSet 0 + Decorate 157(Color) Location 0 + Decorate 161(Depth) BuiltIn FragDepth + Decorate 167(g_tTex3df4) DescriptorSet 0 + Decorate 170(g_tTex3di4) DescriptorSet 0 + Decorate 173(g_tTex3du4) DescriptorSet 0 + Decorate 176(g_tTex1df4a) DescriptorSet 0 + Decorate 179(g_tTex1di4a) DescriptorSet 0 + Decorate 182(g_tTex1du4a) DescriptorSet 0 + Decorate 185(g_tTex2df4a) DescriptorSet 0 + Decorate 188(g_tTex2di4a) DescriptorSet 0 + Decorate 191(g_tTex2du4a) DescriptorSet 0 + Decorate 194(g_tTexcdf4a) DescriptorSet 0 + Decorate 197(g_tTexcdi4a) DescriptorSet 0 + Decorate 200(g_tTexcdu4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D sampled format:Unknown + 10: TypePointer UniformConstant 9 + 11(g_tTex1df4): 10(ptr) Variable UniformConstant + 13: TypeSampler + 14: TypePointer UniformConstant 13 + 15(g_sSamp): 14(ptr) Variable UniformConstant + 17: TypeImage 6(float) 1D depth sampled format:Unknown + 18: TypeSampledImage 17 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1061158912 + 22: TypeVector 6(float) 2 + 24: 6(float) Constant 0 + 28: TypeInt 32 1 + 29: TypeImage 28(int) 1D sampled format:Unknown + 30: TypePointer UniformConstant 29 + 31(g_tTex1di4): 30(ptr) Variable UniformConstant + 34: TypeImage 28(int) 1D depth sampled format:Unknown + 35: TypeSampledImage 34 + 41: TypeInt 32 0 + 42: TypeImage 41(int) 1D sampled format:Unknown + 43: TypePointer UniformConstant 42 + 44(g_tTex1du4): 43(ptr) Variable UniformConstant + 47: TypeImage 41(int) 1D depth sampled format:Unknown + 48: TypeSampledImage 47 + 54: TypeImage 6(float) 2D sampled format:Unknown + 55: TypePointer UniformConstant 54 + 56(g_tTex2df4): 55(ptr) Variable UniformConstant + 59: TypeImage 6(float) 2D depth sampled format:Unknown + 60: TypeSampledImage 59 + 62: 6(float) Constant 1045220557 + 63: 22(fvec2) ConstantComposite 20 62 + 64: TypeVector 6(float) 3 + 71: TypeImage 28(int) 2D sampled format:Unknown + 72: TypePointer UniformConstant 71 + 73(g_tTex2di4): 72(ptr) Variable UniformConstant + 76: TypeImage 28(int) 2D depth sampled format:Unknown + 77: TypeSampledImage 76 + 85: TypeImage 41(int) 2D sampled format:Unknown + 86: TypePointer UniformConstant 85 + 87(g_tTex2du4): 86(ptr) Variable UniformConstant + 90: TypeImage 41(int) 2D depth sampled format:Unknown + 91: TypeSampledImage 90 + 99: TypeImage 6(float) Cube sampled format:Unknown + 100: TypePointer UniformConstant 99 + 101(g_tTexcdf4): 100(ptr) Variable UniformConstant + 104: TypeImage 6(float) Cube depth sampled format:Unknown + 105: TypeSampledImage 104 + 107: 6(float) Constant 1050253722 + 108: 64(fvec3) ConstantComposite 20 62 107 + 109: TypeVector 6(float) 4 + 117: TypeImage 28(int) Cube sampled format:Unknown + 118: TypePointer UniformConstant 117 + 119(g_tTexcdi4): 118(ptr) Variable UniformConstant + 122: TypeImage 28(int) Cube depth sampled format:Unknown + 123: TypeSampledImage 122 + 132: TypeImage 41(int) Cube sampled format:Unknown + 133: TypePointer UniformConstant 132 + 134(g_tTexcdu4): 133(ptr) Variable UniformConstant + 137: TypeImage 41(int) Cube depth sampled format:Unknown + 138: TypeSampledImage 137 + 146(PS_OUTPUT): TypeStruct 109(fvec4) 6(float) + 147: TypePointer Function 146(PS_OUTPUT) + 149: 28(int) Constant 0 + 150: 6(float) Constant 1065353216 + 151: 109(fvec4) ConstantComposite 150 150 150 150 + 152: TypePointer Function 109(fvec4) + 154: 28(int) Constant 1 + 156: TypePointer Output 109(fvec4) + 157(Color): 156(ptr) Variable Output + 160: TypePointer Output 6(float) + 161(Depth): 160(ptr) Variable Output + 165: TypeImage 6(float) 3D sampled format:Unknown + 166: TypePointer UniformConstant 165 + 167(g_tTex3df4): 166(ptr) Variable UniformConstant + 168: TypeImage 28(int) 3D sampled format:Unknown + 169: TypePointer UniformConstant 168 + 170(g_tTex3di4): 169(ptr) Variable UniformConstant + 171: TypeImage 41(int) 3D sampled format:Unknown + 172: TypePointer UniformConstant 171 + 173(g_tTex3du4): 172(ptr) Variable UniformConstant + 174: TypeImage 6(float) 1D array sampled format:Unknown + 175: TypePointer UniformConstant 174 +176(g_tTex1df4a): 175(ptr) Variable UniformConstant + 177: TypeImage 28(int) 1D array sampled format:Unknown + 178: TypePointer UniformConstant 177 +179(g_tTex1di4a): 178(ptr) Variable UniformConstant + 180: TypeImage 41(int) 1D array sampled format:Unknown + 181: TypePointer UniformConstant 180 +182(g_tTex1du4a): 181(ptr) Variable UniformConstant + 183: TypeImage 6(float) 2D array sampled format:Unknown + 184: TypePointer UniformConstant 183 +185(g_tTex2df4a): 184(ptr) Variable UniformConstant + 186: TypeImage 28(int) 2D array sampled format:Unknown + 187: TypePointer UniformConstant 186 +188(g_tTex2di4a): 187(ptr) Variable UniformConstant + 189: TypeImage 41(int) 2D array sampled format:Unknown + 190: TypePointer UniformConstant 189 +191(g_tTex2du4a): 190(ptr) Variable UniformConstant + 192: TypeImage 6(float) Cube array sampled format:Unknown + 193: TypePointer UniformConstant 192 +194(g_tTexcdf4a): 193(ptr) Variable UniformConstant + 195: TypeImage 28(int) Cube array sampled format:Unknown + 196: TypePointer UniformConstant 195 +197(g_tTexcdi4a): 196(ptr) Variable UniformConstant + 198: TypeImage 41(int) Cube array sampled format:Unknown + 199: TypePointer UniformConstant 198 +200(g_tTexcdu4a): 199(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 8(r00): 7(ptr) Variable Function + 27(r02): 7(ptr) Variable Function + 40(r04): 7(ptr) Variable Function + 53(r20): 7(ptr) Variable Function + 70(r22): 7(ptr) Variable Function + 84(r24): 7(ptr) Variable Function + 98(r50): 7(ptr) Variable Function + 116(r52): 7(ptr) Variable Function + 131(r54): 7(ptr) Variable Function + 148(psout): 147(ptr) Variable Function + 12: 9 Load 11(g_tTex1df4) + 16: 13 Load 15(g_sSamp) + 19: 18 SampledImage 12 16 + 23: 22(fvec2) CompositeConstruct 20 21 + 25: 6(float) CompositeExtract 23 1 + 26: 6(float) ImageSampleDrefExplicitLod 19 23 25 Lod 24 + Store 8(r00) 26 + 32: 29 Load 31(g_tTex1di4) + 33: 13 Load 15(g_sSamp) + 36: 35 SampledImage 32 33 + 37: 22(fvec2) CompositeConstruct 20 21 + 38: 6(float) CompositeExtract 37 1 + 39: 6(float) ImageSampleDrefExplicitLod 36 37 38 Lod 24 + Store 27(r02) 39 + 45: 42 Load 44(g_tTex1du4) + 46: 13 Load 15(g_sSamp) + 49: 48 SampledImage 45 46 + 50: 22(fvec2) CompositeConstruct 20 21 + 51: 6(float) CompositeExtract 50 1 + 52: 6(float) ImageSampleDrefExplicitLod 49 50 51 Lod 24 + Store 40(r04) 52 + 57: 54 Load 56(g_tTex2df4) + 58: 13 Load 15(g_sSamp) + 61: 60 SampledImage 57 58 + 65: 6(float) CompositeExtract 63 0 + 66: 6(float) CompositeExtract 63 1 + 67: 64(fvec3) CompositeConstruct 65 66 21 + 68: 6(float) CompositeExtract 67 2 + 69: 6(float) ImageSampleDrefExplicitLod 61 67 68 Lod 24 + Store 53(r20) 69 + 74: 71 Load 73(g_tTex2di4) + 75: 13 Load 15(g_sSamp) + 78: 77 SampledImage 74 75 + 79: 6(float) CompositeExtract 63 0 + 80: 6(float) CompositeExtract 63 1 + 81: 64(fvec3) CompositeConstruct 79 80 21 + 82: 6(float) CompositeExtract 81 2 + 83: 6(float) ImageSampleDrefExplicitLod 78 81 82 Lod 24 + Store 70(r22) 83 + 88: 85 Load 87(g_tTex2du4) + 89: 13 Load 15(g_sSamp) + 92: 91 SampledImage 88 89 + 93: 6(float) CompositeExtract 63 0 + 94: 6(float) CompositeExtract 63 1 + 95: 64(fvec3) CompositeConstruct 93 94 21 + 96: 6(float) CompositeExtract 95 2 + 97: 6(float) ImageSampleDrefExplicitLod 92 95 96 Lod 24 + Store 84(r24) 97 + 102: 99 Load 101(g_tTexcdf4) + 103: 13 Load 15(g_sSamp) + 106: 105 SampledImage 102 103 + 110: 6(float) CompositeExtract 108 0 + 111: 6(float) CompositeExtract 108 1 + 112: 6(float) CompositeExtract 108 2 + 113: 109(fvec4) CompositeConstruct 110 111 112 21 + 114: 6(float) CompositeExtract 113 3 + 115: 6(float) ImageSampleDrefExplicitLod 106 113 114 Lod 24 + Store 98(r50) 115 + 120: 117 Load 119(g_tTexcdi4) + 121: 13 Load 15(g_sSamp) + 124: 123 SampledImage 120 121 + 125: 6(float) CompositeExtract 108 0 + 126: 6(float) CompositeExtract 108 1 + 127: 6(float) CompositeExtract 108 2 + 128: 109(fvec4) CompositeConstruct 125 126 127 21 + 129: 6(float) CompositeExtract 128 3 + 130: 6(float) ImageSampleDrefExplicitLod 124 128 129 Lod 24 + Store 116(r52) 130 + 135: 132 Load 134(g_tTexcdu4) + 136: 13 Load 15(g_sSamp) + 139: 138 SampledImage 135 136 + 140: 6(float) CompositeExtract 108 0 + 141: 6(float) CompositeExtract 108 1 + 142: 6(float) CompositeExtract 108 2 + 143: 109(fvec4) CompositeConstruct 140 141 142 21 + 144: 6(float) CompositeExtract 143 3 + 145: 6(float) ImageSampleDrefExplicitLod 139 143 144 Lod 24 + Store 131(r54) 145 + 153: 152(ptr) AccessChain 148(psout) 149 + Store 153 151 + 155: 7(ptr) AccessChain 148(psout) 154 + Store 155 150 + 158: 152(ptr) AccessChain 148(psout) 149 + 159: 109(fvec4) Load 158 + Store 157(Color) 159 + 162: 7(ptr) AccessChain 148(psout) 154 + 163: 6(float) Load 162 + Store 161(Depth) 163 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out new file mode 100644 index 00000000..bfbfbb29 --- /dev/null +++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out @@ -0,0 +1,585 @@ +hlsl.samplecmplevelzero.offset.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r01' (temp float) +0:42 textureLodOffset (global float) +0:42 Construct combined texture-sampler (temp sampler1DShadow) +0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec2 (temp 2-component vector of float) +0:42 Constant: +0:42 0.100000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 0.000000 +0:42 Constant: +0:42 2 (const int) +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r03' (temp float) +0:43 textureLodOffset (global float) +0:43 Construct combined texture-sampler (temp isampler1DShadow) +0:43 'g_tTex1di4' (uniform itexture1D) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec2 (temp 2-component vector of float) +0:43 Constant: +0:43 0.100000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 0.000000 +0:43 Constant: +0:43 2 (const int) +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r05' (temp float) +0:44 textureLodOffset (global float) +0:44 Construct combined texture-sampler (temp usampler1DShadow) +0:44 'g_tTex1du4' (uniform utexture1D) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec2 (temp 2-component vector of float) +0:44 Constant: +0:44 0.100000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 0.000000 +0:44 Constant: +0:44 2 (const int) +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r21' (temp float) +0:47 textureLodOffset (global float) +0:47 Construct combined texture-sampler (temp sampler2DShadow) +0:47 'g_tTex2df4' (uniform texture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:47 Constant: +0:47 0.750000 +0:47 Constant: +0:47 0.000000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r23' (temp float) +0:48 textureLodOffset (global float) +0:48 Construct combined texture-sampler (temp isampler2DShadow) +0:48 'g_tTex2di4' (uniform itexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:48 Constant: +0:48 0.750000 +0:48 Constant: +0:48 0.000000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r25' (temp float) +0:49 textureLodOffset (global float) +0:49 Construct combined texture-sampler (temp usampler2DShadow) +0:49 'g_tTex2du4' (uniform utexture2D) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:49 Constant: +0:49 0.750000 +0:49 Constant: +0:49 0.000000 +0:? Constant: +0:? 2 (const int) +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 Depth}) +0:62 Constant: +0:62 0 (const int) +0:62 Constant: +0:62 1.000000 +0:62 1.000000 +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) +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 Sequence +0:65 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r01' (temp float) +0:42 textureLodOffset (global float) +0:42 Construct combined texture-sampler (temp sampler1DShadow) +0:42 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec2 (temp 2-component vector of float) +0:42 Constant: +0:42 0.100000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 0.000000 +0:42 Constant: +0:42 2 (const int) +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r03' (temp float) +0:43 textureLodOffset (global float) +0:43 Construct combined texture-sampler (temp isampler1DShadow) +0:43 'g_tTex1di4' (uniform itexture1D) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec2 (temp 2-component vector of float) +0:43 Constant: +0:43 0.100000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 0.000000 +0:43 Constant: +0:43 2 (const int) +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r05' (temp float) +0:44 textureLodOffset (global float) +0:44 Construct combined texture-sampler (temp usampler1DShadow) +0:44 'g_tTex1du4' (uniform utexture1D) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec2 (temp 2-component vector of float) +0:44 Constant: +0:44 0.100000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 0.000000 +0:44 Constant: +0:44 2 (const int) +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r21' (temp float) +0:47 textureLodOffset (global float) +0:47 Construct combined texture-sampler (temp sampler2DShadow) +0:47 'g_tTex2df4' (uniform texture2D) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:47 Constant: +0:47 0.750000 +0:47 Constant: +0:47 0.000000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r23' (temp float) +0:48 textureLodOffset (global float) +0:48 Construct combined texture-sampler (temp isampler2DShadow) +0:48 'g_tTex2di4' (uniform itexture2D) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:48 Constant: +0:48 0.750000 +0:48 Constant: +0:48 0.000000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r25' (temp float) +0:49 textureLodOffset (global float) +0:49 Construct combined texture-sampler (temp usampler2DShadow) +0:49 'g_tTex2du4' (uniform utexture2D) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:49 Constant: +0:49 0.750000 +0:49 Constant: +0:49 0.000000 +0:? Constant: +0:? 2 (const int) +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 Depth}) +0:62 Constant: +0:62 0 (const int) +0:62 Constant: +0:62 1.000000 +0:62 1.000000 +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) +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 Sequence +0:65 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 167 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 114 118 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r01" + Name 11 "g_tTex1df4" + Name 15 "g_sSamp" + Name 29 "r03" + Name 32 "g_tTex1di4" + Name 41 "r05" + Name 45 "g_tTex1du4" + Name 54 "r21" + Name 57 "g_tTex2df4" + Name 74 "r23" + Name 77 "g_tTex2di4" + Name 88 "r25" + Name 91 "g_tTex2du4" + Name 103 "PS_OUTPUT" + MemberName 103(PS_OUTPUT) 0 "Color" + MemberName 103(PS_OUTPUT) 1 "Depth" + Name 105 "psout" + Name 114 "Color" + Name 118 "Depth" + Name 124 "g_tTex3df4" + Name 127 "g_tTex3di4" + Name 130 "g_tTex3du4" + Name 133 "g_tTexcdf4" + Name 136 "g_tTexcdi4" + Name 139 "g_tTexcdu4" + Name 142 "g_tTex1df4a" + Name 145 "g_tTex1di4a" + Name 148 "g_tTex1du4a" + Name 151 "g_tTex2df4a" + Name 154 "g_tTex2di4a" + Name 157 "g_tTex2du4a" + Name 160 "g_tTexcdf4a" + Name 163 "g_tTexcdi4a" + Name 166 "g_tTexcdu4a" + Decorate 11(g_tTex1df4) DescriptorSet 0 + Decorate 11(g_tTex1df4) Binding 0 + Decorate 15(g_sSamp) DescriptorSet 0 + Decorate 15(g_sSamp) Binding 0 + Decorate 32(g_tTex1di4) DescriptorSet 0 + Decorate 45(g_tTex1du4) DescriptorSet 0 + Decorate 57(g_tTex2df4) DescriptorSet 0 + Decorate 77(g_tTex2di4) DescriptorSet 0 + Decorate 91(g_tTex2du4) DescriptorSet 0 + Decorate 114(Color) Location 0 + Decorate 118(Depth) BuiltIn FragDepth + Decorate 124(g_tTex3df4) DescriptorSet 0 + Decorate 127(g_tTex3di4) DescriptorSet 0 + Decorate 130(g_tTex3du4) DescriptorSet 0 + Decorate 133(g_tTexcdf4) DescriptorSet 0 + Decorate 136(g_tTexcdi4) DescriptorSet 0 + Decorate 139(g_tTexcdu4) DescriptorSet 0 + Decorate 142(g_tTex1df4a) DescriptorSet 0 + Decorate 145(g_tTex1di4a) DescriptorSet 0 + Decorate 148(g_tTex1du4a) DescriptorSet 0 + Decorate 151(g_tTex2df4a) DescriptorSet 0 + Decorate 154(g_tTex2di4a) DescriptorSet 0 + Decorate 157(g_tTex2du4a) DescriptorSet 0 + Decorate 160(g_tTexcdf4a) DescriptorSet 0 + Decorate 163(g_tTexcdi4a) DescriptorSet 0 + Decorate 166(g_tTexcdu4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D sampled format:Unknown + 10: TypePointer UniformConstant 9 + 11(g_tTex1df4): 10(ptr) Variable UniformConstant + 13: TypeSampler + 14: TypePointer UniformConstant 13 + 15(g_sSamp): 14(ptr) Variable UniformConstant + 17: TypeImage 6(float) 1D depth sampled format:Unknown + 18: TypeSampledImage 17 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1061158912 + 22: TypeVector 6(float) 2 + 24: 6(float) Constant 0 + 25: TypeInt 32 1 + 26: 25(int) Constant 2 + 30: TypeImage 25(int) 1D sampled format:Unknown + 31: TypePointer UniformConstant 30 + 32(g_tTex1di4): 31(ptr) Variable UniformConstant + 35: TypeImage 25(int) 1D depth sampled format:Unknown + 36: TypeSampledImage 35 + 42: TypeInt 32 0 + 43: TypeImage 42(int) 1D sampled format:Unknown + 44: TypePointer UniformConstant 43 + 45(g_tTex1du4): 44(ptr) Variable UniformConstant + 48: TypeImage 42(int) 1D depth sampled format:Unknown + 49: TypeSampledImage 48 + 55: TypeImage 6(float) 2D sampled format:Unknown + 56: TypePointer UniformConstant 55 + 57(g_tTex2df4): 56(ptr) Variable UniformConstant + 60: TypeImage 6(float) 2D depth sampled format:Unknown + 61: TypeSampledImage 60 + 63: 6(float) Constant 1045220557 + 64: 22(fvec2) ConstantComposite 20 63 + 65: TypeVector 6(float) 3 + 69: TypeVector 25(int) 2 + 70: 25(int) Constant 3 + 71: 69(ivec2) ConstantComposite 26 70 + 75: TypeImage 25(int) 2D sampled format:Unknown + 76: TypePointer UniformConstant 75 + 77(g_tTex2di4): 76(ptr) Variable UniformConstant + 80: TypeImage 25(int) 2D depth sampled format:Unknown + 81: TypeSampledImage 80 + 89: TypeImage 42(int) 2D sampled format:Unknown + 90: TypePointer UniformConstant 89 + 91(g_tTex2du4): 90(ptr) Variable UniformConstant + 94: TypeImage 42(int) 2D depth sampled format:Unknown + 95: TypeSampledImage 94 + 102: TypeVector 6(float) 4 + 103(PS_OUTPUT): TypeStruct 102(fvec4) 6(float) + 104: TypePointer Function 103(PS_OUTPUT) + 106: 25(int) Constant 0 + 107: 6(float) Constant 1065353216 + 108: 102(fvec4) ConstantComposite 107 107 107 107 + 109: TypePointer Function 102(fvec4) + 111: 25(int) Constant 1 + 113: TypePointer Output 102(fvec4) + 114(Color): 113(ptr) Variable Output + 117: TypePointer Output 6(float) + 118(Depth): 117(ptr) Variable Output + 122: TypeImage 6(float) 3D sampled format:Unknown + 123: TypePointer UniformConstant 122 + 124(g_tTex3df4): 123(ptr) Variable UniformConstant + 125: TypeImage 25(int) 3D sampled format:Unknown + 126: TypePointer UniformConstant 125 + 127(g_tTex3di4): 126(ptr) Variable UniformConstant + 128: TypeImage 42(int) 3D sampled format:Unknown + 129: TypePointer UniformConstant 128 + 130(g_tTex3du4): 129(ptr) Variable UniformConstant + 131: TypeImage 6(float) Cube sampled format:Unknown + 132: TypePointer UniformConstant 131 + 133(g_tTexcdf4): 132(ptr) Variable UniformConstant + 134: TypeImage 25(int) Cube sampled format:Unknown + 135: TypePointer UniformConstant 134 + 136(g_tTexcdi4): 135(ptr) Variable UniformConstant + 137: TypeImage 42(int) Cube sampled format:Unknown + 138: TypePointer UniformConstant 137 + 139(g_tTexcdu4): 138(ptr) Variable UniformConstant + 140: TypeImage 6(float) 1D array sampled format:Unknown + 141: TypePointer UniformConstant 140 +142(g_tTex1df4a): 141(ptr) Variable UniformConstant + 143: TypeImage 25(int) 1D array sampled format:Unknown + 144: TypePointer UniformConstant 143 +145(g_tTex1di4a): 144(ptr) Variable UniformConstant + 146: TypeImage 42(int) 1D array sampled format:Unknown + 147: TypePointer UniformConstant 146 +148(g_tTex1du4a): 147(ptr) Variable UniformConstant + 149: TypeImage 6(float) 2D array sampled format:Unknown + 150: TypePointer UniformConstant 149 +151(g_tTex2df4a): 150(ptr) Variable UniformConstant + 152: TypeImage 25(int) 2D array sampled format:Unknown + 153: TypePointer UniformConstant 152 +154(g_tTex2di4a): 153(ptr) Variable UniformConstant + 155: TypeImage 42(int) 2D array sampled format:Unknown + 156: TypePointer UniformConstant 155 +157(g_tTex2du4a): 156(ptr) Variable UniformConstant + 158: TypeImage 6(float) Cube array sampled format:Unknown + 159: TypePointer UniformConstant 158 +160(g_tTexcdf4a): 159(ptr) Variable UniformConstant + 161: TypeImage 25(int) Cube array sampled format:Unknown + 162: TypePointer UniformConstant 161 +163(g_tTexcdi4a): 162(ptr) Variable UniformConstant + 164: TypeImage 42(int) Cube array sampled format:Unknown + 165: TypePointer UniformConstant 164 +166(g_tTexcdu4a): 165(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 8(r01): 7(ptr) Variable Function + 29(r03): 7(ptr) Variable Function + 41(r05): 7(ptr) Variable Function + 54(r21): 7(ptr) Variable Function + 74(r23): 7(ptr) Variable Function + 88(r25): 7(ptr) Variable Function + 105(psout): 104(ptr) Variable Function + 12: 9 Load 11(g_tTex1df4) + 16: 13 Load 15(g_sSamp) + 19: 18 SampledImage 12 16 + 23: 22(fvec2) CompositeConstruct 20 21 + 27: 6(float) CompositeExtract 23 1 + 28: 6(float) ImageSampleDrefExplicitLod 19 23 27 Lod ConstOffset 24 26 + Store 8(r01) 28 + 33: 30 Load 32(g_tTex1di4) + 34: 13 Load 15(g_sSamp) + 37: 36 SampledImage 33 34 + 38: 22(fvec2) CompositeConstruct 20 21 + 39: 6(float) CompositeExtract 38 1 + 40: 6(float) ImageSampleDrefExplicitLod 37 38 39 Lod ConstOffset 24 26 + Store 29(r03) 40 + 46: 43 Load 45(g_tTex1du4) + 47: 13 Load 15(g_sSamp) + 50: 49 SampledImage 46 47 + 51: 22(fvec2) CompositeConstruct 20 21 + 52: 6(float) CompositeExtract 51 1 + 53: 6(float) ImageSampleDrefExplicitLod 50 51 52 Lod ConstOffset 24 26 + Store 41(r05) 53 + 58: 55 Load 57(g_tTex2df4) + 59: 13 Load 15(g_sSamp) + 62: 61 SampledImage 58 59 + 66: 6(float) CompositeExtract 64 0 + 67: 6(float) CompositeExtract 64 1 + 68: 65(fvec3) CompositeConstruct 66 67 21 + 72: 6(float) CompositeExtract 68 2 + 73: 6(float) ImageSampleDrefExplicitLod 62 68 72 Lod ConstOffset 24 71 + Store 54(r21) 73 + 78: 75 Load 77(g_tTex2di4) + 79: 13 Load 15(g_sSamp) + 82: 81 SampledImage 78 79 + 83: 6(float) CompositeExtract 64 0 + 84: 6(float) CompositeExtract 64 1 + 85: 65(fvec3) CompositeConstruct 83 84 21 + 86: 6(float) CompositeExtract 85 2 + 87: 6(float) ImageSampleDrefExplicitLod 82 85 86 Lod ConstOffset 24 71 + Store 74(r23) 87 + 92: 89 Load 91(g_tTex2du4) + 93: 13 Load 15(g_sSamp) + 96: 95 SampledImage 92 93 + 97: 6(float) CompositeExtract 64 0 + 98: 6(float) CompositeExtract 64 1 + 99: 65(fvec3) CompositeConstruct 97 98 21 + 100: 6(float) CompositeExtract 99 2 + 101: 6(float) ImageSampleDrefExplicitLod 96 99 100 Lod ConstOffset 24 71 + Store 88(r25) 101 + 110: 109(ptr) AccessChain 105(psout) 106 + Store 110 108 + 112: 7(ptr) AccessChain 105(psout) 111 + Store 112 107 + 115: 109(ptr) AccessChain 105(psout) 106 + 116: 102(fvec4) Load 115 + Store 114(Color) 116 + 119: 7(ptr) AccessChain 105(psout) 111 + 120: 6(float) Load 119 + Store 118(Depth) 120 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out new file mode 100644 index 00000000..0e38a7d6 --- /dev/null +++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out @@ -0,0 +1,608 @@ +hlsl.samplecmplevelzero.offsetarray.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r11' (temp float) +0:42 textureLodOffset (global float) +0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) +0:42 'g_tTex1df4a' (uniform texture1DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 0.000000 +0:42 Constant: +0:42 2 (const int) +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r13' (temp float) +0:43 textureLodOffset (global float) +0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) +0:43 'g_tTex1di4a' (uniform itexture1DArray) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 0.000000 +0:43 Constant: +0:43 2 (const int) +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r15' (temp float) +0:44 textureLodOffset (global float) +0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) +0:44 'g_tTex1du4a' (uniform utexture1DArray) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 0.000000 +0:44 Constant: +0:44 2 (const int) +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r31' (temp float) +0:47 textureLodOffset (global float) +0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) +0:47 'g_tTex2df4a' (uniform texture2DArray) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:47 Constant: +0:47 0.750000 +0:47 Constant: +0:47 0.000000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r33' (temp float) +0:48 textureLodOffset (global float) +0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) +0:48 'g_tTex2di4a' (uniform itexture2DArray) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:48 Constant: +0:48 0.750000 +0:48 Constant: +0:48 0.000000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r35' (temp float) +0:49 textureLodOffset (global float) +0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) +0:49 'g_tTex2du4a' (uniform utexture2DArray) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:49 Constant: +0:49 0.750000 +0:49 Constant: +0:49 0.000000 +0:? Constant: +0:? 2 (const int) +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 Depth}) +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1.000000 +0:63 1.000000 +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) +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 Sequence +0:66 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:38 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child (temp float) +0:42 'r11' (temp float) +0:42 textureLodOffset (global float) +0:42 Construct combined texture-sampler (temp sampler1DArrayShadow) +0:42 'g_tTex1df4a' (uniform texture1DArray) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:42 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:42 Constant: +0:42 0.750000 +0:42 Constant: +0:42 0.000000 +0:42 Constant: +0:42 2 (const int) +0:43 Sequence +0:43 move second child to first child (temp float) +0:43 'r13' (temp float) +0:43 textureLodOffset (global float) +0:43 Construct combined texture-sampler (temp isampler1DArrayShadow) +0:43 'g_tTex1di4a' (uniform itexture1DArray) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:43 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:43 Constant: +0:43 0.750000 +0:43 Constant: +0:43 0.000000 +0:43 Constant: +0:43 2 (const int) +0:44 Sequence +0:44 move second child to first child (temp float) +0:44 'r15' (temp float) +0:44 textureLodOffset (global float) +0:44 Construct combined texture-sampler (temp usampler1DArrayShadow) +0:44 'g_tTex1du4a' (uniform utexture1DArray) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:44 Construct vec3 (temp 3-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:44 Constant: +0:44 0.750000 +0:44 Constant: +0:44 0.000000 +0:44 Constant: +0:44 2 (const int) +0:47 Sequence +0:47 move second child to first child (temp float) +0:47 'r31' (temp float) +0:47 textureLodOffset (global float) +0:47 Construct combined texture-sampler (temp sampler2DArrayShadow) +0:47 'g_tTex2df4a' (uniform texture2DArray) +0:47 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:47 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:47 Constant: +0:47 0.750000 +0:47 Constant: +0:47 0.000000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:48 Sequence +0:48 move second child to first child (temp float) +0:48 'r33' (temp float) +0:48 textureLodOffset (global float) +0:48 Construct combined texture-sampler (temp isampler2DArrayShadow) +0:48 'g_tTex2di4a' (uniform itexture2DArray) +0:48 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:48 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:48 Constant: +0:48 0.750000 +0:48 Constant: +0:48 0.000000 +0:? Constant: +0:? 2 (const int) +0:? 3 (const int) +0:49 Sequence +0:49 move second child to first child (temp float) +0:49 'r35' (temp float) +0:49 textureLodOffset (global float) +0:49 Construct combined texture-sampler (temp usampler2DArrayShadow) +0:49 'g_tTex2du4a' (uniform utexture2DArray) +0:49 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:49 Construct vec4 (temp 4-component vector of float) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:49 Constant: +0:49 0.750000 +0:49 Constant: +0:49 0.000000 +0:? Constant: +0:? 2 (const int) +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 Depth}) +0:63 Constant: +0:63 0 (const int) +0:63 Constant: +0:63 1.000000 +0:63 1.000000 +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) +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 Sequence +0:66 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) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTexcdf4' (uniform textureCube) +0:? 'g_tTexcdi4' (uniform itextureCube) +0:? 'g_tTexcdu4' (uniform utextureCube) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 125 129 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "r11" + Name 11 "g_tTex1df4a" + Name 15 "g_sSamp" + Name 34 "r13" + Name 37 "g_tTex1di4a" + Name 48 "r15" + Name 52 "g_tTex1du4a" + Name 63 "r31" + Name 66 "g_tTex2df4a" + Name 84 "r33" + Name 87 "g_tTex2di4a" + Name 99 "r35" + Name 102 "g_tTex2du4a" + Name 114 "PS_OUTPUT" + MemberName 114(PS_OUTPUT) 0 "Color" + MemberName 114(PS_OUTPUT) 1 "Depth" + Name 116 "psout" + Name 125 "Color" + Name 129 "Depth" + Name 135 "g_tTex1df4" + Name 138 "g_tTex1di4" + Name 141 "g_tTex1du4" + Name 144 "g_tTex2df4" + Name 147 "g_tTex2di4" + Name 150 "g_tTex2du4" + Name 153 "g_tTex3df4" + Name 156 "g_tTex3di4" + Name 159 "g_tTex3du4" + Name 162 "g_tTexcdf4" + Name 165 "g_tTexcdi4" + Name 168 "g_tTexcdu4" + Name 171 "g_tTexcdf4a" + Name 174 "g_tTexcdi4a" + Name 177 "g_tTexcdu4a" + Decorate 11(g_tTex1df4a) DescriptorSet 0 + Decorate 15(g_sSamp) DescriptorSet 0 + Decorate 15(g_sSamp) Binding 0 + Decorate 37(g_tTex1di4a) DescriptorSet 0 + Decorate 52(g_tTex1du4a) DescriptorSet 0 + Decorate 66(g_tTex2df4a) DescriptorSet 0 + Decorate 87(g_tTex2di4a) DescriptorSet 0 + Decorate 102(g_tTex2du4a) DescriptorSet 0 + Decorate 125(Color) Location 0 + Decorate 129(Depth) BuiltIn FragDepth + Decorate 135(g_tTex1df4) DescriptorSet 0 + Decorate 135(g_tTex1df4) Binding 0 + Decorate 138(g_tTex1di4) DescriptorSet 0 + Decorate 141(g_tTex1du4) DescriptorSet 0 + Decorate 144(g_tTex2df4) DescriptorSet 0 + Decorate 147(g_tTex2di4) DescriptorSet 0 + Decorate 150(g_tTex2du4) DescriptorSet 0 + Decorate 153(g_tTex3df4) DescriptorSet 0 + Decorate 156(g_tTex3di4) DescriptorSet 0 + Decorate 159(g_tTex3du4) DescriptorSet 0 + Decorate 162(g_tTexcdf4) DescriptorSet 0 + Decorate 165(g_tTexcdi4) DescriptorSet 0 + Decorate 168(g_tTexcdu4) DescriptorSet 0 + Decorate 171(g_tTexcdf4a) DescriptorSet 0 + Decorate 174(g_tTexcdi4a) DescriptorSet 0 + Decorate 177(g_tTexcdu4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: TypeImage 6(float) 1D array sampled format:Unknown + 10: TypePointer UniformConstant 9 + 11(g_tTex1df4a): 10(ptr) Variable UniformConstant + 13: TypeSampler + 14: TypePointer UniformConstant 13 + 15(g_sSamp): 14(ptr) Variable UniformConstant + 17: TypeImage 6(float) 1D depth array sampled format:Unknown + 18: TypeSampledImage 17 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: 6(float) Constant 1061158912 + 25: TypeVector 6(float) 3 + 29: 6(float) Constant 0 + 30: TypeInt 32 1 + 31: 30(int) Constant 2 + 35: TypeImage 30(int) 1D array sampled format:Unknown + 36: TypePointer UniformConstant 35 + 37(g_tTex1di4a): 36(ptr) Variable UniformConstant + 40: TypeImage 30(int) 1D depth array sampled format:Unknown + 41: TypeSampledImage 40 + 49: TypeInt 32 0 + 50: TypeImage 49(int) 1D array sampled format:Unknown + 51: TypePointer UniformConstant 50 + 52(g_tTex1du4a): 51(ptr) Variable UniformConstant + 55: TypeImage 49(int) 1D depth array sampled format:Unknown + 56: TypeSampledImage 55 + 64: TypeImage 6(float) 2D array sampled format:Unknown + 65: TypePointer UniformConstant 64 + 66(g_tTex2df4a): 65(ptr) Variable UniformConstant + 69: TypeImage 6(float) 2D depth array sampled format:Unknown + 70: TypeSampledImage 69 + 72: 6(float) Constant 1050253722 + 73: 25(fvec3) ConstantComposite 21 22 72 + 74: TypeVector 6(float) 4 + 79: TypeVector 30(int) 2 + 80: 30(int) Constant 3 + 81: 79(ivec2) ConstantComposite 31 80 + 85: TypeImage 30(int) 2D array sampled format:Unknown + 86: TypePointer UniformConstant 85 + 87(g_tTex2di4a): 86(ptr) Variable UniformConstant + 90: TypeImage 30(int) 2D depth array sampled format:Unknown + 91: TypeSampledImage 90 + 100: TypeImage 49(int) 2D array sampled format:Unknown + 101: TypePointer UniformConstant 100 +102(g_tTex2du4a): 101(ptr) Variable UniformConstant + 105: TypeImage 49(int) 2D depth array sampled format:Unknown + 106: TypeSampledImage 105 + 114(PS_OUTPUT): TypeStruct 74(fvec4) 6(float) + 115: TypePointer Function 114(PS_OUTPUT) + 117: 30(int) Constant 0 + 118: 6(float) Constant 1065353216 + 119: 74(fvec4) ConstantComposite 118 118 118 118 + 120: TypePointer Function 74(fvec4) + 122: 30(int) Constant 1 + 124: TypePointer Output 74(fvec4) + 125(Color): 124(ptr) Variable Output + 128: TypePointer Output 6(float) + 129(Depth): 128(ptr) Variable Output + 133: TypeImage 6(float) 1D sampled format:Unknown + 134: TypePointer UniformConstant 133 + 135(g_tTex1df4): 134(ptr) Variable UniformConstant + 136: TypeImage 30(int) 1D sampled format:Unknown + 137: TypePointer UniformConstant 136 + 138(g_tTex1di4): 137(ptr) Variable UniformConstant + 139: TypeImage 49(int) 1D sampled format:Unknown + 140: TypePointer UniformConstant 139 + 141(g_tTex1du4): 140(ptr) Variable UniformConstant + 142: TypeImage 6(float) 2D sampled format:Unknown + 143: TypePointer UniformConstant 142 + 144(g_tTex2df4): 143(ptr) Variable UniformConstant + 145: TypeImage 30(int) 2D sampled format:Unknown + 146: TypePointer UniformConstant 145 + 147(g_tTex2di4): 146(ptr) Variable UniformConstant + 148: TypeImage 49(int) 2D sampled format:Unknown + 149: TypePointer UniformConstant 148 + 150(g_tTex2du4): 149(ptr) Variable UniformConstant + 151: TypeImage 6(float) 3D sampled format:Unknown + 152: TypePointer UniformConstant 151 + 153(g_tTex3df4): 152(ptr) Variable UniformConstant + 154: TypeImage 30(int) 3D sampled format:Unknown + 155: TypePointer UniformConstant 154 + 156(g_tTex3di4): 155(ptr) Variable UniformConstant + 157: TypeImage 49(int) 3D sampled format:Unknown + 158: TypePointer UniformConstant 157 + 159(g_tTex3du4): 158(ptr) Variable UniformConstant + 160: TypeImage 6(float) Cube sampled format:Unknown + 161: TypePointer UniformConstant 160 + 162(g_tTexcdf4): 161(ptr) Variable UniformConstant + 163: TypeImage 30(int) Cube sampled format:Unknown + 164: TypePointer UniformConstant 163 + 165(g_tTexcdi4): 164(ptr) Variable UniformConstant + 166: TypeImage 49(int) Cube sampled format:Unknown + 167: TypePointer UniformConstant 166 + 168(g_tTexcdu4): 167(ptr) Variable UniformConstant + 169: TypeImage 6(float) Cube array sampled format:Unknown + 170: TypePointer UniformConstant 169 +171(g_tTexcdf4a): 170(ptr) Variable UniformConstant + 172: TypeImage 30(int) Cube array sampled format:Unknown + 173: TypePointer UniformConstant 172 +174(g_tTexcdi4a): 173(ptr) Variable UniformConstant + 175: TypeImage 49(int) Cube array sampled format:Unknown + 176: TypePointer UniformConstant 175 +177(g_tTexcdu4a): 176(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 8(r11): 7(ptr) Variable Function + 34(r13): 7(ptr) Variable Function + 48(r15): 7(ptr) Variable Function + 63(r31): 7(ptr) Variable Function + 84(r33): 7(ptr) Variable Function + 99(r35): 7(ptr) Variable Function + 116(psout): 115(ptr) Variable Function + 12: 9 Load 11(g_tTex1df4a) + 16: 13 Load 15(g_sSamp) + 19: 18 SampledImage 12 16 + 26: 6(float) CompositeExtract 23 0 + 27: 6(float) CompositeExtract 23 1 + 28: 25(fvec3) CompositeConstruct 26 27 24 + 32: 6(float) CompositeExtract 28 2 + 33: 6(float) ImageSampleDrefExplicitLod 19 28 32 Lod ConstOffset 29 31 + Store 8(r11) 33 + 38: 35 Load 37(g_tTex1di4a) + 39: 13 Load 15(g_sSamp) + 42: 41 SampledImage 38 39 + 43: 6(float) CompositeExtract 23 0 + 44: 6(float) CompositeExtract 23 1 + 45: 25(fvec3) CompositeConstruct 43 44 24 + 46: 6(float) CompositeExtract 45 2 + 47: 6(float) ImageSampleDrefExplicitLod 42 45 46 Lod ConstOffset 29 31 + Store 34(r13) 47 + 53: 50 Load 52(g_tTex1du4a) + 54: 13 Load 15(g_sSamp) + 57: 56 SampledImage 53 54 + 58: 6(float) CompositeExtract 23 0 + 59: 6(float) CompositeExtract 23 1 + 60: 25(fvec3) CompositeConstruct 58 59 24 + 61: 6(float) CompositeExtract 60 2 + 62: 6(float) ImageSampleDrefExplicitLod 57 60 61 Lod ConstOffset 29 31 + Store 48(r15) 62 + 67: 64 Load 66(g_tTex2df4a) + 68: 13 Load 15(g_sSamp) + 71: 70 SampledImage 67 68 + 75: 6(float) CompositeExtract 73 0 + 76: 6(float) CompositeExtract 73 1 + 77: 6(float) CompositeExtract 73 2 + 78: 74(fvec4) CompositeConstruct 75 76 77 24 + 82: 6(float) CompositeExtract 78 3 + 83: 6(float) ImageSampleDrefExplicitLod 71 78 82 Lod ConstOffset 29 81 + Store 63(r31) 83 + 88: 85 Load 87(g_tTex2di4a) + 89: 13 Load 15(g_sSamp) + 92: 91 SampledImage 88 89 + 93: 6(float) CompositeExtract 73 0 + 94: 6(float) CompositeExtract 73 1 + 95: 6(float) CompositeExtract 73 2 + 96: 74(fvec4) CompositeConstruct 93 94 95 24 + 97: 6(float) CompositeExtract 96 3 + 98: 6(float) ImageSampleDrefExplicitLod 92 96 97 Lod ConstOffset 29 81 + Store 84(r33) 98 + 103: 100 Load 102(g_tTex2du4a) + 104: 13 Load 15(g_sSamp) + 107: 106 SampledImage 103 104 + 108: 6(float) CompositeExtract 73 0 + 109: 6(float) CompositeExtract 73 1 + 110: 6(float) CompositeExtract 73 2 + 111: 74(fvec4) CompositeConstruct 108 109 110 24 + 112: 6(float) CompositeExtract 111 3 + 113: 6(float) ImageSampleDrefExplicitLod 107 111 112 Lod ConstOffset 29 81 + Store 99(r35) 113 + 121: 120(ptr) AccessChain 116(psout) 117 + Store 121 119 + 123: 7(ptr) AccessChain 116(psout) 122 + Store 123 118 + 126: 120(ptr) AccessChain 116(psout) 117 + 127: 74(fvec4) Load 126 + Store 125(Color) 127 + 130: 7(ptr) AccessChain 116(psout) 122 + 131: 6(float) Load 130 + Store 129(Depth) 131 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out new file mode 100644 index 00000000..46a6bbc1 --- /dev/null +++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out @@ -0,0 +1,616 @@ +hlsl.samplegrad.array.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval10' (temp 4-component vector of float) +0:27 textureGrad (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1DArray) +0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:27 Constant: +0:27 1.100000 +0:27 Constant: +0:27 1.200000 +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval11' (temp 4-component vector of int) +0:28 textureGrad (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler1DArray) +0:28 'g_tTex1di4' (uniform itexture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:28 Constant: +0:28 1.100000 +0:28 Constant: +0:28 1.200000 +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval12' (temp 4-component vector of uint) +0:29 textureGrad (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler1DArray) +0:29 'g_tTex1du4' (uniform utexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:29 Constant: +0:29 1.100000 +0:29 Constant: +0:29 1.200000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval20' (temp 4-component vector of float) +0:31 textureGrad (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler2DArray) +0:31 'g_tTex2df4' (uniform texture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval21' (temp 4-component vector of int) +0:32 textureGrad (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler2DArray) +0:32 'g_tTex2di4' (uniform itexture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval22' (temp 4-component vector of uint) +0:33 textureGrad (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler2DArray) +0:33 'g_tTex2du4' (uniform utexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval40' (temp 4-component vector of float) +0:35 textureGrad (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp samplerCubeArray) +0:35 'g_tTexcdf4' (uniform textureCubeArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval41' (temp 4-component vector of int) +0:36 textureGrad (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isamplerCubeArray) +0:36 'g_tTexcdi4' (uniform itextureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval42' (temp 4-component vector of uint) +0:37 textureGrad (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usamplerCubeArray) +0:37 'g_tTexcdu4' (uniform utextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +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 Depth}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1.000000 +0:39 1.000000 +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) +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 Sequence +0:42 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +0:? 'g_tTex2df4' (uniform texture2DArray) +0:? 'g_tTex2di4' (uniform itexture2DArray) +0:? 'g_tTex2du4' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval10' (temp 4-component vector of float) +0:27 textureGrad (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1DArray) +0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:27 Constant: +0:27 1.100000 +0:27 Constant: +0:27 1.200000 +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval11' (temp 4-component vector of int) +0:28 textureGrad (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler1DArray) +0:28 'g_tTex1di4' (uniform itexture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:28 Constant: +0:28 1.100000 +0:28 Constant: +0:28 1.200000 +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval12' (temp 4-component vector of uint) +0:29 textureGrad (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler1DArray) +0:29 'g_tTex1du4' (uniform utexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:29 Constant: +0:29 1.100000 +0:29 Constant: +0:29 1.200000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval20' (temp 4-component vector of float) +0:31 textureGrad (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler2DArray) +0:31 'g_tTex2df4' (uniform texture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval21' (temp 4-component vector of int) +0:32 textureGrad (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler2DArray) +0:32 'g_tTex2di4' (uniform itexture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval22' (temp 4-component vector of uint) +0:33 textureGrad (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler2DArray) +0:33 'g_tTex2du4' (uniform utexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval40' (temp 4-component vector of float) +0:35 textureGrad (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp samplerCubeArray) +0:35 'g_tTexcdf4' (uniform textureCubeArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval41' (temp 4-component vector of int) +0:36 textureGrad (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isamplerCubeArray) +0:36 'g_tTexcdi4' (uniform itextureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval42' (temp 4-component vector of uint) +0:37 textureGrad (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usamplerCubeArray) +0:37 'g_tTexcdu4' (uniform utextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +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 Depth}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1.000000 +0:39 1.000000 +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) +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 Sequence +0:42 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +0:? 'g_tTex2df4' (uniform texture2DArray) +0:? 'g_tTex2di4' (uniform itexture2DArray) +0:? 'g_tTex2du4' (uniform utexture2DArray) +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 133 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 124 128 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 30 "txval11" + Name 33 "g_tTex1di4" + Name 42 "txval12" + Name 45 "g_tTex1du4" + Name 51 "txval20" + Name 54 "g_tTex2df4" + Name 64 "txval21" + Name 67 "g_tTex2di4" + Name 73 "txval22" + Name 76 "g_tTex2du4" + Name 82 "txval40" + Name 85 "g_tTexcdf4" + Name 95 "txval41" + Name 98 "g_tTexcdi4" + Name 104 "txval42" + Name 107 "g_tTexcdu4" + Name 113 "PS_OUTPUT" + MemberName 113(PS_OUTPUT) 0 "Color" + MemberName 113(PS_OUTPUT) 1 "Depth" + Name 115 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 33(g_tTex1di4) DescriptorSet 0 + Decorate 45(g_tTex1du4) DescriptorSet 0 + Decorate 54(g_tTex2df4) DescriptorSet 0 + Decorate 67(g_tTex2di4) DescriptorSet 0 + Decorate 76(g_tTex2du4) DescriptorSet 0 + Decorate 85(g_tTexcdf4) DescriptorSet 0 + Decorate 98(g_tTexcdi4) DescriptorSet 0 + Decorate 107(g_tTexcdu4) DescriptorSet 0 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: 6(float) Constant 1066192077 + 25: 6(float) Constant 1067030938 + 27: TypeInt 32 1 + 28: TypeVector 27(int) 4 + 29: TypePointer Function 28(ivec4) + 31: TypeImage 27(int) 1D array sampled format:Unknown + 32: TypePointer UniformConstant 31 + 33(g_tTex1di4): 32(ptr) Variable UniformConstant + 36: TypeSampledImage 31 + 39: TypeInt 32 0 + 40: TypeVector 39(int) 4 + 41: TypePointer Function 40(ivec4) + 43: TypeImage 39(int) 1D array sampled format:Unknown + 44: TypePointer UniformConstant 43 + 45(g_tTex1du4): 44(ptr) Variable UniformConstant + 48: TypeSampledImage 43 + 52: TypeImage 6(float) 2D array sampled format:Unknown + 53: TypePointer UniformConstant 52 + 54(g_tTex2df4): 53(ptr) Variable UniformConstant + 57: TypeSampledImage 52 + 59: TypeVector 6(float) 3 + 60: 6(float) Constant 1050253722 + 61: 59(fvec3) ConstantComposite 21 22 60 + 62: 20(fvec2) ConstantComposite 24 25 + 65: TypeImage 27(int) 2D array sampled format:Unknown + 66: TypePointer UniformConstant 65 + 67(g_tTex2di4): 66(ptr) Variable UniformConstant + 70: TypeSampledImage 65 + 74: TypeImage 39(int) 2D array sampled format:Unknown + 75: TypePointer UniformConstant 74 + 76(g_tTex2du4): 75(ptr) Variable UniformConstant + 79: TypeSampledImage 74 + 83: TypeImage 6(float) Cube array sampled format:Unknown + 84: TypePointer UniformConstant 83 + 85(g_tTexcdf4): 84(ptr) Variable UniformConstant + 88: TypeSampledImage 83 + 90: 6(float) Constant 1053609165 + 91: 7(fvec4) ConstantComposite 21 22 60 90 + 92: 6(float) Constant 1067869798 + 93: 59(fvec3) ConstantComposite 24 25 92 + 96: TypeImage 27(int) Cube array sampled format:Unknown + 97: TypePointer UniformConstant 96 + 98(g_tTexcdi4): 97(ptr) Variable UniformConstant + 101: TypeSampledImage 96 + 105: TypeImage 39(int) Cube array sampled format:Unknown + 106: TypePointer UniformConstant 105 + 107(g_tTexcdu4): 106(ptr) Variable UniformConstant + 110: TypeSampledImage 105 + 113(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 114: TypePointer Function 113(PS_OUTPUT) + 116: 27(int) Constant 0 + 117: 6(float) Constant 1065353216 + 118: 7(fvec4) ConstantComposite 117 117 117 117 + 120: 27(int) Constant 1 + 121: TypePointer Function 6(float) + 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 + 30(txval11): 29(ptr) Variable Function + 42(txval12): 41(ptr) Variable Function + 51(txval20): 8(ptr) Variable Function + 64(txval21): 29(ptr) Variable Function + 73(txval22): 41(ptr) Variable Function + 82(txval40): 8(ptr) Variable Function + 95(txval41): 29(ptr) Variable Function + 104(txval42): 41(ptr) Variable Function + 115(psout): 114(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 26: 7(fvec4) ImageSampleExplicitLod 19 23 Grad 24 25 + Store 9(txval10) 26 + 34: 31 Load 33(g_tTex1di4) + 35: 14 Load 16(g_sSamp) + 37: 36 SampledImage 34 35 + 38: 28(ivec4) ImageSampleExplicitLod 37 23 Grad 24 25 + Store 30(txval11) 38 + 46: 43 Load 45(g_tTex1du4) + 47: 14 Load 16(g_sSamp) + 49: 48 SampledImage 46 47 + 50: 40(ivec4) ImageSampleExplicitLod 49 23 Grad 24 25 + Store 42(txval12) 50 + 55: 52 Load 54(g_tTex2df4) + 56: 14 Load 16(g_sSamp) + 58: 57 SampledImage 55 56 + 63: 7(fvec4) ImageSampleExplicitLod 58 61 Grad 62 62 + Store 51(txval20) 63 + 68: 65 Load 67(g_tTex2di4) + 69: 14 Load 16(g_sSamp) + 71: 70 SampledImage 68 69 + 72: 28(ivec4) ImageSampleExplicitLod 71 61 Grad 62 62 + Store 64(txval21) 72 + 77: 74 Load 76(g_tTex2du4) + 78: 14 Load 16(g_sSamp) + 80: 79 SampledImage 77 78 + 81: 40(ivec4) ImageSampleExplicitLod 80 61 Grad 62 62 + Store 73(txval22) 81 + 86: 83 Load 85(g_tTexcdf4) + 87: 14 Load 16(g_sSamp) + 89: 88 SampledImage 86 87 + 94: 7(fvec4) ImageSampleExplicitLod 89 91 Grad 93 93 + Store 82(txval40) 94 + 99: 96 Load 98(g_tTexcdi4) + 100: 14 Load 16(g_sSamp) + 102: 101 SampledImage 99 100 + 103: 28(ivec4) ImageSampleExplicitLod 102 91 Grad 93 93 + Store 95(txval41) 103 + 108: 105 Load 107(g_tTexcdu4) + 109: 14 Load 16(g_sSamp) + 111: 110 SampledImage 108 109 + 112: 40(ivec4) ImageSampleExplicitLod 111 91 Grad 93 93 + Store 104(txval42) 112 + 119: 8(ptr) AccessChain 115(psout) 116 + Store 119 118 + 122: 121(ptr) AccessChain 115(psout) 120 + Store 122 117 + 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 new file mode 100644 index 00000000..395efc26 --- /dev/null +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out @@ -0,0 +1,764 @@ +hlsl.samplegrad.basic.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 textureGrad (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 1.100000 +0:31 Constant: +0:31 1.200000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 textureGrad (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 1.100000 +0:32 Constant: +0:32 1.200000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 textureGrad (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 1.100000 +0:33 Constant: +0:33 1.200000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 textureGrad (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 textureGrad (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 textureGrad (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 textureGrad (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 textureGrad (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 textureGrad (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of float) +0:43 'txval40' (temp 4-component vector of float) +0:43 textureGrad (temp 4-component vector of float) +0:43 Construct combined texture-sampler (temp samplerCube) +0:43 'g_tTexcdf4' (uniform textureCube) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of int) +0:44 'txval41' (temp 4-component vector of int) +0:44 textureGrad (temp 4-component vector of int) +0:44 Construct combined texture-sampler (temp isamplerCube) +0:44 'g_tTexcdi4' (uniform itextureCube) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of uint) +0:45 'txval42' (temp 4-component vector of uint) +0:45 textureGrad (temp 4-component vector of uint) +0:45 Construct combined texture-sampler (temp usamplerCube) +0:45 'g_tTexcdu4' (uniform utextureCube) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +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 Depth}) +0:47 Constant: +0:47 0 (const int) +0:47 Constant: +0:47 1.000000 +0:47 1.000000 +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) +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 Sequence +0:50 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 textureGrad (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 1.100000 +0:31 Constant: +0:31 1.200000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 textureGrad (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 1.100000 +0:32 Constant: +0:32 1.200000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 textureGrad (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 1.100000 +0:33 Constant: +0:33 1.200000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 textureGrad (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 textureGrad (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 textureGrad (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 textureGrad (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 textureGrad (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 textureGrad (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of float) +0:43 'txval40' (temp 4-component vector of float) +0:43 textureGrad (temp 4-component vector of float) +0:43 Construct combined texture-sampler (temp samplerCube) +0:43 'g_tTexcdf4' (uniform textureCube) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of int) +0:44 'txval41' (temp 4-component vector of int) +0:44 textureGrad (temp 4-component vector of int) +0:44 Construct combined texture-sampler (temp isamplerCube) +0:44 'g_tTexcdi4' (uniform itextureCube) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of uint) +0:45 'txval42' (temp 4-component vector of uint) +0:45 textureGrad (temp 4-component vector of uint) +0:45 Construct combined texture-sampler (temp usamplerCube) +0:45 'g_tTexcdu4' (uniform utextureCube) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +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 Depth}) +0:47 Constant: +0:47 0 (const int) +0:47 Constant: +0:47 1.000000 +0:47 1.000000 +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) +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 Sequence +0:50 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 168 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 159 163 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 27 "txval11" + Name 30 "g_tTex1di4" + Name 40 "txval12" + Name 43 "g_tTex1du4" + Name 50 "txval20" + Name 53 "g_tTex2df4" + Name 62 "txval21" + Name 65 "g_tTex2di4" + Name 73 "txval22" + Name 76 "g_tTex2du4" + Name 85 "txval30" + Name 88 "g_tTex3df4" + Name 98 "txval31" + Name 101 "g_tTex3di4" + Name 108 "txval32" + Name 111 "g_tTex3du4" + Name 121 "txval40" + Name 124 "g_tTexcdf4" + Name 130 "txval41" + Name 133 "g_tTexcdi4" + Name 139 "txval42" + Name 142 "g_tTexcdu4" + Name 148 "PS_OUTPUT" + MemberName 148(PS_OUTPUT) 0 "Color" + MemberName 148(PS_OUTPUT) 1 "Depth" + Name 150 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 30(g_tTex1di4) DescriptorSet 0 + Decorate 43(g_tTex1du4) DescriptorSet 0 + Decorate 53(g_tTex2df4) DescriptorSet 0 + Decorate 65(g_tTex2di4) DescriptorSet 0 + Decorate 76(g_tTex2du4) DescriptorSet 0 + Decorate 88(g_tTex3df4) DescriptorSet 0 + Decorate 101(g_tTex3di4) DescriptorSet 0 + Decorate 111(g_tTex3du4) DescriptorSet 0 + Decorate 124(g_tTexcdf4) DescriptorSet 0 + Decorate 133(g_tTexcdi4) DescriptorSet 0 + Decorate 142(g_tTexcdu4) DescriptorSet 0 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1066192077 + 22: 6(float) Constant 1067030938 + 24: TypeInt 32 1 + 25: TypeVector 24(int) 4 + 26: TypePointer Function 25(ivec4) + 28: TypeImage 24(int) 1D sampled format:Unknown + 29: TypePointer UniformConstant 28 + 30(g_tTex1di4): 29(ptr) Variable UniformConstant + 33: TypeSampledImage 28 + 35: 6(float) Constant 1045220557 + 37: TypeInt 32 0 + 38: TypeVector 37(int) 4 + 39: TypePointer Function 38(ivec4) + 41: TypeImage 37(int) 1D sampled format:Unknown + 42: TypePointer UniformConstant 41 + 43(g_tTex1du4): 42(ptr) Variable UniformConstant + 46: TypeSampledImage 41 + 48: 6(float) Constant 1050253722 + 51: TypeImage 6(float) 2D sampled format:Unknown + 52: TypePointer UniformConstant 51 + 53(g_tTex2df4): 52(ptr) Variable UniformConstant + 56: TypeSampledImage 51 + 58: TypeVector 6(float) 2 + 59: 58(fvec2) ConstantComposite 20 35 + 60: 58(fvec2) ConstantComposite 21 22 + 63: TypeImage 24(int) 2D sampled format:Unknown + 64: TypePointer UniformConstant 63 + 65(g_tTex2di4): 64(ptr) Variable UniformConstant + 68: TypeSampledImage 63 + 70: 6(float) Constant 1053609165 + 71: 58(fvec2) ConstantComposite 48 70 + 74: TypeImage 37(int) 2D sampled format:Unknown + 75: TypePointer UniformConstant 74 + 76(g_tTex2du4): 75(ptr) Variable UniformConstant + 79: TypeSampledImage 74 + 81: 6(float) Constant 1056964608 + 82: 6(float) Constant 1058642330 + 83: 58(fvec2) ConstantComposite 81 82 + 86: TypeImage 6(float) 3D sampled format:Unknown + 87: TypePointer UniformConstant 86 + 88(g_tTex3df4): 87(ptr) Variable UniformConstant + 91: TypeSampledImage 86 + 93: TypeVector 6(float) 3 + 94: 93(fvec3) ConstantComposite 20 35 48 + 95: 6(float) Constant 1067869798 + 96: 93(fvec3) ConstantComposite 21 22 95 + 99: TypeImage 24(int) 3D sampled format:Unknown + 100: TypePointer UniformConstant 99 + 101(g_tTex3di4): 100(ptr) Variable UniformConstant + 104: TypeSampledImage 99 + 106: 93(fvec3) ConstantComposite 70 81 82 + 109: TypeImage 37(int) 3D sampled format:Unknown + 110: TypePointer UniformConstant 109 + 111(g_tTex3du4): 110(ptr) Variable UniformConstant + 114: TypeSampledImage 109 + 116: 6(float) Constant 1060320051 + 117: 6(float) Constant 1061997773 + 118: 6(float) Constant 1063675494 + 119: 93(fvec3) ConstantComposite 116 117 118 + 122: TypeImage 6(float) Cube sampled format:Unknown + 123: TypePointer UniformConstant 122 + 124(g_tTexcdf4): 123(ptr) Variable UniformConstant + 127: TypeSampledImage 122 + 131: TypeImage 24(int) Cube sampled format:Unknown + 132: TypePointer UniformConstant 131 + 133(g_tTexcdi4): 132(ptr) Variable UniformConstant + 136: TypeSampledImage 131 + 140: TypeImage 37(int) Cube sampled format:Unknown + 141: TypePointer UniformConstant 140 + 142(g_tTexcdu4): 141(ptr) Variable UniformConstant + 145: TypeSampledImage 140 + 148(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 149: TypePointer Function 148(PS_OUTPUT) + 151: 24(int) Constant 0 + 152: 6(float) Constant 1065353216 + 153: 7(fvec4) ConstantComposite 152 152 152 152 + 155: 24(int) Constant 1 + 156: TypePointer Function 6(float) + 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 + 27(txval11): 26(ptr) Variable Function + 40(txval12): 39(ptr) Variable Function + 50(txval20): 8(ptr) Variable Function + 62(txval21): 26(ptr) Variable Function + 73(txval22): 39(ptr) Variable Function + 85(txval30): 8(ptr) Variable Function + 98(txval31): 26(ptr) Variable Function + 108(txval32): 39(ptr) Variable Function + 121(txval40): 8(ptr) Variable Function + 130(txval41): 26(ptr) Variable Function + 139(txval42): 39(ptr) Variable Function + 150(psout): 149(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 23: 7(fvec4) ImageSampleExplicitLod 19 20 Grad 21 22 + Store 9(txval10) 23 + 31: 28 Load 30(g_tTex1di4) + 32: 14 Load 16(g_sSamp) + 34: 33 SampledImage 31 32 + 36: 25(ivec4) ImageSampleExplicitLod 34 35 Grad 21 22 + Store 27(txval11) 36 + 44: 41 Load 43(g_tTex1du4) + 45: 14 Load 16(g_sSamp) + 47: 46 SampledImage 44 45 + 49: 38(ivec4) ImageSampleExplicitLod 47 48 Grad 21 22 + Store 40(txval12) 49 + 54: 51 Load 53(g_tTex2df4) + 55: 14 Load 16(g_sSamp) + 57: 56 SampledImage 54 55 + 61: 7(fvec4) ImageSampleExplicitLod 57 59 Grad 60 60 + Store 50(txval20) 61 + 66: 63 Load 65(g_tTex2di4) + 67: 14 Load 16(g_sSamp) + 69: 68 SampledImage 66 67 + 72: 25(ivec4) ImageSampleExplicitLod 69 71 Grad 60 60 + Store 62(txval21) 72 + 77: 74 Load 76(g_tTex2du4) + 78: 14 Load 16(g_sSamp) + 80: 79 SampledImage 77 78 + 84: 38(ivec4) ImageSampleExplicitLod 80 83 Grad 60 60 + Store 73(txval22) 84 + 89: 86 Load 88(g_tTex3df4) + 90: 14 Load 16(g_sSamp) + 92: 91 SampledImage 89 90 + 97: 7(fvec4) ImageSampleExplicitLod 92 94 Grad 96 96 + Store 85(txval30) 97 + 102: 99 Load 101(g_tTex3di4) + 103: 14 Load 16(g_sSamp) + 105: 104 SampledImage 102 103 + 107: 25(ivec4) ImageSampleExplicitLod 105 106 Grad 96 96 + Store 98(txval31) 107 + 112: 109 Load 111(g_tTex3du4) + 113: 14 Load 16(g_sSamp) + 115: 114 SampledImage 112 113 + 120: 38(ivec4) ImageSampleExplicitLod 115 119 Grad 96 96 + Store 108(txval32) 120 + 125: 122 Load 124(g_tTexcdf4) + 126: 14 Load 16(g_sSamp) + 128: 127 SampledImage 125 126 + 129: 7(fvec4) ImageSampleExplicitLod 128 94 Grad 96 96 + Store 121(txval40) 129 + 134: 131 Load 133(g_tTexcdi4) + 135: 14 Load 16(g_sSamp) + 137: 136 SampledImage 134 135 + 138: 25(ivec4) ImageSampleExplicitLod 137 106 Grad 96 96 + Store 130(txval41) 138 + 143: 140 Load 142(g_tTexcdu4) + 144: 14 Load 16(g_sSamp) + 146: 145 SampledImage 143 144 + 147: 38(ivec4) ImageSampleExplicitLod 146 119 Grad 96 96 + Store 139(txval42) 147 + 154: 8(ptr) AccessChain 150(psout) 151 + Store 154 153 + 157: 156(ptr) AccessChain 150(psout) 155 + Store 157 152 + 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 new file mode 100644 index 00000000..2e79be32 --- /dev/null +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out @@ -0,0 +1,721 @@ +hlsl.samplegrad.basic.dx10.vert +Shader version: 450 +0:? Sequence +0:27 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) +0:27 Function Parameters: +0:? Sequence +0:30 Sequence +0:30 move second child to first child (temp 4-component vector of float) +0:30 'txval10' (temp 4-component vector of float) +0:30 textureGrad (temp 4-component vector of float) +0:30 Construct combined texture-sampler (temp sampler1D) +0:30 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:30 Constant: +0:30 0.100000 +0:30 Constant: +0:30 1.100000 +0:30 Constant: +0:30 1.200000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of int) +0:31 'txval11' (temp 4-component vector of int) +0:31 textureGrad (temp 4-component vector of int) +0:31 Construct combined texture-sampler (temp isampler1D) +0:31 'g_tTex1di4' (uniform itexture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.200000 +0:31 Constant: +0:31 1.100000 +0:31 Constant: +0:31 1.200000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of uint) +0:32 'txval12' (temp 4-component vector of uint) +0:32 textureGrad (temp 4-component vector of uint) +0:32 Construct combined texture-sampler (temp usampler1D) +0:32 'g_tTex1du4' (uniform utexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.300000 +0:32 Constant: +0:32 1.100000 +0:32 Constant: +0:32 1.200000 +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of float) +0:34 'txval20' (temp 4-component vector of float) +0:34 textureGrad (temp 4-component vector of float) +0:34 Construct combined texture-sampler (temp sampler2D) +0:34 'g_tTex2df4' (uniform texture2D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of int) +0:35 'txval21' (temp 4-component vector of int) +0:35 textureGrad (temp 4-component vector of int) +0:35 Construct combined texture-sampler (temp isampler2D) +0:35 'g_tTex2di4' (uniform itexture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of uint) +0:36 'txval22' (temp 4-component vector of uint) +0:36 textureGrad (temp 4-component vector of uint) +0:36 Construct combined texture-sampler (temp usampler2D) +0:36 'g_tTex2du4' (uniform utexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:38 Sequence +0:38 move second child to first child (temp 4-component vector of float) +0:38 'txval30' (temp 4-component vector of float) +0:38 textureGrad (temp 4-component vector of float) +0:38 Construct combined texture-sampler (temp sampler3D) +0:38 'g_tTex3df4' (uniform texture3D) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of int) +0:39 'txval31' (temp 4-component vector of int) +0:39 textureGrad (temp 4-component vector of int) +0:39 Construct combined texture-sampler (temp isampler3D) +0:39 'g_tTex3di4' (uniform itexture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of uint) +0:40 'txval32' (temp 4-component vector of uint) +0:40 textureGrad (temp 4-component vector of uint) +0:40 Construct combined texture-sampler (temp usampler3D) +0:40 'g_tTex3du4' (uniform utexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of float) +0:42 'txval40' (temp 4-component vector of float) +0:42 textureGrad (temp 4-component vector of float) +0:42 Construct combined texture-sampler (temp samplerCube) +0:42 'g_tTexcdf4' (uniform textureCube) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of int) +0:43 'txval41' (temp 4-component vector of int) +0:43 textureGrad (temp 4-component vector of int) +0:43 Construct combined texture-sampler (temp isamplerCube) +0:43 'g_tTexcdi4' (uniform itextureCube) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of uint) +0:44 'txval42' (temp 4-component vector of uint) +0:44 textureGrad (temp 4-component vector of uint) +0:44 Construct combined texture-sampler (temp usamplerCube) +0:44 'g_tTexcdu4' (uniform utextureCube) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +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) +0:46 'vsout' (temp structure{temp 4-component vector of float Pos}) +0:46 Constant: +0:46 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:48 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +0:? Sequence +0:27 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) +0:27 Function Parameters: +0:? Sequence +0:30 Sequence +0:30 move second child to first child (temp 4-component vector of float) +0:30 'txval10' (temp 4-component vector of float) +0:30 textureGrad (temp 4-component vector of float) +0:30 Construct combined texture-sampler (temp sampler1D) +0:30 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:30 Constant: +0:30 0.100000 +0:30 Constant: +0:30 1.100000 +0:30 Constant: +0:30 1.200000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of int) +0:31 'txval11' (temp 4-component vector of int) +0:31 textureGrad (temp 4-component vector of int) +0:31 Construct combined texture-sampler (temp isampler1D) +0:31 'g_tTex1di4' (uniform itexture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.200000 +0:31 Constant: +0:31 1.100000 +0:31 Constant: +0:31 1.200000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of uint) +0:32 'txval12' (temp 4-component vector of uint) +0:32 textureGrad (temp 4-component vector of uint) +0:32 Construct combined texture-sampler (temp usampler1D) +0:32 'g_tTex1du4' (uniform utexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.300000 +0:32 Constant: +0:32 1.100000 +0:32 Constant: +0:32 1.200000 +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of float) +0:34 'txval20' (temp 4-component vector of float) +0:34 textureGrad (temp 4-component vector of float) +0:34 Construct combined texture-sampler (temp sampler2D) +0:34 'g_tTex2df4' (uniform texture2D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of int) +0:35 'txval21' (temp 4-component vector of int) +0:35 textureGrad (temp 4-component vector of int) +0:35 Construct combined texture-sampler (temp isampler2D) +0:35 'g_tTex2di4' (uniform itexture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of uint) +0:36 'txval22' (temp 4-component vector of uint) +0:36 textureGrad (temp 4-component vector of uint) +0:36 Construct combined texture-sampler (temp usampler2D) +0:36 'g_tTex2du4' (uniform utexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:38 Sequence +0:38 move second child to first child (temp 4-component vector of float) +0:38 'txval30' (temp 4-component vector of float) +0:38 textureGrad (temp 4-component vector of float) +0:38 Construct combined texture-sampler (temp sampler3D) +0:38 'g_tTex3df4' (uniform texture3D) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of int) +0:39 'txval31' (temp 4-component vector of int) +0:39 textureGrad (temp 4-component vector of int) +0:39 Construct combined texture-sampler (temp isampler3D) +0:39 'g_tTex3di4' (uniform itexture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of uint) +0:40 'txval32' (temp 4-component vector of uint) +0:40 textureGrad (temp 4-component vector of uint) +0:40 Construct combined texture-sampler (temp usampler3D) +0:40 'g_tTex3du4' (uniform utexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of float) +0:42 'txval40' (temp 4-component vector of float) +0:42 textureGrad (temp 4-component vector of float) +0:42 Construct combined texture-sampler (temp samplerCube) +0:42 'g_tTexcdf4' (uniform textureCube) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of int) +0:43 'txval41' (temp 4-component vector of int) +0:43 textureGrad (temp 4-component vector of int) +0:43 Construct combined texture-sampler (temp isamplerCube) +0:43 'g_tTexcdi4' (uniform itextureCube) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of uint) +0:44 'txval42' (temp 4-component vector of uint) +0:44 textureGrad (temp 4-component vector of uint) +0:44 Construct combined texture-sampler (temp usamplerCube) +0:44 'g_tTexcdu4' (uniform utextureCube) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +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) +0:46 'vsout' (temp structure{temp 4-component vector of float Pos}) +0:46 Constant: +0:46 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:48 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 161 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 156 + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 27 "txval11" + Name 30 "g_tTex1di4" + Name 40 "txval12" + Name 43 "g_tTex1du4" + Name 50 "txval20" + Name 53 "g_tTex2df4" + Name 62 "txval21" + Name 65 "g_tTex2di4" + Name 73 "txval22" + Name 76 "g_tTex2du4" + Name 85 "txval30" + Name 88 "g_tTex3df4" + Name 98 "txval31" + Name 101 "g_tTex3di4" + Name 108 "txval32" + Name 111 "g_tTex3du4" + Name 121 "txval40" + Name 124 "g_tTexcdf4" + Name 130 "txval41" + Name 133 "g_tTexcdi4" + Name 139 "txval42" + Name 142 "g_tTexcdu4" + Name 148 "VS_OUTPUT" + MemberName 148(VS_OUTPUT) 0 "Pos" + Name 150 "vsout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 30(g_tTex1di4) DescriptorSet 0 + Decorate 43(g_tTex1du4) DescriptorSet 0 + Decorate 53(g_tTex2df4) DescriptorSet 0 + Decorate 65(g_tTex2di4) DescriptorSet 0 + Decorate 76(g_tTex2du4) DescriptorSet 0 + Decorate 88(g_tTex3df4) DescriptorSet 0 + Decorate 101(g_tTex3di4) DescriptorSet 0 + Decorate 111(g_tTex3du4) DescriptorSet 0 + Decorate 124(g_tTexcdf4) DescriptorSet 0 + Decorate 133(g_tTexcdi4) DescriptorSet 0 + Decorate 142(g_tTexcdu4) DescriptorSet 0 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1066192077 + 22: 6(float) Constant 1067030938 + 24: TypeInt 32 1 + 25: TypeVector 24(int) 4 + 26: TypePointer Function 25(ivec4) + 28: TypeImage 24(int) 1D sampled format:Unknown + 29: TypePointer UniformConstant 28 + 30(g_tTex1di4): 29(ptr) Variable UniformConstant + 33: TypeSampledImage 28 + 35: 6(float) Constant 1045220557 + 37: TypeInt 32 0 + 38: TypeVector 37(int) 4 + 39: TypePointer Function 38(ivec4) + 41: TypeImage 37(int) 1D sampled format:Unknown + 42: TypePointer UniformConstant 41 + 43(g_tTex1du4): 42(ptr) Variable UniformConstant + 46: TypeSampledImage 41 + 48: 6(float) Constant 1050253722 + 51: TypeImage 6(float) 2D sampled format:Unknown + 52: TypePointer UniformConstant 51 + 53(g_tTex2df4): 52(ptr) Variable UniformConstant + 56: TypeSampledImage 51 + 58: TypeVector 6(float) 2 + 59: 58(fvec2) ConstantComposite 20 35 + 60: 58(fvec2) ConstantComposite 21 22 + 63: TypeImage 24(int) 2D sampled format:Unknown + 64: TypePointer UniformConstant 63 + 65(g_tTex2di4): 64(ptr) Variable UniformConstant + 68: TypeSampledImage 63 + 70: 6(float) Constant 1053609165 + 71: 58(fvec2) ConstantComposite 48 70 + 74: TypeImage 37(int) 2D sampled format:Unknown + 75: TypePointer UniformConstant 74 + 76(g_tTex2du4): 75(ptr) Variable UniformConstant + 79: TypeSampledImage 74 + 81: 6(float) Constant 1056964608 + 82: 6(float) Constant 1058642330 + 83: 58(fvec2) ConstantComposite 81 82 + 86: TypeImage 6(float) 3D sampled format:Unknown + 87: TypePointer UniformConstant 86 + 88(g_tTex3df4): 87(ptr) Variable UniformConstant + 91: TypeSampledImage 86 + 93: TypeVector 6(float) 3 + 94: 93(fvec3) ConstantComposite 20 35 48 + 95: 6(float) Constant 1067869798 + 96: 93(fvec3) ConstantComposite 21 22 95 + 99: TypeImage 24(int) 3D sampled format:Unknown + 100: TypePointer UniformConstant 99 + 101(g_tTex3di4): 100(ptr) Variable UniformConstant + 104: TypeSampledImage 99 + 106: 93(fvec3) ConstantComposite 70 81 82 + 109: TypeImage 37(int) 3D sampled format:Unknown + 110: TypePointer UniformConstant 109 + 111(g_tTex3du4): 110(ptr) Variable UniformConstant + 114: TypeSampledImage 109 + 116: 6(float) Constant 1060320051 + 117: 6(float) Constant 1061997773 + 118: 6(float) Constant 1063675494 + 119: 93(fvec3) ConstantComposite 116 117 118 + 122: TypeImage 6(float) Cube sampled format:Unknown + 123: TypePointer UniformConstant 122 + 124(g_tTexcdf4): 123(ptr) Variable UniformConstant + 127: TypeSampledImage 122 + 131: TypeImage 24(int) Cube sampled format:Unknown + 132: TypePointer UniformConstant 131 + 133(g_tTexcdi4): 132(ptr) Variable UniformConstant + 136: TypeSampledImage 131 + 140: TypeImage 37(int) Cube sampled format:Unknown + 141: TypePointer UniformConstant 140 + 142(g_tTexcdu4): 141(ptr) Variable UniformConstant + 145: TypeSampledImage 140 + 148(VS_OUTPUT): TypeStruct 7(fvec4) + 149: TypePointer Function 148(VS_OUTPUT) + 151: 24(int) Constant 0 + 152: 6(float) Constant 0 + 153: 7(fvec4) ConstantComposite 152 152 152 152 + 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 + 27(txval11): 26(ptr) Variable Function + 40(txval12): 39(ptr) Variable Function + 50(txval20): 8(ptr) Variable Function + 62(txval21): 26(ptr) Variable Function + 73(txval22): 39(ptr) Variable Function + 85(txval30): 8(ptr) Variable Function + 98(txval31): 26(ptr) Variable Function + 108(txval32): 39(ptr) Variable Function + 121(txval40): 8(ptr) Variable Function + 130(txval41): 26(ptr) Variable Function + 139(txval42): 39(ptr) Variable Function + 150(vsout): 149(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 23: 7(fvec4) ImageSampleExplicitLod 19 20 Grad 21 22 + Store 9(txval10) 23 + 31: 28 Load 30(g_tTex1di4) + 32: 14 Load 16(g_sSamp) + 34: 33 SampledImage 31 32 + 36: 25(ivec4) ImageSampleExplicitLod 34 35 Grad 21 22 + Store 27(txval11) 36 + 44: 41 Load 43(g_tTex1du4) + 45: 14 Load 16(g_sSamp) + 47: 46 SampledImage 44 45 + 49: 38(ivec4) ImageSampleExplicitLod 47 48 Grad 21 22 + Store 40(txval12) 49 + 54: 51 Load 53(g_tTex2df4) + 55: 14 Load 16(g_sSamp) + 57: 56 SampledImage 54 55 + 61: 7(fvec4) ImageSampleExplicitLod 57 59 Grad 60 60 + Store 50(txval20) 61 + 66: 63 Load 65(g_tTex2di4) + 67: 14 Load 16(g_sSamp) + 69: 68 SampledImage 66 67 + 72: 25(ivec4) ImageSampleExplicitLod 69 71 Grad 60 60 + Store 62(txval21) 72 + 77: 74 Load 76(g_tTex2du4) + 78: 14 Load 16(g_sSamp) + 80: 79 SampledImage 77 78 + 84: 38(ivec4) ImageSampleExplicitLod 80 83 Grad 60 60 + Store 73(txval22) 84 + 89: 86 Load 88(g_tTex3df4) + 90: 14 Load 16(g_sSamp) + 92: 91 SampledImage 89 90 + 97: 7(fvec4) ImageSampleExplicitLod 92 94 Grad 96 96 + Store 85(txval30) 97 + 102: 99 Load 101(g_tTex3di4) + 103: 14 Load 16(g_sSamp) + 105: 104 SampledImage 102 103 + 107: 25(ivec4) ImageSampleExplicitLod 105 106 Grad 96 96 + Store 98(txval31) 107 + 112: 109 Load 111(g_tTex3du4) + 113: 14 Load 16(g_sSamp) + 115: 114 SampledImage 112 113 + 120: 38(ivec4) ImageSampleExplicitLod 115 119 Grad 96 96 + Store 108(txval32) 120 + 125: 122 Load 124(g_tTexcdf4) + 126: 14 Load 16(g_sSamp) + 128: 127 SampledImage 125 126 + 129: 7(fvec4) ImageSampleExplicitLod 128 94 Grad 96 96 + Store 121(txval40) 129 + 134: 131 Load 133(g_tTexcdi4) + 135: 14 Load 16(g_sSamp) + 137: 136 SampledImage 134 135 + 138: 25(ivec4) ImageSampleExplicitLod 137 106 Grad 96 96 + Store 130(txval41) 138 + 143: 140 Load 142(g_tTexcdu4) + 144: 14 Load 16(g_sSamp) + 146: 145 SampledImage 143 144 + 147: 38(ivec4) ImageSampleExplicitLod 146 119 Grad 96 96 + Store 139(txval42) 147 + 154: 8(ptr) AccessChain 150(vsout) 151 + Store 154 153 + 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 new file mode 100644 index 00000000..7ef5e077 --- /dev/null +++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out @@ -0,0 +1,689 @@ +hlsl.samplegrad.offset.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 textureGradOffset (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 1.100000 +0:31 Constant: +0:31 1.200000 +0:31 Constant: +0:31 1 (const int) +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 textureGradOffset (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 1.100000 +0:32 Constant: +0:32 1.200000 +0:32 Constant: +0:32 1 (const int) +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 textureGradOffset (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 1.100000 +0:33 Constant: +0:33 1.200000 +0:33 Constant: +0:33 1 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 textureGradOffset (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 textureGradOffset (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 textureGradOffset (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +0:? -1 (const int) +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 textureGradOffset (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:? 1 (const int) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 textureGradOffset (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:? 1 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 textureGradOffset (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +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 Depth}) +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1.000000 +0:45 1.000000 +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) +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 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 textureGradOffset (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 1.100000 +0:31 Constant: +0:31 1.200000 +0:31 Constant: +0:31 1 (const int) +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 textureGradOffset (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 1.100000 +0:32 Constant: +0:32 1.200000 +0:32 Constant: +0:32 1 (const int) +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 textureGradOffset (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 1.100000 +0:33 Constant: +0:33 1.200000 +0:33 Constant: +0:33 1 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 textureGradOffset (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 textureGradOffset (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 textureGradOffset (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +0:? -1 (const int) +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 textureGradOffset (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:? 1 (const int) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 textureGradOffset (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:? 1 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 textureGradOffset (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? 1.300000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +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 Depth}) +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1.000000 +0:45 1.000000 +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) +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 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 159 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 141 145 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 28 "txval11" + Name 31 "g_tTex1di4" + Name 41 "txval12" + Name 44 "g_tTex1du4" + Name 51 "txval20" + Name 54 "g_tTex2df4" + Name 66 "txval21" + Name 69 "g_tTex2di4" + Name 78 "txval22" + Name 81 "g_tTex2du4" + Name 92 "txval30" + Name 95 "g_tTex3df4" + Name 107 "txval31" + Name 110 "g_tTex3di4" + Name 118 "txval32" + Name 121 "g_tTex3du4" + Name 132 "PS_OUTPUT" + MemberName 132(PS_OUTPUT) 0 "Color" + MemberName 132(PS_OUTPUT) 1 "Depth" + Name 134 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 31(g_tTex1di4) DescriptorSet 0 + Decorate 44(g_tTex1du4) DescriptorSet 0 + Decorate 54(g_tTex2df4) DescriptorSet 0 + Decorate 69(g_tTex2di4) DescriptorSet 0 + Decorate 81(g_tTex2du4) DescriptorSet 0 + Decorate 95(g_tTex3df4) DescriptorSet 0 + Decorate 110(g_tTex3di4) DescriptorSet 0 + Decorate 121(g_tTex3du4) 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1066192077 + 22: 6(float) Constant 1067030938 + 23: TypeInt 32 1 + 24: 23(int) Constant 1 + 26: TypeVector 23(int) 4 + 27: TypePointer Function 26(ivec4) + 29: TypeImage 23(int) 1D sampled format:Unknown + 30: TypePointer UniformConstant 29 + 31(g_tTex1di4): 30(ptr) Variable UniformConstant + 34: TypeSampledImage 29 + 36: 6(float) Constant 1045220557 + 38: TypeInt 32 0 + 39: TypeVector 38(int) 4 + 40: TypePointer Function 39(ivec4) + 42: TypeImage 38(int) 1D sampled format:Unknown + 43: TypePointer UniformConstant 42 + 44(g_tTex1du4): 43(ptr) Variable UniformConstant + 47: TypeSampledImage 42 + 49: 6(float) Constant 1050253722 + 52: TypeImage 6(float) 2D sampled format:Unknown + 53: TypePointer UniformConstant 52 + 54(g_tTex2df4): 53(ptr) Variable UniformConstant + 57: TypeSampledImage 52 + 59: TypeVector 6(float) 2 + 60: 59(fvec2) ConstantComposite 20 36 + 61: 59(fvec2) ConstantComposite 21 22 + 62: TypeVector 23(int) 2 + 63: 23(int) Constant 0 + 64: 62(ivec2) ConstantComposite 24 63 + 67: TypeImage 23(int) 2D sampled format:Unknown + 68: TypePointer UniformConstant 67 + 69(g_tTex2di4): 68(ptr) Variable UniformConstant + 72: TypeSampledImage 67 + 74: 6(float) Constant 1053609165 + 75: 59(fvec2) ConstantComposite 49 74 + 76: 62(ivec2) ConstantComposite 24 24 + 79: TypeImage 38(int) 2D sampled format:Unknown + 80: TypePointer UniformConstant 79 + 81(g_tTex2du4): 80(ptr) Variable UniformConstant + 84: TypeSampledImage 79 + 86: 6(float) Constant 1056964608 + 87: 6(float) Constant 1058642330 + 88: 59(fvec2) ConstantComposite 86 87 + 89: 23(int) Constant 4294967295 + 90: 62(ivec2) ConstantComposite 24 89 + 93: TypeImage 6(float) 3D sampled format:Unknown + 94: TypePointer UniformConstant 93 + 95(g_tTex3df4): 94(ptr) Variable UniformConstant + 98: TypeSampledImage 93 + 100: TypeVector 6(float) 3 + 101: 100(fvec3) ConstantComposite 20 36 49 + 102: 6(float) Constant 1067869798 + 103: 100(fvec3) ConstantComposite 21 22 102 + 104: TypeVector 23(int) 3 + 105: 104(ivec3) ConstantComposite 24 63 24 + 108: TypeImage 23(int) 3D sampled format:Unknown + 109: TypePointer UniformConstant 108 + 110(g_tTex3di4): 109(ptr) Variable UniformConstant + 113: TypeSampledImage 108 + 115: 100(fvec3) ConstantComposite 74 86 87 + 116: 104(ivec3) ConstantComposite 24 24 24 + 119: TypeImage 38(int) 3D sampled format:Unknown + 120: TypePointer UniformConstant 119 + 121(g_tTex3du4): 120(ptr) Variable UniformConstant + 124: TypeSampledImage 119 + 126: 6(float) Constant 1060320051 + 127: 6(float) Constant 1061997773 + 128: 6(float) Constant 1063675494 + 129: 100(fvec3) ConstantComposite 126 127 128 + 130: 104(ivec3) ConstantComposite 24 63 89 + 132(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 133: TypePointer Function 132(PS_OUTPUT) + 135: 6(float) Constant 1065353216 + 136: 7(fvec4) ConstantComposite 135 135 135 135 + 138: TypePointer Function 6(float) + 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 + 28(txval11): 27(ptr) Variable Function + 41(txval12): 40(ptr) Variable Function + 51(txval20): 8(ptr) Variable Function + 66(txval21): 27(ptr) Variable Function + 78(txval22): 40(ptr) Variable Function + 92(txval30): 8(ptr) Variable Function + 107(txval31): 27(ptr) Variable Function + 118(txval32): 40(ptr) Variable Function + 134(psout): 133(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 25: 7(fvec4) ImageSampleExplicitLod 19 20 Grad ConstOffset 21 22 24 + Store 9(txval10) 25 + 32: 29 Load 31(g_tTex1di4) + 33: 14 Load 16(g_sSamp) + 35: 34 SampledImage 32 33 + 37: 26(ivec4) ImageSampleExplicitLod 35 36 Grad ConstOffset 21 22 24 + Store 28(txval11) 37 + 45: 42 Load 44(g_tTex1du4) + 46: 14 Load 16(g_sSamp) + 48: 47 SampledImage 45 46 + 50: 39(ivec4) ImageSampleExplicitLod 48 49 Grad ConstOffset 21 22 24 + Store 41(txval12) 50 + 55: 52 Load 54(g_tTex2df4) + 56: 14 Load 16(g_sSamp) + 58: 57 SampledImage 55 56 + 65: 7(fvec4) ImageSampleExplicitLod 58 60 Grad ConstOffset 60 61 64 + Store 51(txval20) 65 + 70: 67 Load 69(g_tTex2di4) + 71: 14 Load 16(g_sSamp) + 73: 72 SampledImage 70 71 + 77: 26(ivec4) ImageSampleExplicitLod 73 75 Grad ConstOffset 60 61 76 + Store 66(txval21) 77 + 82: 79 Load 81(g_tTex2du4) + 83: 14 Load 16(g_sSamp) + 85: 84 SampledImage 82 83 + 91: 39(ivec4) ImageSampleExplicitLod 85 88 Grad ConstOffset 60 61 90 + Store 78(txval22) 91 + 96: 93 Load 95(g_tTex3df4) + 97: 14 Load 16(g_sSamp) + 99: 98 SampledImage 96 97 + 106: 7(fvec4) ImageSampleExplicitLod 99 101 Grad ConstOffset 103 103 105 + Store 92(txval30) 106 + 111: 108 Load 110(g_tTex3di4) + 112: 14 Load 16(g_sSamp) + 114: 113 SampledImage 111 112 + 117: 26(ivec4) ImageSampleExplicitLod 114 115 Grad ConstOffset 103 103 116 + Store 107(txval31) 117 + 122: 119 Load 121(g_tTex3du4) + 123: 14 Load 16(g_sSamp) + 125: 124 SampledImage 122 123 + 131: 39(ivec4) ImageSampleExplicitLod 125 129 Grad ConstOffset 103 103 130 + Store 118(txval32) 131 + 137: 8(ptr) AccessChain 134(psout) 63 + Store 137 136 + 139: 138(ptr) AccessChain 134(psout) 24 + Store 139 135 + 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 new file mode 100644 index 00000000..2043f38a --- /dev/null +++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out @@ -0,0 +1,500 @@ +hlsl.samplegrad.offsetarray.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval10' (temp 4-component vector of float) +0:27 textureGradOffset (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1DArray) +0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:27 Constant: +0:27 1.100000 +0:27 Constant: +0:27 1.200000 +0:27 Constant: +0:27 1 (const int) +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval11' (temp 4-component vector of int) +0:28 textureGradOffset (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler1DArray) +0:28 'g_tTex1di4' (uniform itexture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:28 Constant: +0:28 1.100000 +0:28 Constant: +0:28 1.200000 +0:28 Constant: +0:28 1 (const int) +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval12' (temp 4-component vector of uint) +0:29 textureGradOffset (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler1DArray) +0:29 'g_tTex1du4' (uniform utexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:29 Constant: +0:29 1.100000 +0:29 Constant: +0:29 1.200000 +0:29 Constant: +0:29 1 (const int) +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval20' (temp 4-component vector of float) +0:31 textureGradOffset (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler2DArray) +0:31 'g_tTex2df4' (uniform texture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval21' (temp 4-component vector of int) +0:32 textureGradOffset (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler2DArray) +0:32 'g_tTex2di4' (uniform itexture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval22' (temp 4-component vector of uint) +0:33 textureGradOffset (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler2DArray) +0:33 'g_tTex2du4' (uniform utexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +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 Depth}) +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1.000000 +0:35 1.000000 +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) +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 Sequence +0:38 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +0:? 'g_tTex2df4' (uniform texture2DArray) +0:? 'g_tTex2di4' (uniform itexture2DArray) +0:? 'g_tTex2du4' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval10' (temp 4-component vector of float) +0:27 textureGradOffset (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1DArray) +0:27 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:27 Constant: +0:27 1.100000 +0:27 Constant: +0:27 1.200000 +0:27 Constant: +0:27 1 (const int) +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval11' (temp 4-component vector of int) +0:28 textureGradOffset (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler1DArray) +0:28 'g_tTex1di4' (uniform itexture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:28 Constant: +0:28 1.100000 +0:28 Constant: +0:28 1.200000 +0:28 Constant: +0:28 1 (const int) +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval12' (temp 4-component vector of uint) +0:29 textureGradOffset (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler1DArray) +0:29 'g_tTex1du4' (uniform utexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:29 Constant: +0:29 1.100000 +0:29 Constant: +0:29 1.200000 +0:29 Constant: +0:29 1 (const int) +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval20' (temp 4-component vector of float) +0:31 textureGradOffset (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler2DArray) +0:31 'g_tTex2df4' (uniform texture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval21' (temp 4-component vector of int) +0:32 textureGradOffset (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler2DArray) +0:32 'g_tTex2di4' (uniform itexture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval22' (temp 4-component vector of uint) +0:33 textureGradOffset (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler2DArray) +0:33 'g_tTex2du4' (uniform utexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1.100000 +0:? 1.200000 +0:? Constant: +0:? 1 (const int) +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 Depth}) +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1.000000 +0:35 1.000000 +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) +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 Sequence +0:38 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +0:? 'g_tTex2df4' (uniform texture2DArray) +0:? 'g_tTex2di4' (uniform itexture2DArray) +0:? 'g_tTex2du4' (uniform utexture2DArray) +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 113 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 95 99 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 31 "txval11" + Name 34 "g_tTex1di4" + Name 43 "txval12" + Name 46 "g_tTex1du4" + Name 52 "txval20" + Name 55 "g_tTex2df4" + Name 68 "txval21" + Name 71 "g_tTex2di4" + Name 77 "txval22" + Name 80 "g_tTex2du4" + Name 86 "PS_OUTPUT" + MemberName 86(PS_OUTPUT) 0 "Color" + MemberName 86(PS_OUTPUT) 1 "Depth" + Name 88 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 34(g_tTex1di4) DescriptorSet 0 + Decorate 46(g_tTex1du4) DescriptorSet 0 + Decorate 55(g_tTex2df4) DescriptorSet 0 + Decorate 71(g_tTex2di4) DescriptorSet 0 + Decorate 80(g_tTex2du4) 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: 6(float) Constant 1066192077 + 25: 6(float) Constant 1067030938 + 26: TypeInt 32 1 + 27: 26(int) Constant 1 + 29: TypeVector 26(int) 4 + 30: TypePointer Function 29(ivec4) + 32: TypeImage 26(int) 1D array sampled format:Unknown + 33: TypePointer UniformConstant 32 + 34(g_tTex1di4): 33(ptr) Variable UniformConstant + 37: TypeSampledImage 32 + 40: TypeInt 32 0 + 41: TypeVector 40(int) 4 + 42: TypePointer Function 41(ivec4) + 44: TypeImage 40(int) 1D array sampled format:Unknown + 45: TypePointer UniformConstant 44 + 46(g_tTex1du4): 45(ptr) Variable UniformConstant + 49: TypeSampledImage 44 + 53: TypeImage 6(float) 2D array sampled format:Unknown + 54: TypePointer UniformConstant 53 + 55(g_tTex2df4): 54(ptr) Variable UniformConstant + 58: TypeSampledImage 53 + 60: TypeVector 6(float) 3 + 61: 6(float) Constant 1050253722 + 62: 60(fvec3) ConstantComposite 21 22 61 + 63: 20(fvec2) ConstantComposite 24 25 + 64: TypeVector 26(int) 2 + 65: 26(int) Constant 0 + 66: 64(ivec2) ConstantComposite 27 65 + 69: TypeImage 26(int) 2D array sampled format:Unknown + 70: TypePointer UniformConstant 69 + 71(g_tTex2di4): 70(ptr) Variable UniformConstant + 74: TypeSampledImage 69 + 78: TypeImage 40(int) 2D array sampled format:Unknown + 79: TypePointer UniformConstant 78 + 80(g_tTex2du4): 79(ptr) Variable UniformConstant + 83: TypeSampledImage 78 + 86(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 87: TypePointer Function 86(PS_OUTPUT) + 89: 6(float) Constant 1065353216 + 90: 7(fvec4) ConstantComposite 89 89 89 89 + 92: TypePointer Function 6(float) + 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 + 31(txval11): 30(ptr) Variable Function + 43(txval12): 42(ptr) Variable Function + 52(txval20): 8(ptr) Variable Function + 68(txval21): 30(ptr) Variable Function + 77(txval22): 42(ptr) Variable Function + 88(psout): 87(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 28: 7(fvec4) ImageSampleExplicitLod 19 23 Grad ConstOffset 24 25 27 + Store 9(txval10) 28 + 35: 32 Load 34(g_tTex1di4) + 36: 14 Load 16(g_sSamp) + 38: 37 SampledImage 35 36 + 39: 29(ivec4) ImageSampleExplicitLod 38 23 Grad ConstOffset 24 25 27 + Store 31(txval11) 39 + 47: 44 Load 46(g_tTex1du4) + 48: 14 Load 16(g_sSamp) + 50: 49 SampledImage 47 48 + 51: 41(ivec4) ImageSampleExplicitLod 50 23 Grad ConstOffset 24 25 27 + Store 43(txval12) 51 + 56: 53 Load 55(g_tTex2df4) + 57: 14 Load 16(g_sSamp) + 59: 58 SampledImage 56 57 + 67: 7(fvec4) ImageSampleExplicitLod 59 62 Grad ConstOffset 63 63 66 + Store 52(txval20) 67 + 72: 69 Load 71(g_tTex2di4) + 73: 14 Load 16(g_sSamp) + 75: 74 SampledImage 72 73 + 76: 29(ivec4) ImageSampleExplicitLod 75 62 Grad ConstOffset 63 63 66 + Store 68(txval21) 76 + 81: 78 Load 80(g_tTex2du4) + 82: 14 Load 16(g_sSamp) + 84: 83 SampledImage 81 82 + 85: 41(ivec4) ImageSampleExplicitLod 84 62 Grad ConstOffset 63 63 66 + Store 77(txval22) 85 + 91: 8(ptr) AccessChain 88(psout) 65 + Store 91 90 + 93: 92(ptr) AccessChain 88(psout) 27 + Store 93 89 + 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 new file mode 100644 index 00000000..351e2ed1 --- /dev/null +++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out @@ -0,0 +1,551 @@ +hlsl.samplelevel.array.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval10' (temp 4-component vector of float) +0:27 textureLod (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1DArray) +0:27 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:27 Constant: +0:27 0.750000 +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval11' (temp 4-component vector of int) +0:28 textureLod (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler1DArray) +0:28 'g_tTex1di4a' (uniform itexture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:28 Constant: +0:28 0.750000 +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval12' (temp 4-component vector of uint) +0:29 textureLod (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler1DArray) +0:29 'g_tTex1du4a' (uniform utexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:29 Constant: +0:29 0.750000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval20' (temp 4-component vector of float) +0:31 textureLod (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler2DArray) +0:31 'g_tTex2df4a' (uniform texture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:31 Constant: +0:31 0.750000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval21' (temp 4-component vector of int) +0:32 textureLod (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler2DArray) +0:32 'g_tTex2di4a' (uniform itexture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:32 Constant: +0:32 0.750000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval22' (temp 4-component vector of uint) +0:33 textureLod (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler2DArray) +0:33 'g_tTex2du4a' (uniform utexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:33 Constant: +0:33 0.750000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval40' (temp 4-component vector of float) +0:35 textureLod (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp samplerCubeArray) +0:35 'g_tTexcdf4a' (uniform textureCubeArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:35 Constant: +0:35 0.750000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval41' (temp 4-component vector of int) +0:36 textureLod (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isamplerCubeArray) +0:36 'g_tTexcdi4a' (uniform itextureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:36 Constant: +0:36 0.750000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval42' (temp 4-component vector of uint) +0:37 textureLod (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usamplerCubeArray) +0:37 'g_tTexcdu4a' (uniform utextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? 1.000000 +0:37 Constant: +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 Depth}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1.000000 +0:39 1.000000 +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) +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 Sequence +0:42 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:24 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:24 Function Parameters: +0:? Sequence +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval10' (temp 4-component vector of float) +0:27 textureLod (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler1DArray) +0:27 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:27 Constant: +0:27 0.750000 +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval11' (temp 4-component vector of int) +0:28 textureLod (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler1DArray) +0:28 'g_tTex1di4a' (uniform itexture1DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:28 Constant: +0:28 0.750000 +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval12' (temp 4-component vector of uint) +0:29 textureLod (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler1DArray) +0:29 'g_tTex1du4a' (uniform utexture1DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:29 Constant: +0:29 0.750000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval20' (temp 4-component vector of float) +0:31 textureLod (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler2DArray) +0:31 'g_tTex2df4a' (uniform texture2DArray) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:31 Constant: +0:31 0.750000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval21' (temp 4-component vector of int) +0:32 textureLod (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler2DArray) +0:32 'g_tTex2di4a' (uniform itexture2DArray) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:32 Constant: +0:32 0.750000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval22' (temp 4-component vector of uint) +0:33 textureLod (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler2DArray) +0:33 'g_tTex2du4a' (uniform utexture2DArray) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:33 Constant: +0:33 0.750000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval40' (temp 4-component vector of float) +0:35 textureLod (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp samplerCubeArray) +0:35 'g_tTexcdf4a' (uniform textureCubeArray) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:? 0.400000 +0:35 Constant: +0:35 0.750000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval41' (temp 4-component vector of int) +0:36 textureLod (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isamplerCubeArray) +0:36 'g_tTexcdi4a' (uniform itextureCubeArray) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:36 Constant: +0:36 0.750000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval42' (temp 4-component vector of uint) +0:37 textureLod (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usamplerCubeArray) +0:37 'g_tTexcdu4a' (uniform utextureCubeArray) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:? 1.000000 +0:37 Constant: +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 Depth}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1.000000 +0:39 1.000000 +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) +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 Sequence +0:42 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +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 140 + + Capability Shader + Capability Sampled1D + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 131 135 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4a" + Name 16 "g_sSamp" + Name 29 "txval11" + Name 32 "g_tTex1di4a" + Name 43 "txval12" + Name 46 "g_tTex1du4a" + Name 54 "txval20" + Name 57 "g_tTex2df4a" + Name 65 "txval21" + Name 68 "g_tTex2di4a" + Name 76 "txval22" + Name 79 "g_tTex2du4a" + Name 88 "txval40" + Name 91 "g_tTexcdf4a" + Name 98 "txval41" + Name 101 "g_tTexcdi4a" + Name 108 "txval42" + Name 111 "g_tTexcdu4a" + Name 121 "PS_OUTPUT" + MemberName 121(PS_OUTPUT) 0 "Color" + MemberName 121(PS_OUTPUT) 1 "Depth" + Name 123 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 32(g_tTex1di4a) DescriptorSet 0 + Decorate 46(g_tTex1du4a) DescriptorSet 0 + Decorate 57(g_tTex2df4a) DescriptorSet 0 + Decorate 68(g_tTex2di4a) DescriptorSet 0 + Decorate 79(g_tTex2du4a) DescriptorSet 0 + Decorate 91(g_tTexcdf4a) DescriptorSet 0 + Decorate 101(g_tTexcdi4a) DescriptorSet 0 + Decorate 111(g_tTexcdu4a) DescriptorSet 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4a): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: 6(float) Constant 1061158912 + 26: TypeInt 32 1 + 27: TypeVector 26(int) 4 + 28: TypePointer Function 27(ivec4) + 30: TypeImage 26(int) 1D array sampled format:Unknown + 31: TypePointer UniformConstant 30 + 32(g_tTex1di4a): 31(ptr) Variable UniformConstant + 35: TypeSampledImage 30 + 37: 6(float) Constant 1050253722 + 38: 20(fvec2) ConstantComposite 22 37 + 40: TypeInt 32 0 + 41: TypeVector 40(int) 4 + 42: TypePointer Function 41(ivec4) + 44: TypeImage 40(int) 1D array sampled format:Unknown + 45: TypePointer UniformConstant 44 + 46(g_tTex1du4a): 45(ptr) Variable UniformConstant + 49: TypeSampledImage 44 + 51: 6(float) Constant 1053609165 + 52: 20(fvec2) ConstantComposite 37 51 + 55: TypeImage 6(float) 2D array sampled format:Unknown + 56: TypePointer UniformConstant 55 + 57(g_tTex2df4a): 56(ptr) Variable UniformConstant + 60: TypeSampledImage 55 + 62: TypeVector 6(float) 3 + 63: 62(fvec3) ConstantComposite 21 22 37 + 66: TypeImage 26(int) 2D array sampled format:Unknown + 67: TypePointer UniformConstant 66 + 68(g_tTex2di4a): 67(ptr) Variable UniformConstant + 71: TypeSampledImage 66 + 73: 6(float) Constant 1056964608 + 74: 62(fvec3) ConstantComposite 37 51 73 + 77: TypeImage 40(int) 2D array sampled format:Unknown + 78: TypePointer UniformConstant 77 + 79(g_tTex2du4a): 78(ptr) Variable UniformConstant + 82: TypeSampledImage 77 + 84: 6(float) Constant 1058642330 + 85: 6(float) Constant 1060320051 + 86: 62(fvec3) ConstantComposite 73 84 85 + 89: TypeImage 6(float) Cube array sampled format:Unknown + 90: TypePointer UniformConstant 89 + 91(g_tTexcdf4a): 90(ptr) Variable UniformConstant + 94: TypeSampledImage 89 + 96: 7(fvec4) ConstantComposite 21 22 37 51 + 99: TypeImage 26(int) Cube array sampled format:Unknown + 100: TypePointer UniformConstant 99 +101(g_tTexcdi4a): 100(ptr) Variable UniformConstant + 104: TypeSampledImage 99 + 106: 7(fvec4) ConstantComposite 51 73 84 85 + 109: TypeImage 40(int) Cube array sampled format:Unknown + 110: TypePointer UniformConstant 109 +111(g_tTexcdu4a): 110(ptr) Variable UniformConstant + 114: TypeSampledImage 109 + 116: 6(float) Constant 1061997773 + 117: 6(float) Constant 1063675494 + 118: 6(float) Constant 1065353216 + 119: 7(fvec4) ConstantComposite 85 116 117 118 + 121(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 122: TypePointer Function 121(PS_OUTPUT) + 124: 26(int) Constant 0 + 125: 7(fvec4) ConstantComposite 118 118 118 118 + 127: 26(int) Constant 1 + 128: TypePointer Function 6(float) + 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 + 29(txval11): 28(ptr) Variable Function + 43(txval12): 42(ptr) Variable Function + 54(txval20): 8(ptr) Variable Function + 65(txval21): 28(ptr) Variable Function + 76(txval22): 42(ptr) Variable Function + 88(txval40): 8(ptr) Variable Function + 98(txval41): 28(ptr) Variable Function + 108(txval42): 42(ptr) Variable Function + 123(psout): 122(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4a) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 25: 7(fvec4) ImageSampleExplicitLod 19 23 Lod 24 + Store 9(txval10) 25 + 33: 30 Load 32(g_tTex1di4a) + 34: 14 Load 16(g_sSamp) + 36: 35 SampledImage 33 34 + 39: 27(ivec4) ImageSampleExplicitLod 36 38 Lod 24 + Store 29(txval11) 39 + 47: 44 Load 46(g_tTex1du4a) + 48: 14 Load 16(g_sSamp) + 50: 49 SampledImage 47 48 + 53: 41(ivec4) ImageSampleExplicitLod 50 52 Lod 24 + Store 43(txval12) 53 + 58: 55 Load 57(g_tTex2df4a) + 59: 14 Load 16(g_sSamp) + 61: 60 SampledImage 58 59 + 64: 7(fvec4) ImageSampleExplicitLod 61 63 Lod 24 + Store 54(txval20) 64 + 69: 66 Load 68(g_tTex2di4a) + 70: 14 Load 16(g_sSamp) + 72: 71 SampledImage 69 70 + 75: 27(ivec4) ImageSampleExplicitLod 72 74 Lod 24 + Store 65(txval21) 75 + 80: 77 Load 79(g_tTex2du4a) + 81: 14 Load 16(g_sSamp) + 83: 82 SampledImage 80 81 + 87: 41(ivec4) ImageSampleExplicitLod 83 86 Lod 24 + Store 76(txval22) 87 + 92: 89 Load 91(g_tTexcdf4a) + 93: 14 Load 16(g_sSamp) + 95: 94 SampledImage 92 93 + 97: 7(fvec4) ImageSampleExplicitLod 95 96 Lod 24 + Store 88(txval40) 97 + 102: 99 Load 101(g_tTexcdi4a) + 103: 14 Load 16(g_sSamp) + 105: 104 SampledImage 102 103 + 107: 27(ivec4) ImageSampleExplicitLod 105 106 Lod 24 + Store 98(txval41) 107 + 112: 109 Load 111(g_tTexcdu4a) + 113: 14 Load 16(g_sSamp) + 115: 114 SampledImage 112 113 + 120: 41(ivec4) ImageSampleExplicitLod 115 119 Lod 24 + Store 108(txval42) 120 + 126: 8(ptr) AccessChain 123(psout) 124 + Store 126 125 + 129: 128(ptr) AccessChain 123(psout) 127 + Store 129 118 + 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 new file mode 100644 index 00000000..d37090fa --- /dev/null +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out @@ -0,0 +1,657 @@ +hlsl.samplelevel.basic.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:29 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:29 Function Parameters: +0:? Sequence +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of float) +0:32 'txval10' (temp 4-component vector of float) +0:32 textureLod (temp 4-component vector of float) +0:32 Construct combined texture-sampler (temp sampler1D) +0:32 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.100000 +0:32 Constant: +0:32 0.750000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of int) +0:33 'txval11' (temp 4-component vector of int) +0:33 textureLod (temp 4-component vector of int) +0:33 Construct combined texture-sampler (temp isampler1D) +0:33 'g_tTex1di4' (uniform itexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.200000 +0:33 Constant: +0:33 0.750000 +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of uint) +0:34 'txval12' (temp 4-component vector of uint) +0:34 textureLod (temp 4-component vector of uint) +0:34 Construct combined texture-sampler (temp usampler1D) +0:34 'g_tTex1du4' (uniform utexture1D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:34 Constant: +0:34 0.300000 +0:34 Constant: +0:34 0.750000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of float) +0:36 'txval20' (temp 4-component vector of float) +0:36 textureLod (temp 4-component vector of float) +0:36 Construct combined texture-sampler (temp sampler2D) +0:36 'g_tTex2df4' (uniform texture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:36 Constant: +0:36 0.750000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of int) +0:37 'txval21' (temp 4-component vector of int) +0:37 textureLod (temp 4-component vector of int) +0:37 Construct combined texture-sampler (temp isampler2D) +0:37 'g_tTex2di4' (uniform itexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:37 Constant: +0:37 0.750000 +0:38 Sequence +0:38 move second child to first child (temp 4-component vector of uint) +0:38 'txval22' (temp 4-component vector of uint) +0:38 textureLod (temp 4-component vector of uint) +0:38 Construct combined texture-sampler (temp usampler2D) +0:38 'g_tTex2du4' (uniform utexture2D) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:38 Constant: +0:38 0.750000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of float) +0:40 'txval30' (temp 4-component vector of float) +0:40 textureLod (temp 4-component vector of float) +0:40 Construct combined texture-sampler (temp sampler3D) +0:40 'g_tTex3df4' (uniform texture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:40 Constant: +0:40 0.750000 +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of int) +0:41 'txval31' (temp 4-component vector of int) +0:41 textureLod (temp 4-component vector of int) +0:41 Construct combined texture-sampler (temp isampler3D) +0:41 'g_tTex3di4' (uniform itexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:41 Constant: +0:41 0.750000 +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of uint) +0:42 'txval32' (temp 4-component vector of uint) +0:42 textureLod (temp 4-component vector of uint) +0:42 Construct combined texture-sampler (temp usampler3D) +0:42 'g_tTex3du4' (uniform utexture3D) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:42 Constant: +0:42 0.750000 +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of float) +0:44 'txval40' (temp 4-component vector of float) +0:44 textureLod (temp 4-component vector of float) +0:44 Construct combined texture-sampler (temp samplerCube) +0:44 'g_tTexcdf4' (uniform textureCube) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:44 Constant: +0:44 0.750000 +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of int) +0:45 'txval41' (temp 4-component vector of int) +0:45 textureLod (temp 4-component vector of int) +0:45 Construct combined texture-sampler (temp isamplerCube) +0:45 'g_tTexcdi4' (uniform itextureCube) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:45 Constant: +0:45 0.750000 +0:46 Sequence +0:46 move second child to first child (temp 4-component vector of uint) +0:46 'txval42' (temp 4-component vector of uint) +0:46 textureLod (temp 4-component vector of uint) +0:46 Construct combined texture-sampler (temp usamplerCube) +0:46 'g_tTexcdu4' (uniform utextureCube) +0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:46 Constant: +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 Depth}) +0:48 Constant: +0:48 0 (const int) +0:48 Constant: +0:48 1.000000 +0:48 1.000000 +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) +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 Sequence +0:51 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) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:29 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:29 Function Parameters: +0:? Sequence +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of float) +0:32 'txval10' (temp 4-component vector of float) +0:32 textureLod (temp 4-component vector of float) +0:32 Construct combined texture-sampler (temp sampler1D) +0:32 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.100000 +0:32 Constant: +0:32 0.750000 +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of int) +0:33 'txval11' (temp 4-component vector of int) +0:33 textureLod (temp 4-component vector of int) +0:33 Construct combined texture-sampler (temp isampler1D) +0:33 'g_tTex1di4' (uniform itexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.200000 +0:33 Constant: +0:33 0.750000 +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of uint) +0:34 'txval12' (temp 4-component vector of uint) +0:34 textureLod (temp 4-component vector of uint) +0:34 Construct combined texture-sampler (temp usampler1D) +0:34 'g_tTex1du4' (uniform utexture1D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:34 Constant: +0:34 0.300000 +0:34 Constant: +0:34 0.750000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of float) +0:36 'txval20' (temp 4-component vector of float) +0:36 textureLod (temp 4-component vector of float) +0:36 Construct combined texture-sampler (temp sampler2D) +0:36 'g_tTex2df4' (uniform texture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:36 Constant: +0:36 0.750000 +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of int) +0:37 'txval21' (temp 4-component vector of int) +0:37 textureLod (temp 4-component vector of int) +0:37 Construct combined texture-sampler (temp isampler2D) +0:37 'g_tTex2di4' (uniform itexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:37 Constant: +0:37 0.750000 +0:38 Sequence +0:38 move second child to first child (temp 4-component vector of uint) +0:38 'txval22' (temp 4-component vector of uint) +0:38 textureLod (temp 4-component vector of uint) +0:38 Construct combined texture-sampler (temp usampler2D) +0:38 'g_tTex2du4' (uniform utexture2D) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:38 Constant: +0:38 0.750000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of float) +0:40 'txval30' (temp 4-component vector of float) +0:40 textureLod (temp 4-component vector of float) +0:40 Construct combined texture-sampler (temp sampler3D) +0:40 'g_tTex3df4' (uniform texture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:40 Constant: +0:40 0.750000 +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of int) +0:41 'txval31' (temp 4-component vector of int) +0:41 textureLod (temp 4-component vector of int) +0:41 Construct combined texture-sampler (temp isampler3D) +0:41 'g_tTex3di4' (uniform itexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:41 Constant: +0:41 0.750000 +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of uint) +0:42 'txval32' (temp 4-component vector of uint) +0:42 textureLod (temp 4-component vector of uint) +0:42 Construct combined texture-sampler (temp usampler3D) +0:42 'g_tTex3du4' (uniform utexture3D) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:42 Constant: +0:42 0.750000 +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of float) +0:44 'txval40' (temp 4-component vector of float) +0:44 textureLod (temp 4-component vector of float) +0:44 Construct combined texture-sampler (temp samplerCube) +0:44 'g_tTexcdf4' (uniform textureCube) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:44 Constant: +0:44 0.750000 +0:45 Sequence +0:45 move second child to first child (temp 4-component vector of int) +0:45 'txval41' (temp 4-component vector of int) +0:45 textureLod (temp 4-component vector of int) +0:45 Construct combined texture-sampler (temp isamplerCube) +0:45 'g_tTexcdi4' (uniform itextureCube) +0:45 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:45 Constant: +0:45 0.750000 +0:46 Sequence +0:46 move second child to first child (temp 4-component vector of uint) +0:46 'txval42' (temp 4-component vector of uint) +0:46 textureLod (temp 4-component vector of uint) +0:46 Construct combined texture-sampler (temp usamplerCube) +0:46 'g_tTexcdu4' (uniform utextureCube) +0:46 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:46 Constant: +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 Depth}) +0:48 Constant: +0:48 0 (const int) +0:48 Constant: +0:48 1.000000 +0:48 1.000000 +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) +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 Sequence +0:51 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) +0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1D) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 165 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 155 159 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 26 "txval11" + Name 29 "g_tTex1di4" + Name 39 "txval12" + Name 42 "g_tTex1du4" + Name 49 "txval20" + Name 52 "g_tTex2df4" + Name 60 "txval21" + Name 63 "g_tTex2di4" + Name 71 "txval22" + Name 74 "g_tTex2du4" + Name 83 "txval30" + Name 86 "g_tTex3df4" + Name 94 "txval31" + Name 97 "g_tTex3di4" + Name 104 "txval32" + Name 107 "g_tTex3du4" + Name 117 "txval40" + Name 120 "g_tTexcdf4" + Name 126 "txval41" + Name 129 "g_tTexcdi4" + Name 135 "txval42" + Name 138 "g_tTexcdu4" + Name 144 "PS_OUTPUT" + MemberName 144(PS_OUTPUT) 0 "Color" + MemberName 144(PS_OUTPUT) 1 "Depth" + Name 146 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 29(g_tTex1di4) DescriptorSet 0 + Decorate 42(g_tTex1du4) DescriptorSet 0 + Decorate 52(g_tTex2df4) DescriptorSet 0 + Decorate 63(g_tTex2di4) DescriptorSet 0 + Decorate 74(g_tTex2du4) DescriptorSet 0 + Decorate 86(g_tTex3df4) DescriptorSet 0 + Decorate 97(g_tTex3di4) DescriptorSet 0 + Decorate 107(g_tTex3du4) DescriptorSet 0 + Decorate 120(g_tTexcdf4) DescriptorSet 0 + Decorate 129(g_tTexcdi4) DescriptorSet 0 + Decorate 138(g_tTexcdu4) DescriptorSet 0 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1061158912 + 23: TypeInt 32 1 + 24: TypeVector 23(int) 4 + 25: TypePointer Function 24(ivec4) + 27: TypeImage 23(int) 1D sampled format:Unknown + 28: TypePointer UniformConstant 27 + 29(g_tTex1di4): 28(ptr) Variable UniformConstant + 32: TypeSampledImage 27 + 34: 6(float) Constant 1045220557 + 36: TypeInt 32 0 + 37: TypeVector 36(int) 4 + 38: TypePointer Function 37(ivec4) + 40: TypeImage 36(int) 1D sampled format:Unknown + 41: TypePointer UniformConstant 40 + 42(g_tTex1du4): 41(ptr) Variable UniformConstant + 45: TypeSampledImage 40 + 47: 6(float) Constant 1050253722 + 50: TypeImage 6(float) 2D sampled format:Unknown + 51: TypePointer UniformConstant 50 + 52(g_tTex2df4): 51(ptr) Variable UniformConstant + 55: TypeSampledImage 50 + 57: TypeVector 6(float) 2 + 58: 57(fvec2) ConstantComposite 20 34 + 61: TypeImage 23(int) 2D sampled format:Unknown + 62: TypePointer UniformConstant 61 + 63(g_tTex2di4): 62(ptr) Variable UniformConstant + 66: TypeSampledImage 61 + 68: 6(float) Constant 1053609165 + 69: 57(fvec2) ConstantComposite 47 68 + 72: TypeImage 36(int) 2D sampled format:Unknown + 73: TypePointer UniformConstant 72 + 74(g_tTex2du4): 73(ptr) Variable UniformConstant + 77: TypeSampledImage 72 + 79: 6(float) Constant 1056964608 + 80: 6(float) Constant 1058642330 + 81: 57(fvec2) ConstantComposite 79 80 + 84: TypeImage 6(float) 3D sampled format:Unknown + 85: TypePointer UniformConstant 84 + 86(g_tTex3df4): 85(ptr) Variable UniformConstant + 89: TypeSampledImage 84 + 91: TypeVector 6(float) 3 + 92: 91(fvec3) ConstantComposite 20 34 47 + 95: TypeImage 23(int) 3D sampled format:Unknown + 96: TypePointer UniformConstant 95 + 97(g_tTex3di4): 96(ptr) Variable UniformConstant + 100: TypeSampledImage 95 + 102: 91(fvec3) ConstantComposite 68 79 80 + 105: TypeImage 36(int) 3D sampled format:Unknown + 106: TypePointer UniformConstant 105 + 107(g_tTex3du4): 106(ptr) Variable UniformConstant + 110: TypeSampledImage 105 + 112: 6(float) Constant 1060320051 + 113: 6(float) Constant 1061997773 + 114: 6(float) Constant 1063675494 + 115: 91(fvec3) ConstantComposite 112 113 114 + 118: TypeImage 6(float) Cube sampled format:Unknown + 119: TypePointer UniformConstant 118 + 120(g_tTexcdf4): 119(ptr) Variable UniformConstant + 123: TypeSampledImage 118 + 127: TypeImage 23(int) Cube sampled format:Unknown + 128: TypePointer UniformConstant 127 + 129(g_tTexcdi4): 128(ptr) Variable UniformConstant + 132: TypeSampledImage 127 + 136: TypeImage 36(int) Cube sampled format:Unknown + 137: TypePointer UniformConstant 136 + 138(g_tTexcdu4): 137(ptr) Variable UniformConstant + 141: TypeSampledImage 136 + 144(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 145: TypePointer Function 144(PS_OUTPUT) + 147: 23(int) Constant 0 + 148: 6(float) Constant 1065353216 + 149: 7(fvec4) ConstantComposite 148 148 148 148 + 151: 23(int) Constant 1 + 152: TypePointer Function 6(float) + 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 + 26(txval11): 25(ptr) Variable Function + 39(txval12): 38(ptr) Variable Function + 49(txval20): 8(ptr) Variable Function + 60(txval21): 25(ptr) Variable Function + 71(txval22): 38(ptr) Variable Function + 83(txval30): 8(ptr) Variable Function + 94(txval31): 25(ptr) Variable Function + 104(txval32): 38(ptr) Variable Function + 117(txval40): 8(ptr) Variable Function + 126(txval41): 25(ptr) Variable Function + 135(txval42): 38(ptr) Variable Function + 146(psout): 145(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 22: 7(fvec4) ImageSampleExplicitLod 19 20 Lod 21 + Store 9(txval10) 22 + 30: 27 Load 29(g_tTex1di4) + 31: 14 Load 16(g_sSamp) + 33: 32 SampledImage 30 31 + 35: 24(ivec4) ImageSampleExplicitLod 33 34 Lod 21 + Store 26(txval11) 35 + 43: 40 Load 42(g_tTex1du4) + 44: 14 Load 16(g_sSamp) + 46: 45 SampledImage 43 44 + 48: 37(ivec4) ImageSampleExplicitLod 46 47 Lod 21 + Store 39(txval12) 48 + 53: 50 Load 52(g_tTex2df4) + 54: 14 Load 16(g_sSamp) + 56: 55 SampledImage 53 54 + 59: 7(fvec4) ImageSampleExplicitLod 56 58 Lod 21 + Store 49(txval20) 59 + 64: 61 Load 63(g_tTex2di4) + 65: 14 Load 16(g_sSamp) + 67: 66 SampledImage 64 65 + 70: 24(ivec4) ImageSampleExplicitLod 67 69 Lod 21 + Store 60(txval21) 70 + 75: 72 Load 74(g_tTex2du4) + 76: 14 Load 16(g_sSamp) + 78: 77 SampledImage 75 76 + 82: 37(ivec4) ImageSampleExplicitLod 78 81 Lod 21 + Store 71(txval22) 82 + 87: 84 Load 86(g_tTex3df4) + 88: 14 Load 16(g_sSamp) + 90: 89 SampledImage 87 88 + 93: 7(fvec4) ImageSampleExplicitLod 90 92 Lod 21 + Store 83(txval30) 93 + 98: 95 Load 97(g_tTex3di4) + 99: 14 Load 16(g_sSamp) + 101: 100 SampledImage 98 99 + 103: 24(ivec4) ImageSampleExplicitLod 101 102 Lod 21 + Store 94(txval31) 103 + 108: 105 Load 107(g_tTex3du4) + 109: 14 Load 16(g_sSamp) + 111: 110 SampledImage 108 109 + 116: 37(ivec4) ImageSampleExplicitLod 111 115 Lod 21 + Store 104(txval32) 116 + 121: 118 Load 120(g_tTexcdf4) + 122: 14 Load 16(g_sSamp) + 124: 123 SampledImage 121 122 + 125: 7(fvec4) ImageSampleExplicitLod 124 92 Lod 21 + Store 117(txval40) 125 + 130: 127 Load 129(g_tTexcdi4) + 131: 14 Load 16(g_sSamp) + 133: 132 SampledImage 130 131 + 134: 24(ivec4) ImageSampleExplicitLod 133 102 Lod 21 + Store 126(txval41) 134 + 139: 136 Load 138(g_tTexcdu4) + 140: 14 Load 16(g_sSamp) + 142: 141 SampledImage 139 140 + 143: 37(ivec4) ImageSampleExplicitLod 142 115 Lod 21 + Store 135(txval42) 143 + 150: 8(ptr) AccessChain 146(psout) 147 + Store 150 149 + 153: 152(ptr) AccessChain 146(psout) 151 + Store 153 148 + 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 new file mode 100644 index 00000000..04382997 --- /dev/null +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out @@ -0,0 +1,609 @@ +hlsl.samplelevel.basic.dx10.vert +Shader version: 450 +0:? Sequence +0:27 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) +0:27 Function Parameters: +0:? Sequence +0:30 Sequence +0:30 move second child to first child (temp 4-component vector of float) +0:30 'txval10' (temp 4-component vector of float) +0:30 textureLod (temp 4-component vector of float) +0:30 Construct combined texture-sampler (temp sampler1D) +0:30 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:30 Constant: +0:30 0.100000 +0:30 Constant: +0:30 0.750000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of int) +0:31 'txval11' (temp 4-component vector of int) +0:31 textureLod (temp 4-component vector of int) +0:31 Construct combined texture-sampler (temp isampler1D) +0:31 'g_tTex1di4' (uniform itexture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.200000 +0:31 Constant: +0:31 0.750000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of uint) +0:32 'txval12' (temp 4-component vector of uint) +0:32 textureLod (temp 4-component vector of uint) +0:32 Construct combined texture-sampler (temp usampler1D) +0:32 'g_tTex1du4' (uniform utexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.300000 +0:32 Constant: +0:32 0.750000 +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of float) +0:34 'txval20' (temp 4-component vector of float) +0:34 textureLod (temp 4-component vector of float) +0:34 Construct combined texture-sampler (temp sampler2D) +0:34 'g_tTex2df4' (uniform texture2D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:34 Constant: +0:34 0.750000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of int) +0:35 'txval21' (temp 4-component vector of int) +0:35 textureLod (temp 4-component vector of int) +0:35 Construct combined texture-sampler (temp isampler2D) +0:35 'g_tTex2di4' (uniform itexture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:35 Constant: +0:35 0.750000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of uint) +0:36 'txval22' (temp 4-component vector of uint) +0:36 textureLod (temp 4-component vector of uint) +0:36 Construct combined texture-sampler (temp usampler2D) +0:36 'g_tTex2du4' (uniform utexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:36 Constant: +0:36 0.750000 +0:38 Sequence +0:38 move second child to first child (temp 4-component vector of float) +0:38 'txval30' (temp 4-component vector of float) +0:38 textureLod (temp 4-component vector of float) +0:38 Construct combined texture-sampler (temp sampler3D) +0:38 'g_tTex3df4' (uniform texture3D) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:38 Constant: +0:38 0.750000 +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of int) +0:39 'txval31' (temp 4-component vector of int) +0:39 textureLod (temp 4-component vector of int) +0:39 Construct combined texture-sampler (temp isampler3D) +0:39 'g_tTex3di4' (uniform itexture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:39 Constant: +0:39 0.750000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of uint) +0:40 'txval32' (temp 4-component vector of uint) +0:40 textureLod (temp 4-component vector of uint) +0:40 Construct combined texture-sampler (temp usampler3D) +0:40 'g_tTex3du4' (uniform utexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:40 Constant: +0:40 0.750000 +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of float) +0:42 'txval40' (temp 4-component vector of float) +0:42 textureLod (temp 4-component vector of float) +0:42 Construct combined texture-sampler (temp samplerCube) +0:42 'g_tTexcdf4' (uniform textureCube) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:42 Constant: +0:42 0.750000 +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of int) +0:43 'txval41' (temp 4-component vector of int) +0:43 textureLod (temp 4-component vector of int) +0:43 Construct combined texture-sampler (temp isamplerCube) +0:43 'g_tTexcdi4' (uniform itextureCube) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:43 Constant: +0:43 0.750000 +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of uint) +0:44 'txval42' (temp 4-component vector of uint) +0:44 textureLod (temp 4-component vector of uint) +0:44 Construct combined texture-sampler (temp usamplerCube) +0:44 'g_tTexcdu4' (uniform utextureCube) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +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) +0:46 'vsout' (temp structure{temp 4-component vector of float Pos}) +0:46 Constant: +0:46 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:48 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +0:? Sequence +0:27 Function Definition: main( (temp structure{temp 4-component vector of float Pos}) +0:27 Function Parameters: +0:? Sequence +0:30 Sequence +0:30 move second child to first child (temp 4-component vector of float) +0:30 'txval10' (temp 4-component vector of float) +0:30 textureLod (temp 4-component vector of float) +0:30 Construct combined texture-sampler (temp sampler1D) +0:30 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:30 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:30 Constant: +0:30 0.100000 +0:30 Constant: +0:30 0.750000 +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of int) +0:31 'txval11' (temp 4-component vector of int) +0:31 textureLod (temp 4-component vector of int) +0:31 Construct combined texture-sampler (temp isampler1D) +0:31 'g_tTex1di4' (uniform itexture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.200000 +0:31 Constant: +0:31 0.750000 +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of uint) +0:32 'txval12' (temp 4-component vector of uint) +0:32 textureLod (temp 4-component vector of uint) +0:32 Construct combined texture-sampler (temp usampler1D) +0:32 'g_tTex1du4' (uniform utexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.300000 +0:32 Constant: +0:32 0.750000 +0:34 Sequence +0:34 move second child to first child (temp 4-component vector of float) +0:34 'txval20' (temp 4-component vector of float) +0:34 textureLod (temp 4-component vector of float) +0:34 Construct combined texture-sampler (temp sampler2D) +0:34 'g_tTex2df4' (uniform texture2D) +0:34 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:34 Constant: +0:34 0.750000 +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of int) +0:35 'txval21' (temp 4-component vector of int) +0:35 textureLod (temp 4-component vector of int) +0:35 Construct combined texture-sampler (temp isampler2D) +0:35 'g_tTex2di4' (uniform itexture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:35 Constant: +0:35 0.750000 +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of uint) +0:36 'txval22' (temp 4-component vector of uint) +0:36 textureLod (temp 4-component vector of uint) +0:36 Construct combined texture-sampler (temp usampler2D) +0:36 'g_tTex2du4' (uniform utexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:36 Constant: +0:36 0.750000 +0:38 Sequence +0:38 move second child to first child (temp 4-component vector of float) +0:38 'txval30' (temp 4-component vector of float) +0:38 textureLod (temp 4-component vector of float) +0:38 Construct combined texture-sampler (temp sampler3D) +0:38 'g_tTex3df4' (uniform texture3D) +0:38 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:38 Constant: +0:38 0.750000 +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of int) +0:39 'txval31' (temp 4-component vector of int) +0:39 textureLod (temp 4-component vector of int) +0:39 Construct combined texture-sampler (temp isampler3D) +0:39 'g_tTex3di4' (uniform itexture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:39 Constant: +0:39 0.750000 +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of uint) +0:40 'txval32' (temp 4-component vector of uint) +0:40 textureLod (temp 4-component vector of uint) +0:40 Construct combined texture-sampler (temp usampler3D) +0:40 'g_tTex3du4' (uniform utexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:40 Constant: +0:40 0.750000 +0:42 Sequence +0:42 move second child to first child (temp 4-component vector of float) +0:42 'txval40' (temp 4-component vector of float) +0:42 textureLod (temp 4-component vector of float) +0:42 Construct combined texture-sampler (temp samplerCube) +0:42 'g_tTexcdf4' (uniform textureCube) +0:42 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:42 Constant: +0:42 0.750000 +0:43 Sequence +0:43 move second child to first child (temp 4-component vector of int) +0:43 'txval41' (temp 4-component vector of int) +0:43 textureLod (temp 4-component vector of int) +0:43 Construct combined texture-sampler (temp isamplerCube) +0:43 'g_tTexcdi4' (uniform itextureCube) +0:43 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:43 Constant: +0:43 0.750000 +0:44 Sequence +0:44 move second child to first child (temp 4-component vector of uint) +0:44 'txval42' (temp 4-component vector of uint) +0:44 textureLod (temp 4-component vector of uint) +0:44 Construct combined texture-sampler (temp usamplerCube) +0:44 'g_tTexcdu4' (uniform utextureCube) +0:44 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +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) +0:46 'vsout' (temp structure{temp 4-component vector of float Pos}) +0:46 Constant: +0:46 0 (const int) +0:? Constant: +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:? 0.000000 +0:48 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 157 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 152 + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 26 "txval11" + Name 29 "g_tTex1di4" + Name 39 "txval12" + Name 42 "g_tTex1du4" + Name 49 "txval20" + Name 52 "g_tTex2df4" + Name 60 "txval21" + Name 63 "g_tTex2di4" + Name 71 "txval22" + Name 74 "g_tTex2du4" + Name 83 "txval30" + Name 86 "g_tTex3df4" + Name 94 "txval31" + Name 97 "g_tTex3di4" + Name 104 "txval32" + Name 107 "g_tTex3du4" + Name 117 "txval40" + Name 120 "g_tTexcdf4" + Name 126 "txval41" + Name 129 "g_tTexcdi4" + Name 135 "txval42" + Name 138 "g_tTexcdu4" + Name 144 "VS_OUTPUT" + MemberName 144(VS_OUTPUT) 0 "Pos" + Name 146 "vsout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 29(g_tTex1di4) DescriptorSet 0 + Decorate 42(g_tTex1du4) DescriptorSet 0 + Decorate 52(g_tTex2df4) DescriptorSet 0 + Decorate 63(g_tTex2di4) DescriptorSet 0 + Decorate 74(g_tTex2du4) DescriptorSet 0 + Decorate 86(g_tTex3df4) DescriptorSet 0 + Decorate 97(g_tTex3di4) DescriptorSet 0 + Decorate 107(g_tTex3du4) DescriptorSet 0 + Decorate 120(g_tTexcdf4) DescriptorSet 0 + Decorate 129(g_tTexcdi4) DescriptorSet 0 + Decorate 138(g_tTexcdu4) DescriptorSet 0 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1061158912 + 23: TypeInt 32 1 + 24: TypeVector 23(int) 4 + 25: TypePointer Function 24(ivec4) + 27: TypeImage 23(int) 1D sampled format:Unknown + 28: TypePointer UniformConstant 27 + 29(g_tTex1di4): 28(ptr) Variable UniformConstant + 32: TypeSampledImage 27 + 34: 6(float) Constant 1045220557 + 36: TypeInt 32 0 + 37: TypeVector 36(int) 4 + 38: TypePointer Function 37(ivec4) + 40: TypeImage 36(int) 1D sampled format:Unknown + 41: TypePointer UniformConstant 40 + 42(g_tTex1du4): 41(ptr) Variable UniformConstant + 45: TypeSampledImage 40 + 47: 6(float) Constant 1050253722 + 50: TypeImage 6(float) 2D sampled format:Unknown + 51: TypePointer UniformConstant 50 + 52(g_tTex2df4): 51(ptr) Variable UniformConstant + 55: TypeSampledImage 50 + 57: TypeVector 6(float) 2 + 58: 57(fvec2) ConstantComposite 20 34 + 61: TypeImage 23(int) 2D sampled format:Unknown + 62: TypePointer UniformConstant 61 + 63(g_tTex2di4): 62(ptr) Variable UniformConstant + 66: TypeSampledImage 61 + 68: 6(float) Constant 1053609165 + 69: 57(fvec2) ConstantComposite 47 68 + 72: TypeImage 36(int) 2D sampled format:Unknown + 73: TypePointer UniformConstant 72 + 74(g_tTex2du4): 73(ptr) Variable UniformConstant + 77: TypeSampledImage 72 + 79: 6(float) Constant 1056964608 + 80: 6(float) Constant 1058642330 + 81: 57(fvec2) ConstantComposite 79 80 + 84: TypeImage 6(float) 3D sampled format:Unknown + 85: TypePointer UniformConstant 84 + 86(g_tTex3df4): 85(ptr) Variable UniformConstant + 89: TypeSampledImage 84 + 91: TypeVector 6(float) 3 + 92: 91(fvec3) ConstantComposite 20 34 47 + 95: TypeImage 23(int) 3D sampled format:Unknown + 96: TypePointer UniformConstant 95 + 97(g_tTex3di4): 96(ptr) Variable UniformConstant + 100: TypeSampledImage 95 + 102: 91(fvec3) ConstantComposite 68 79 80 + 105: TypeImage 36(int) 3D sampled format:Unknown + 106: TypePointer UniformConstant 105 + 107(g_tTex3du4): 106(ptr) Variable UniformConstant + 110: TypeSampledImage 105 + 112: 6(float) Constant 1060320051 + 113: 6(float) Constant 1061997773 + 114: 6(float) Constant 1063675494 + 115: 91(fvec3) ConstantComposite 112 113 114 + 118: TypeImage 6(float) Cube sampled format:Unknown + 119: TypePointer UniformConstant 118 + 120(g_tTexcdf4): 119(ptr) Variable UniformConstant + 123: TypeSampledImage 118 + 127: TypeImage 23(int) Cube sampled format:Unknown + 128: TypePointer UniformConstant 127 + 129(g_tTexcdi4): 128(ptr) Variable UniformConstant + 132: TypeSampledImage 127 + 136: TypeImage 36(int) Cube sampled format:Unknown + 137: TypePointer UniformConstant 136 + 138(g_tTexcdu4): 137(ptr) Variable UniformConstant + 141: TypeSampledImage 136 + 144(VS_OUTPUT): TypeStruct 7(fvec4) + 145: TypePointer Function 144(VS_OUTPUT) + 147: 23(int) Constant 0 + 148: 6(float) Constant 0 + 149: 7(fvec4) ConstantComposite 148 148 148 148 + 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 + 26(txval11): 25(ptr) Variable Function + 39(txval12): 38(ptr) Variable Function + 49(txval20): 8(ptr) Variable Function + 60(txval21): 25(ptr) Variable Function + 71(txval22): 38(ptr) Variable Function + 83(txval30): 8(ptr) Variable Function + 94(txval31): 25(ptr) Variable Function + 104(txval32): 38(ptr) Variable Function + 117(txval40): 8(ptr) Variable Function + 126(txval41): 25(ptr) Variable Function + 135(txval42): 38(ptr) Variable Function + 146(vsout): 145(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 22: 7(fvec4) ImageSampleExplicitLod 19 20 Lod 21 + Store 9(txval10) 22 + 30: 27 Load 29(g_tTex1di4) + 31: 14 Load 16(g_sSamp) + 33: 32 SampledImage 30 31 + 35: 24(ivec4) ImageSampleExplicitLod 33 34 Lod 21 + Store 26(txval11) 35 + 43: 40 Load 42(g_tTex1du4) + 44: 14 Load 16(g_sSamp) + 46: 45 SampledImage 43 44 + 48: 37(ivec4) ImageSampleExplicitLod 46 47 Lod 21 + Store 39(txval12) 48 + 53: 50 Load 52(g_tTex2df4) + 54: 14 Load 16(g_sSamp) + 56: 55 SampledImage 53 54 + 59: 7(fvec4) ImageSampleExplicitLod 56 58 Lod 21 + Store 49(txval20) 59 + 64: 61 Load 63(g_tTex2di4) + 65: 14 Load 16(g_sSamp) + 67: 66 SampledImage 64 65 + 70: 24(ivec4) ImageSampleExplicitLod 67 69 Lod 21 + Store 60(txval21) 70 + 75: 72 Load 74(g_tTex2du4) + 76: 14 Load 16(g_sSamp) + 78: 77 SampledImage 75 76 + 82: 37(ivec4) ImageSampleExplicitLod 78 81 Lod 21 + Store 71(txval22) 82 + 87: 84 Load 86(g_tTex3df4) + 88: 14 Load 16(g_sSamp) + 90: 89 SampledImage 87 88 + 93: 7(fvec4) ImageSampleExplicitLod 90 92 Lod 21 + Store 83(txval30) 93 + 98: 95 Load 97(g_tTex3di4) + 99: 14 Load 16(g_sSamp) + 101: 100 SampledImage 98 99 + 103: 24(ivec4) ImageSampleExplicitLod 101 102 Lod 21 + Store 94(txval31) 103 + 108: 105 Load 107(g_tTex3du4) + 109: 14 Load 16(g_sSamp) + 111: 110 SampledImage 108 109 + 116: 37(ivec4) ImageSampleExplicitLod 111 115 Lod 21 + Store 104(txval32) 116 + 121: 118 Load 120(g_tTexcdf4) + 122: 14 Load 16(g_sSamp) + 124: 123 SampledImage 121 122 + 125: 7(fvec4) ImageSampleExplicitLod 124 92 Lod 21 + Store 117(txval40) 125 + 130: 127 Load 129(g_tTexcdi4) + 131: 14 Load 16(g_sSamp) + 133: 132 SampledImage 130 131 + 134: 24(ivec4) ImageSampleExplicitLod 133 102 Lod 21 + Store 126(txval41) 134 + 139: 136 Load 138(g_tTexcdu4) + 140: 14 Load 16(g_sSamp) + 142: 141 SampledImage 139 140 + 143: 37(ivec4) ImageSampleExplicitLod 142 115 Lod 21 + Store 135(txval42) 143 + 150: 8(ptr) AccessChain 146(vsout) 147 + Store 150 149 + 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 new file mode 100644 index 00000000..0f0f9681 --- /dev/null +++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out @@ -0,0 +1,613 @@ +hlsl.samplelevel.offset.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 textureLodOffset (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 0.750000 +0:31 Constant: +0:31 1 (const int) +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 textureLodOffset (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 0.750000 +0:32 Constant: +0:32 1 (const int) +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 textureLodOffset (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 0.750000 +0:33 Constant: +0:33 1 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 textureLodOffset (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:35 Constant: +0:35 0.750000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 textureLodOffset (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:36 Constant: +0:36 0.750000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 textureLodOffset (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:37 Constant: +0:37 0.750000 +0:? Constant: +0:? 1 (const int) +0:? -1 (const int) +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 textureLodOffset (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:39 Constant: +0:39 0.750000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:? 1 (const int) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 textureLodOffset (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:40 Constant: +0:40 0.750000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:? 1 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 textureLodOffset (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:41 Constant: +0:41 0.750000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +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 Depth}) +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1.000000 +0:45 1.000000 +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) +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 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:28 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:28 Function Parameters: +0:? Sequence +0:31 Sequence +0:31 move second child to first child (temp 4-component vector of float) +0:31 'txval10' (temp 4-component vector of float) +0:31 textureLodOffset (temp 4-component vector of float) +0:31 Construct combined texture-sampler (temp sampler1D) +0:31 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:31 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:31 Constant: +0:31 0.100000 +0:31 Constant: +0:31 0.750000 +0:31 Constant: +0:31 1 (const int) +0:32 Sequence +0:32 move second child to first child (temp 4-component vector of int) +0:32 'txval11' (temp 4-component vector of int) +0:32 textureLodOffset (temp 4-component vector of int) +0:32 Construct combined texture-sampler (temp isampler1D) +0:32 'g_tTex1di4' (uniform itexture1D) +0:32 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:32 Constant: +0:32 0.200000 +0:32 Constant: +0:32 0.750000 +0:32 Constant: +0:32 1 (const int) +0:33 Sequence +0:33 move second child to first child (temp 4-component vector of uint) +0:33 'txval12' (temp 4-component vector of uint) +0:33 textureLodOffset (temp 4-component vector of uint) +0:33 Construct combined texture-sampler (temp usampler1D) +0:33 'g_tTex1du4' (uniform utexture1D) +0:33 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:33 Constant: +0:33 0.300000 +0:33 Constant: +0:33 0.750000 +0:33 Constant: +0:33 1 (const int) +0:35 Sequence +0:35 move second child to first child (temp 4-component vector of float) +0:35 'txval20' (temp 4-component vector of float) +0:35 textureLodOffset (temp 4-component vector of float) +0:35 Construct combined texture-sampler (temp sampler2D) +0:35 'g_tTex2df4' (uniform texture2D) +0:35 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:35 Constant: +0:35 0.750000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:36 Sequence +0:36 move second child to first child (temp 4-component vector of int) +0:36 'txval21' (temp 4-component vector of int) +0:36 textureLodOffset (temp 4-component vector of int) +0:36 Construct combined texture-sampler (temp isampler2D) +0:36 'g_tTex2di4' (uniform itexture2D) +0:36 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:36 Constant: +0:36 0.750000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:37 Sequence +0:37 move second child to first child (temp 4-component vector of uint) +0:37 'txval22' (temp 4-component vector of uint) +0:37 textureLodOffset (temp 4-component vector of uint) +0:37 Construct combined texture-sampler (temp usampler2D) +0:37 'g_tTex2du4' (uniform utexture2D) +0:37 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:37 Constant: +0:37 0.750000 +0:? Constant: +0:? 1 (const int) +0:? -1 (const int) +0:39 Sequence +0:39 move second child to first child (temp 4-component vector of float) +0:39 'txval30' (temp 4-component vector of float) +0:39 textureLodOffset (temp 4-component vector of float) +0:39 Construct combined texture-sampler (temp sampler3D) +0:39 'g_tTex3df4' (uniform texture3D) +0:39 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:39 Constant: +0:39 0.750000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +0:? 1 (const int) +0:40 Sequence +0:40 move second child to first child (temp 4-component vector of int) +0:40 'txval31' (temp 4-component vector of int) +0:40 textureLodOffset (temp 4-component vector of int) +0:40 Construct combined texture-sampler (temp isampler3D) +0:40 'g_tTex3di4' (uniform itexture3D) +0:40 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.400000 +0:? 0.500000 +0:? 0.600000 +0:40 Constant: +0:40 0.750000 +0:? Constant: +0:? 1 (const int) +0:? 1 (const int) +0:? 1 (const int) +0:41 Sequence +0:41 move second child to first child (temp 4-component vector of uint) +0:41 'txval32' (temp 4-component vector of uint) +0:41 textureLodOffset (temp 4-component vector of uint) +0:41 Construct combined texture-sampler (temp usampler3D) +0:41 'g_tTex3du4' (uniform utexture3D) +0:41 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.700000 +0:? 0.800000 +0:? 0.900000 +0:41 Constant: +0:41 0.750000 +0:? Constant: +0:? 1 (const int) +0:? 0 (const int) +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 Depth}) +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1.000000 +0:45 1.000000 +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) +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 Sequence +0:48 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +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 155 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 137 141 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 27 "txval11" + Name 30 "g_tTex1di4" + Name 40 "txval12" + Name 43 "g_tTex1du4" + Name 50 "txval20" + Name 53 "g_tTex2df4" + Name 64 "txval21" + Name 67 "g_tTex2di4" + Name 76 "txval22" + Name 79 "g_tTex2du4" + Name 90 "txval30" + Name 93 "g_tTex3df4" + Name 103 "txval31" + Name 106 "g_tTex3di4" + Name 114 "txval32" + Name 117 "g_tTex3du4" + Name 128 "PS_OUTPUT" + MemberName 128(PS_OUTPUT) 0 "Color" + MemberName 128(PS_OUTPUT) 1 "Depth" + Name 130 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 30(g_tTex1di4) DescriptorSet 0 + Decorate 43(g_tTex1du4) DescriptorSet 0 + Decorate 53(g_tTex2df4) DescriptorSet 0 + Decorate 67(g_tTex2di4) DescriptorSet 0 + Decorate 79(g_tTex2du4) DescriptorSet 0 + Decorate 93(g_tTex3df4) DescriptorSet 0 + Decorate 106(g_tTex3di4) DescriptorSet 0 + Decorate 117(g_tTex3du4) 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: 6(float) Constant 1036831949 + 21: 6(float) Constant 1061158912 + 22: TypeInt 32 1 + 23: 22(int) Constant 1 + 25: TypeVector 22(int) 4 + 26: TypePointer Function 25(ivec4) + 28: TypeImage 22(int) 1D sampled format:Unknown + 29: TypePointer UniformConstant 28 + 30(g_tTex1di4): 29(ptr) Variable UniformConstant + 33: TypeSampledImage 28 + 35: 6(float) Constant 1045220557 + 37: TypeInt 32 0 + 38: TypeVector 37(int) 4 + 39: TypePointer Function 38(ivec4) + 41: TypeImage 37(int) 1D sampled format:Unknown + 42: TypePointer UniformConstant 41 + 43(g_tTex1du4): 42(ptr) Variable UniformConstant + 46: TypeSampledImage 41 + 48: 6(float) Constant 1050253722 + 51: TypeImage 6(float) 2D sampled format:Unknown + 52: TypePointer UniformConstant 51 + 53(g_tTex2df4): 52(ptr) Variable UniformConstant + 56: TypeSampledImage 51 + 58: TypeVector 6(float) 2 + 59: 58(fvec2) ConstantComposite 20 35 + 60: TypeVector 22(int) 2 + 61: 22(int) Constant 0 + 62: 60(ivec2) ConstantComposite 23 61 + 65: TypeImage 22(int) 2D sampled format:Unknown + 66: TypePointer UniformConstant 65 + 67(g_tTex2di4): 66(ptr) Variable UniformConstant + 70: TypeSampledImage 65 + 72: 6(float) Constant 1053609165 + 73: 58(fvec2) ConstantComposite 48 72 + 74: 60(ivec2) ConstantComposite 23 23 + 77: TypeImage 37(int) 2D sampled format:Unknown + 78: TypePointer UniformConstant 77 + 79(g_tTex2du4): 78(ptr) Variable UniformConstant + 82: TypeSampledImage 77 + 84: 6(float) Constant 1056964608 + 85: 6(float) Constant 1058642330 + 86: 58(fvec2) ConstantComposite 84 85 + 87: 22(int) Constant 4294967295 + 88: 60(ivec2) ConstantComposite 23 87 + 91: TypeImage 6(float) 3D sampled format:Unknown + 92: TypePointer UniformConstant 91 + 93(g_tTex3df4): 92(ptr) Variable UniformConstant + 96: TypeSampledImage 91 + 98: TypeVector 6(float) 3 + 99: 98(fvec3) ConstantComposite 20 35 48 + 100: TypeVector 22(int) 3 + 101: 100(ivec3) ConstantComposite 23 61 23 + 104: TypeImage 22(int) 3D sampled format:Unknown + 105: TypePointer UniformConstant 104 + 106(g_tTex3di4): 105(ptr) Variable UniformConstant + 109: TypeSampledImage 104 + 111: 98(fvec3) ConstantComposite 72 84 85 + 112: 100(ivec3) ConstantComposite 23 23 23 + 115: TypeImage 37(int) 3D sampled format:Unknown + 116: TypePointer UniformConstant 115 + 117(g_tTex3du4): 116(ptr) Variable UniformConstant + 120: TypeSampledImage 115 + 122: 6(float) Constant 1060320051 + 123: 6(float) Constant 1061997773 + 124: 6(float) Constant 1063675494 + 125: 98(fvec3) ConstantComposite 122 123 124 + 126: 100(ivec3) ConstantComposite 23 61 87 + 128(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 129: TypePointer Function 128(PS_OUTPUT) + 131: 6(float) Constant 1065353216 + 132: 7(fvec4) ConstantComposite 131 131 131 131 + 134: TypePointer Function 6(float) + 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 + 27(txval11): 26(ptr) Variable Function + 40(txval12): 39(ptr) Variable Function + 50(txval20): 8(ptr) Variable Function + 64(txval21): 26(ptr) Variable Function + 76(txval22): 39(ptr) Variable Function + 90(txval30): 8(ptr) Variable Function + 103(txval31): 26(ptr) Variable Function + 114(txval32): 39(ptr) Variable Function + 130(psout): 129(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 24: 7(fvec4) ImageSampleExplicitLod 19 20 Lod ConstOffset 21 23 + Store 9(txval10) 24 + 31: 28 Load 30(g_tTex1di4) + 32: 14 Load 16(g_sSamp) + 34: 33 SampledImage 31 32 + 36: 25(ivec4) ImageSampleExplicitLod 34 35 Lod ConstOffset 21 23 + Store 27(txval11) 36 + 44: 41 Load 43(g_tTex1du4) + 45: 14 Load 16(g_sSamp) + 47: 46 SampledImage 44 45 + 49: 38(ivec4) ImageSampleExplicitLod 47 48 Lod ConstOffset 21 23 + Store 40(txval12) 49 + 54: 51 Load 53(g_tTex2df4) + 55: 14 Load 16(g_sSamp) + 57: 56 SampledImage 54 55 + 63: 7(fvec4) ImageSampleExplicitLod 57 59 Lod ConstOffset 21 62 + Store 50(txval20) 63 + 68: 65 Load 67(g_tTex2di4) + 69: 14 Load 16(g_sSamp) + 71: 70 SampledImage 68 69 + 75: 25(ivec4) ImageSampleExplicitLod 71 73 Lod ConstOffset 21 74 + Store 64(txval21) 75 + 80: 77 Load 79(g_tTex2du4) + 81: 14 Load 16(g_sSamp) + 83: 82 SampledImage 80 81 + 89: 38(ivec4) ImageSampleExplicitLod 83 86 Lod ConstOffset 21 88 + Store 76(txval22) 89 + 94: 91 Load 93(g_tTex3df4) + 95: 14 Load 16(g_sSamp) + 97: 96 SampledImage 94 95 + 102: 7(fvec4) ImageSampleExplicitLod 97 99 Lod ConstOffset 21 101 + Store 90(txval30) 102 + 107: 104 Load 106(g_tTex3di4) + 108: 14 Load 16(g_sSamp) + 110: 109 SampledImage 107 108 + 113: 25(ivec4) ImageSampleExplicitLod 110 111 Lod ConstOffset 21 112 + Store 103(txval31) 113 + 118: 115 Load 117(g_tTex3du4) + 119: 14 Load 16(g_sSamp) + 121: 120 SampledImage 118 119 + 127: 38(ivec4) ImageSampleExplicitLod 121 125 Lod ConstOffset 21 126 + Store 114(txval32) 127 + 133: 8(ptr) AccessChain 130(psout) 61 + Store 133 132 + 135: 134(ptr) AccessChain 130(psout) 23 + Store 135 131 + 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 new file mode 100644 index 00000000..8eb74cd0 --- /dev/null +++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out @@ -0,0 +1,450 @@ +hlsl.samplelevel.offsetarray.dx10.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Parameters: +0:? Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:23 'txval10' (temp 4-component vector of float) +0:23 textureLodOffset (temp 4-component vector of float) +0:23 Construct combined texture-sampler (temp sampler1DArray) +0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:23 Constant: +0:23 0.750000 +0:23 Constant: +0:23 0 (const int) +0:24 Sequence +0:24 move second child to first child (temp 4-component vector of int) +0:24 'txval11' (temp 4-component vector of int) +0:24 textureLodOffset (temp 4-component vector of int) +0:24 Construct combined texture-sampler (temp isampler1DArray) +0:24 'g_tTex1di4' (uniform itexture1DArray) +0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:24 Constant: +0:24 0.750000 +0:24 Constant: +0:24 1 (const int) +0:25 Sequence +0:25 move second child to first child (temp 4-component vector of uint) +0:25 'txval12' (temp 4-component vector of uint) +0:25 textureLodOffset (temp 4-component vector of uint) +0:25 Construct combined texture-sampler (temp usampler1DArray) +0:25 'g_tTex1du4' (uniform utexture1DArray) +0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:25 Constant: +0:25 0.750000 +0:25 Constant: +0:25 2 (const int) +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval20' (temp 4-component vector of float) +0:27 textureLodOffset (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler2DArray) +0:27 'g_tTex2df4' (uniform texture2DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:27 Constant: +0:27 0.750000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval21' (temp 4-component vector of int) +0:28 textureLodOffset (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler2DArray) +0:28 'g_tTex2di4' (uniform itexture2DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:28 Constant: +0:28 0.750000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval22' (temp 4-component vector of uint) +0:29 textureLodOffset (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler2DArray) +0:29 'g_tTex2du4' (uniform utexture2DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:29 Constant: +0:29 0.750000 +0:? Constant: +0:? 0 (const int) +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 Depth}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 1.000000 +0:33 1.000000 +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) +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 Sequence +0:36 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth}) +0:20 Function Parameters: +0:? Sequence +0:23 Sequence +0:23 move second child to first child (temp 4-component vector of float) +0:23 'txval10' (temp 4-component vector of float) +0:23 textureLodOffset (temp 4-component vector of float) +0:23 Construct combined texture-sampler (temp sampler1DArray) +0:23 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:23 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:23 Constant: +0:23 0.750000 +0:23 Constant: +0:23 0 (const int) +0:24 Sequence +0:24 move second child to first child (temp 4-component vector of int) +0:24 'txval11' (temp 4-component vector of int) +0:24 textureLodOffset (temp 4-component vector of int) +0:24 Construct combined texture-sampler (temp isampler1DArray) +0:24 'g_tTex1di4' (uniform itexture1DArray) +0:24 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.200000 +0:? 0.300000 +0:24 Constant: +0:24 0.750000 +0:24 Constant: +0:24 1 (const int) +0:25 Sequence +0:25 move second child to first child (temp 4-component vector of uint) +0:25 'txval12' (temp 4-component vector of uint) +0:25 textureLodOffset (temp 4-component vector of uint) +0:25 Construct combined texture-sampler (temp usampler1DArray) +0:25 'g_tTex1du4' (uniform utexture1DArray) +0:25 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:25 Constant: +0:25 0.750000 +0:25 Constant: +0:25 2 (const int) +0:27 Sequence +0:27 move second child to first child (temp 4-component vector of float) +0:27 'txval20' (temp 4-component vector of float) +0:27 textureLodOffset (temp 4-component vector of float) +0:27 Construct combined texture-sampler (temp sampler2DArray) +0:27 'g_tTex2df4' (uniform texture2DArray) +0:27 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.100000 +0:? 0.200000 +0:? 0.300000 +0:27 Constant: +0:27 0.750000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:28 Sequence +0:28 move second child to first child (temp 4-component vector of int) +0:28 'txval21' (temp 4-component vector of int) +0:28 textureLodOffset (temp 4-component vector of int) +0:28 Construct combined texture-sampler (temp isampler2DArray) +0:28 'g_tTex2di4' (uniform itexture2DArray) +0:28 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.300000 +0:? 0.400000 +0:? 0.500000 +0:28 Constant: +0:28 0.750000 +0:? Constant: +0:? 0 (const int) +0:? 0 (const int) +0:29 Sequence +0:29 move second child to first child (temp 4-component vector of uint) +0:29 'txval22' (temp 4-component vector of uint) +0:29 textureLodOffset (temp 4-component vector of uint) +0:29 Construct combined texture-sampler (temp usampler2DArray) +0:29 'g_tTex2du4' (uniform utexture2DArray) +0:29 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? Constant: +0:? 0.500000 +0:? 0.600000 +0:? 0.700000 +0:29 Constant: +0:29 0.750000 +0:? Constant: +0:? 0 (const int) +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 Depth}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 1.000000 +0:33 1.000000 +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) +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 Sequence +0:36 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) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray) +0:? 'g_tTex1di4' (uniform itexture1DArray) +0:? 'g_tTex1du4' (uniform utexture1DArray) +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 112 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 103 107 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "txval10" + Name 12 "g_tTex1df4" + Name 16 "g_sSamp" + Name 30 "txval11" + Name 33 "g_tTex1di4" + Name 45 "txval12" + Name 48 "g_tTex1du4" + Name 57 "txval20" + Name 60 "g_tTex2df4" + Name 70 "txval21" + Name 73 "g_tTex2di4" + Name 81 "txval22" + Name 84 "g_tTex2du4" + Name 94 "PS_OUTPUT" + MemberName 94(PS_OUTPUT) 0 "Color" + MemberName 94(PS_OUTPUT) 1 "Depth" + Name 96 "psout" + 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 + Decorate 16(g_sSamp) Binding 0 + Decorate 33(g_tTex1di4) DescriptorSet 0 + Decorate 48(g_tTex1du4) DescriptorSet 0 + Decorate 60(g_tTex2df4) DescriptorSet 0 + Decorate 73(g_tTex2di4) DescriptorSet 0 + Decorate 84(g_tTex2du4) DescriptorSet 0 + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 1D array sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tTex1df4): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_sSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1036831949 + 22: 6(float) Constant 1045220557 + 23: 20(fvec2) ConstantComposite 21 22 + 24: 6(float) Constant 1061158912 + 25: TypeInt 32 1 + 26: 25(int) Constant 0 + 28: TypeVector 25(int) 4 + 29: TypePointer Function 28(ivec4) + 31: TypeImage 25(int) 1D array sampled format:Unknown + 32: TypePointer UniformConstant 31 + 33(g_tTex1di4): 32(ptr) Variable UniformConstant + 36: TypeSampledImage 31 + 38: 6(float) Constant 1050253722 + 39: 20(fvec2) ConstantComposite 22 38 + 40: 25(int) Constant 1 + 42: TypeInt 32 0 + 43: TypeVector 42(int) 4 + 44: TypePointer Function 43(ivec4) + 46: TypeImage 42(int) 1D array sampled format:Unknown + 47: TypePointer UniformConstant 46 + 48(g_tTex1du4): 47(ptr) Variable UniformConstant + 51: TypeSampledImage 46 + 53: 6(float) Constant 1053609165 + 54: 20(fvec2) ConstantComposite 38 53 + 55: 25(int) Constant 2 + 58: TypeImage 6(float) 2D array sampled format:Unknown + 59: TypePointer UniformConstant 58 + 60(g_tTex2df4): 59(ptr) Variable UniformConstant + 63: TypeSampledImage 58 + 65: TypeVector 6(float) 3 + 66: 65(fvec3) ConstantComposite 21 22 38 + 67: TypeVector 25(int) 2 + 68: 67(ivec2) ConstantComposite 26 26 + 71: TypeImage 25(int) 2D array sampled format:Unknown + 72: TypePointer UniformConstant 71 + 73(g_tTex2di4): 72(ptr) Variable UniformConstant + 76: TypeSampledImage 71 + 78: 6(float) Constant 1056964608 + 79: 65(fvec3) ConstantComposite 38 53 78 + 82: TypeImage 42(int) 2D array sampled format:Unknown + 83: TypePointer UniformConstant 82 + 84(g_tTex2du4): 83(ptr) Variable UniformConstant + 87: TypeSampledImage 82 + 89: 6(float) Constant 1058642330 + 90: 6(float) Constant 1060320051 + 91: 65(fvec3) ConstantComposite 78 89 90 + 92: 67(ivec2) ConstantComposite 26 40 + 94(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 95: TypePointer Function 94(PS_OUTPUT) + 97: 6(float) Constant 1065353216 + 98: 7(fvec4) ConstantComposite 97 97 97 97 + 100: TypePointer Function 6(float) + 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 + 30(txval11): 29(ptr) Variable Function + 45(txval12): 44(ptr) Variable Function + 57(txval20): 8(ptr) Variable Function + 70(txval21): 29(ptr) Variable Function + 81(txval22): 44(ptr) Variable Function + 96(psout): 95(ptr) Variable Function + 13: 10 Load 12(g_tTex1df4) + 17: 14 Load 16(g_sSamp) + 19: 18 SampledImage 13 17 + 27: 7(fvec4) ImageSampleExplicitLod 19 23 Lod ConstOffset 24 26 + Store 9(txval10) 27 + 34: 31 Load 33(g_tTex1di4) + 35: 14 Load 16(g_sSamp) + 37: 36 SampledImage 34 35 + 41: 28(ivec4) ImageSampleExplicitLod 37 39 Lod ConstOffset 24 40 + Store 30(txval11) 41 + 49: 46 Load 48(g_tTex1du4) + 50: 14 Load 16(g_sSamp) + 52: 51 SampledImage 49 50 + 56: 43(ivec4) ImageSampleExplicitLod 52 54 Lod ConstOffset 24 55 + Store 45(txval12) 56 + 61: 58 Load 60(g_tTex2df4) + 62: 14 Load 16(g_sSamp) + 64: 63 SampledImage 61 62 + 69: 7(fvec4) ImageSampleExplicitLod 64 66 Lod ConstOffset 24 68 + Store 57(txval20) 69 + 74: 71 Load 73(g_tTex2di4) + 75: 14 Load 16(g_sSamp) + 77: 76 SampledImage 74 75 + 80: 28(ivec4) ImageSampleExplicitLod 77 79 Lod ConstOffset 24 68 + Store 70(txval21) 80 + 85: 82 Load 84(g_tTex2du4) + 86: 14 Load 16(g_sSamp) + 88: 87 SampledImage 85 86 + 93: 43(ivec4) ImageSampleExplicitLod 88 91 Lod ConstOffset 24 92 + Store 81(txval22) 93 + 99: 8(ptr) AccessChain 96(psout) 26 + Store 99 98 + 101: 100(ptr) AccessChain 96(psout) 40 + Store 101 97 + 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 082e1427..81c1a844 100755 --- a/Test/baseResults/hlsl.scope.frag.out +++ b/Test/baseResults/hlsl.scope.frag.out @@ -2,9 +2,9 @@ hlsl.scope.frag 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ Linked fragment stage: 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 new file mode 100644 index 00000000..a9f92768 --- /dev/null +++ b/Test/baseResults/hlsl.semicolons.frag.out @@ -0,0 +1,117 @@ +hlsl.semicolons.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: MyFunc( (temp void) +0:2 Function Parameters: +0:8 Function Definition: MyFunc2( (temp void) +0:8 Function Parameters: +0:13 Function Definition: main( (temp 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) +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 Constant: +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:17 Sequence +0:17 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: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: MyFunc( (temp void) +0:2 Function Parameters: +0:8 Function Definition: MyFunc2( (temp void) +0:8 Function Parameters: +0:13 Function Definition: main( (temp 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) +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 Constant: +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:16 1.000000 +0:17 Sequence +0:17 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 26 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 22 + ExecutionMode 4 OriginUpperLeft + 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 + 11: TypeVector 10(float) 4 + 12(PS_OUTPUT): TypeStruct 11(fvec4) + 13: TypePointer Function 12(PS_OUTPUT) + 15: TypeInt 32 1 + 16: 15(int) Constant 0 + 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 + 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 + Return + FunctionEnd + 8(MyFunc2(): 2 Function None 3 + 9: Label + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out new file mode 100755 index 00000000..9ea4f839 --- /dev/null +++ b/Test/baseResults/hlsl.shapeConv.frag.out @@ -0,0 +1,339 @@ +hlsl.shapeConv.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: PixelShaderFunction(vf4;f1; (temp 4-component vector of float) +0:2 Function Parameters: +0:2 'input' (in 4-component vector of float) +0:2 'f' (in float) +0:? Sequence +0:4 move second child to first child (temp 4-component vector of float) +0:4 'v' (temp 4-component vector of float) +0:4 Constant: +0:4 1.000000 +0:4 1.000000 +0:4 1.000000 +0:4 1.000000 +0:5 move second child to first child (temp 4-component vector of float) +0:5 'v' (temp 4-component vector of float) +0:5 Constant: +0:5 2.000000 +0:5 2.000000 +0:5 2.000000 +0:5 2.000000 +0:6 move second child to first child (temp 4-component vector of float) +0:6 'v' (temp 4-component vector of float) +0:6 Construct vec4 (temp 4-component vector of float) +0:6 'f' (in float) +0:8 move second child to first child (temp 3-component vector of float) +0:8 'u' (temp 3-component vector of float) +0:8 Constant: +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:9 move second child to first child (temp 3-component vector of float) +0:9 'u' (temp 3-component vector of float) +0:9 Constant: +0:9 2.000000 +0:9 2.000000 +0:9 2.000000 +0:10 move second child to first child (temp 3-component vector of float) +0:10 'u' (temp 3-component vector of float) +0:10 Construct vec3 (temp 3-component vector of float) +0:10 Construct float (temp float) +0:10 'f' (in 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 + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: PixelShaderFunction(vf4;f1; (temp 4-component vector of float) +0:2 Function Parameters: +0:2 'input' (in 4-component vector of float) +0:2 'f' (in float) +0:? Sequence +0:4 move second child to first child (temp 4-component vector of float) +0:4 'v' (temp 4-component vector of float) +0:4 Constant: +0:4 1.000000 +0:4 1.000000 +0:4 1.000000 +0:4 1.000000 +0:5 move second child to first child (temp 4-component vector of float) +0:5 'v' (temp 4-component vector of float) +0:5 Constant: +0:5 2.000000 +0:5 2.000000 +0:5 2.000000 +0:5 2.000000 +0:6 move second child to first child (temp 4-component vector of float) +0:6 'v' (temp 4-component vector of float) +0:6 Construct vec4 (temp 4-component vector of float) +0:6 'f' (in float) +0:8 move second child to first child (temp 3-component vector of float) +0:8 'u' (temp 3-component vector of float) +0:8 Constant: +0:8 1.000000 +0:8 1.000000 +0:8 1.000000 +0:9 move second child to first child (temp 3-component vector of float) +0:9 'u' (temp 3-component vector of float) +0:9 Constant: +0:9 2.000000 +0:9 2.000000 +0:9 2.000000 +0:10 move second child to first child (temp 3-component vector of float) +0:10 'u' (temp 3-component vector of float) +0:10 Construct vec3 (temp 3-component vector of float) +0:10 Construct float (temp float) +0:10 'f' (in 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 84 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + 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 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypePointer Function 6(float) + 10: TypeFunction 7(fvec4) 8(ptr) 9(ptr) + 16: 6(float) Constant 1065353216 + 17: 7(fvec4) ConstantComposite 16 16 16 16 + 18: 6(float) Constant 1073741824 + 19: 7(fvec4) ConstantComposite 18 18 18 18 + 22: TypeVector 6(float) 3 + 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 +13(PixelShaderFunction(vf4;f1;): 7(fvec4) Function None 10 + 11(input): 8(ptr) FunctionParameter + 12(f): 9(ptr) FunctionParameter + 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) + 21: 7(fvec4) CompositeConstruct 20 20 20 20 + Store 15(v) 21 + Store 24(u) 25 + Store 24(u) 26 + 27: 6(float) Load 12(f) + 28: 22(fvec3) CompositeConstruct 27 27 27 + Store 24(u) 28 + 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.shapeConvRet.frag.out b/Test/baseResults/hlsl.shapeConvRet.frag.out new file mode 100755 index 00000000..c2137870 --- /dev/null +++ b/Test/baseResults/hlsl.shapeConvRet.frag.out @@ -0,0 +1,94 @@ +hlsl.shapeConvRet.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: foo( (temp 3-component vector of int) +0:2 Function Parameters: +0:? Sequence +0:3 Branch: Return with expression +0:3 Constant: +0:3 13 (const int) +0:3 13 (const int) +0:3 13 (const int) +0:7 Function Definition: main(f1; (temp 4-component vector of float) +0:7 Function Parameters: +0:7 'f' (layout(location=0 ) in float) +0:? Sequence +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 Construct vec4 (temp 4-component vector of float) +0:8 'f' (layout(location=0 ) in float) +0:8 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'f' (layout(location=0 ) in float) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: foo( (temp 3-component vector of int) +0:2 Function Parameters: +0:? Sequence +0:3 Branch: Return with expression +0:3 Constant: +0:3 13 (const int) +0:3 13 (const int) +0:3 13 (const int) +0:7 Function Definition: main(f1; (temp 4-component vector of float) +0:7 Function Parameters: +0:7 'f' (layout(location=0 ) in float) +0:? Sequence +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 Construct vec4 (temp 4-component vector of float) +0:8 'f' (layout(location=0 ) in float) +0:8 Branch: Return +0:? Linker Objects +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'f' (layout(location=0 ) in float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 24 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 18 20 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "foo(" + Name 18 "@entryPointOutput" + Name 20 "f" + Decorate 18(@entryPointOutput) Location 0 + Decorate 20(f) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeVector 6(int) 3 + 8: TypeFunction 7(ivec3) + 11: 6(int) Constant 13 + 12: 7(ivec3) ConstantComposite 11 11 11 + 15: TypeFloat 32 + 16: TypeVector 15(float) 4 + 17: TypePointer Output 16(fvec4) +18(@entryPointOutput): 17(ptr) Variable Output + 19: TypePointer Input 15(float) + 20(f): 19(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 21: 15(float) Load 20(f) + 22: 16(fvec4) CompositeConstruct 21 21 21 21 + Store 18(@entryPointOutput) 22 + Return + FunctionEnd + 9(foo(): 7(ivec3) Function None 8 + 10: Label + ReturnValue 12 + FunctionEnd diff --git a/Test/baseResults/hlsl.sin.frag.out b/Test/baseResults/hlsl.sin.frag.out index e145ab18..0836a618 100755 --- a/Test/baseResults/hlsl.sin.frag.out +++ b/Test/baseResults/hlsl.sin.frag.out @@ -2,14 +2,19 @@ hlsl.sin.frag 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; (temp 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 @@ Linked fragment stage: 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; (temp 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 00000000..3d80ce53 --- /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; (temp 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; (temp 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 00000000..8593db62 --- /dev/null +++ b/Test/baseResults/hlsl.stringtoken.frag.out @@ -0,0 +1,117 @@ +hlsl.stringtoken.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:16 Function Definition: main( (temp 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:19 Sequence +0:19 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:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF}) + + +Linked fragment stage: + + +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:16 Function Definition: main( (temp 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:19 Sequence +0:19 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:? 'Color' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF}) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 29 + + 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 26 "$Global" + MemberName 26($Global) 0 "TestUF" + Name 28 "" + Decorate 19(Color) Location 0 + Decorate 25(TestTexture) DescriptorSet 0 + Decorate 26($Global) Block + Decorate 28 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($Global): TypeStruct 7(fvec4) + 27: TypePointer Uniform 26($Global) + 28: 27(ptr) Variable Uniform + 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 a70bba60..5fef9599 100755 --- a/Test/baseResults/hlsl.struct.frag.out +++ b/Test/baseResults/hlsl.struct.frag.out @@ -1,29 +1,43 @@ hlsl.struct.frag +WARNING: 0:26: 'register' : ignoring shader_profile +WARNING: 0:27: 'register' : ignoring shader_profile +WARNING: 0:30: 'register' : ignoring shader_profile + Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:40 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) -0:31 Function Parameters: -0:31 'input' (in 4-component vector of float) +0:34 Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) +0:34 Function Parameters: +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:36 Compare Equal (temp bool) -0:36 's3' (temp structure{temp 3-component vector of bool b3}) -0:36 's3' (temp structure{temp 3-component vector of bool b3}) -0:37 move second child to first child (temp 4-component vector of float) -0:37 i: direct index for structure (temp 4-component vector of float) -0:37 's2' (global structure{temp 4-component vector of float i}) -0:37 Constant: -0:37 0 (const int) -0:37 ff4: direct index for structure (temp 4-component vector of float FragCoord) -0:37 '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, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4}) -0:37 Constant: -0:37 7 (const int) -0:39 Branch: Return with expression -0:39 'input' (in 4-component vector of float) +0:39 Compare Equal (temp bool) +0:39 's3' (temp structure{temp 3-component vector of bool b3}) +0:39 's3' (temp structure{temp 3-component vector of bool b3}) +0:40 move second child to first child (temp 4-component vector of float) +0:40 i: direct index for structure (temp 4-component vector of float) +0:40 's2' (global structure{temp 4-component vector of float i}) +0:40 Constant: +0:40 0 (const int) +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, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4}) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) +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: @@ -32,39 +46,48 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:40 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) -0:31 Function Parameters: -0:31 'input' (in 4-component vector of float) +0:34 Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (temp 4-component vector of float) +0:34 Function Parameters: +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:36 Compare Equal (temp bool) -0:36 's3' (temp structure{temp 3-component vector of bool b3}) -0:36 's3' (temp structure{temp 3-component vector of bool b3}) -0:37 move second child to first child (temp 4-component vector of float) -0:37 i: direct index for structure (temp 4-component vector of float) -0:37 's2' (global structure{temp 4-component vector of float i}) -0:37 Constant: -0:37 0 (const int) -0:37 ff4: direct index for structure (temp 4-component vector of float FragCoord) -0:37 '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, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4}) -0:37 Constant: -0:37 7 (const int) -0:39 Branch: Return with expression -0:39 'input' (in 4-component vector of float) +0:39 Compare Equal (temp bool) +0:39 's3' (temp structure{temp 3-component vector of bool b3}) +0:39 's3' (temp structure{temp 3-component vector of bool b3}) +0:40 move second child to first child (temp 4-component vector of float) +0:40 i: direct index for structure (temp 4-component vector of float) +0:40 's2' (global structure{temp 4-component vector of float i}) +0:40 Constant: +0:40 0 (const int) +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, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4}) +0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6}) +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 40 +// Id's are bound by 49 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 34 + EntryPoint Fragment 4 "PixelShaderFunction" 25 30 31 38 40 42 45 46 47 48 ExecutionMode 4 OriginUpperLeft - Source HLSL 450 Name 4 "PixelShaderFunction" Name 8 "FS" MemberName 8(FS) 0 "b3" @@ -72,25 +95,47 @@ gl_FragCoord origin is upper left 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" - MemberDecorate 25 4 BuiltIn FrontFacing - MemberDecorate 25 7 BuiltIn FragCoord + 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 35 "$Global" + MemberName 35($Global) 0 "s1" + MemberName 35($Global) 1 "ff5" + MemberName 35($Global) 2 "ff6" + Name 37 "" + Name 38 "a" + Name 40 "b" + Name 42 "c" + Name 45 "d" + Name 46 "ff1" + Name 47 "ff2" + Name 48 "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 35($Global) Block + Decorate 37 DescriptorSet 0 + Decorate 38(a) Location 1 + Decorate 40(b) Flat + Decorate 40(b) Location 2 + Decorate 42(c) NoPerspective + Decorate 42(c) Centroid + Decorate 42(c) Location 3 + Decorate 45(d) Centroid + Decorate 45(d) Location 4 + Decorate 46(ff1) BuiltIn FrontFacing + Decorate 47(ff2) Offset 4 + Decorate 47(ff2) Location 5 + Decorate 48(ff3) Offset 4 + Decorate 48(ff3) Location 6 + Decorate 48(ff3) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool @@ -104,17 +149,27 @@ gl_FragCoord origin is upper left 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 + 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($Global): TypeStruct 34(myS) 17(float) 17(float) + 36: TypePointer Uniform 35($Global) + 37: 36(ptr) Variable Uniform + 38(a): 24(ptr) Variable Input + 39: TypePointer Input 6(bool) + 40(b): 39(ptr) Variable Input + 41: TypePointer Input 17(float) + 42(c): 41(ptr) Variable Input + 43: TypeVector 17(float) 2 + 44: TypePointer Input 43(fvec2) + 45(d): 44(ptr) Variable Input + 46(ff1): 39(ptr) Variable Input + 47(ff2): 39(ptr) Variable Input + 48(ff3): 39(ptr) Variable Input 4(PixelShaderFunction): 2 Function None 3 5: Label 10(s3): 9(ptr) Variable Function @@ -124,10 +179,10 @@ gl_FragCoord origin is upper left 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 00000000..f3e56b6a --- /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; (temp 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:13 Sequence +0:13 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; (temp 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:13 Sequence +0:13 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 c4af33f1..af516e2c 100755 --- a/Test/baseResults/hlsl.switch.frag.out +++ b/Test/baseResults/hlsl.switch.frag.out @@ -2,16 +2,16 @@ hlsl.switch.frag 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ Linked fragment stage: 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 7bb28180..16951a34 100755 --- a/Test/baseResults/hlsl.swizzle.frag.out +++ b/Test/baseResults/hlsl.swizzle.frag.out @@ -10,7 +10,7 @@ gl_FragCoord origin is upper left 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; (temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' (in 4-component vector of float) 0:? Sequence @@ -50,7 +50,7 @@ gl_FragCoord origin is upper left 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; (temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' (in 4-component vector of float) 0:? Sequence @@ -84,7 +84,6 @@ gl_FragCoord origin is upper left 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 5acb877a..c5c73ecb 100644 --- a/Test/baseResults/hlsl.templatetypes.frag.out +++ b/Test/baseResults/hlsl.templatetypes.frag.out @@ -2,7 +2,7 @@ hlsl.templatetypes.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:48 Function Definition: PixelShaderFunction( (global float) +0:3 Function Definition: PixelShaderFunction( (temp float) 0:3 Function Parameters: 0:? Sequence 0:4 Sequence @@ -192,8 +192,8 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:48 Function Definition: PixelShaderFunction( (global float) +0:3 Function Definition: PixelShaderFunction( (temp float) 0:3 Function Parameters: 0:? Sequence 0:4 Sequence @@ -441,8 +445,8 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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.tx.bracket.frag.out b/Test/baseResults/hlsl.tx.bracket.frag.out new file mode 100644 index 00000000..0769cde4 --- /dev/null +++ b/Test/baseResults/hlsl.tx.bracket.frag.out @@ -0,0 +1,702 @@ +hlsl.tx.bracket.frag +Shader version: 450 +gl_FragCoord origin is upper left +0:? Sequence +0:38 Function Definition: Fn1(vi4; (temp 4-component vector of int) +0:38 Function Parameters: +0:38 'x' (in 4-component vector of int) +0:? Sequence +0:38 Branch: Return with expression +0:38 'x' (in 4-component vector of int) +0:39 Function Definition: Fn1(vu4; (temp 4-component vector of uint) +0:39 Function Parameters: +0:39 'x' (in 4-component vector of uint) +0:? Sequence +0:39 Branch: Return with expression +0:39 'x' (in 4-component vector of uint) +0:40 Function Definition: Fn1(vf4; (temp 4-component vector of float) +0:40 Function Parameters: +0:40 'x' (in 4-component vector of float) +0:? Sequence +0:40 Branch: Return with expression +0:40 'x' (in 4-component vector of float) +0:42 Function Definition: SomeValue( (temp 4-component vector of float) +0:42 Function Parameters: +0:? Sequence +0:42 Branch: Return with expression +0:42 Convert int to float (temp 4-component vector of float) +0:42 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 3 (const uint) +0:45 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:45 Function Parameters: +0:? Sequence +0:49 textureFetch (temp 4-component vector of float) +0:49 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:49 c1: direct index for structure (layout(offset=0 ) uniform int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 0 (const uint) +0:49 Constant: +0:49 0 (const int) +0:51 Sequence +0:51 move second child to first child (temp 4-component vector of float) +0:51 'r00' (temp 4-component vector of float) +0:51 textureFetch (temp 4-component vector of float) +0:51 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:51 c1: direct index for structure (layout(offset=0 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 0 (const uint) +0:51 Constant: +0:51 0 (const int) +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of int) +0:52 'r01' (temp 4-component vector of int) +0:52 textureFetch (temp 4-component vector of int) +0:52 'g_tTex1di4' (uniform itexture1D) +0:52 c1: direct index for structure (layout(offset=0 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 0 (const uint) +0:52 Constant: +0:52 0 (const int) +0:53 Sequence +0:53 move second child to first child (temp 4-component vector of uint) +0:53 'r02' (temp 4-component vector of uint) +0:53 textureFetch (temp 4-component vector of uint) +0:53 'g_tTex1du4' (uniform utexture1D) +0:53 c1: direct index for structure (layout(offset=0 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 0 (const uint) +0:53 Constant: +0:53 0 (const int) +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of float) +0:56 'r10' (temp 4-component vector of float) +0:56 textureFetch (temp 4-component vector of float) +0:56 'g_tTex2df4' (uniform texture2D) +0:56 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 1 (const uint) +0:56 Constant: +0:56 0 (const int) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of int) +0:57 'r11' (temp 4-component vector of int) +0:57 textureFetch (temp 4-component vector of int) +0:57 'g_tTex2di4' (uniform itexture2D) +0:57 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 1 (const uint) +0:57 Constant: +0:57 0 (const int) +0:58 Sequence +0:58 move second child to first child (temp 4-component vector of uint) +0:58 'r12' (temp 4-component vector of uint) +0:58 textureFetch (temp 4-component vector of uint) +0:58 'g_tTex2du4' (uniform utexture2D) +0:58 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 1 (const uint) +0:58 Constant: +0:58 0 (const int) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of float) +0:61 'r20' (temp 4-component vector of float) +0:61 textureFetch (temp 4-component vector of float) +0:61 'g_tTex3df4' (uniform texture3D) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 2 (const uint) +0:61 Constant: +0:61 0 (const int) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of int) +0:62 'r21' (temp 4-component vector of int) +0:62 textureFetch (temp 4-component vector of int) +0:62 'g_tTex3di4' (uniform itexture3D) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 2 (const uint) +0:62 Constant: +0:62 0 (const int) +0:63 Sequence +0:63 move second child to first child (temp 4-component vector of uint) +0:63 'r22' (temp 4-component vector of uint) +0:63 textureFetch (temp 4-component vector of uint) +0:63 'g_tTex3du4' (uniform utexture3D) +0:63 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 2 (const uint) +0:63 Constant: +0:63 0 (const int) +0:66 Function Call: Fn1(vf4; (temp 4-component vector of float) +0:66 textureFetch (temp 4-component vector of float) +0:66 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:66 c1: direct index for structure (layout(offset=0 ) uniform int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 0 (const uint) +0:66 Constant: +0:66 0 (const int) +0:67 Function Call: Fn1(vi4; (temp 4-component vector of int) +0:67 textureFetch (temp 4-component vector of int) +0:67 'g_tTex1di4' (uniform itexture1D) +0:67 c1: direct index for structure (layout(offset=0 ) uniform int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 0 (const uint) +0:67 Constant: +0:67 0 (const int) +0:68 Function Call: Fn1(vu4; (temp 4-component vector of uint) +0:68 textureFetch (temp 4-component vector of uint) +0:68 'g_tTex1du4' (uniform utexture1D) +0:68 c1: direct index for structure (layout(offset=0 ) uniform int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 0 (const uint) +0:68 Constant: +0:68 0 (const int) +0:70 move second child to first child (temp 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}) +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1.000000 +0:70 1.000000 +0:70 1.000000 +0:70 1.000000 +0:72 Sequence +0:72 Sequence +0:72 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 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}) +0:72 Constant: +0:72 0 (const int) +0:72 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +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:38 Function Definition: Fn1(vi4; (temp 4-component vector of int) +0:38 Function Parameters: +0:38 'x' (in 4-component vector of int) +0:? Sequence +0:38 Branch: Return with expression +0:38 'x' (in 4-component vector of int) +0:39 Function Definition: Fn1(vu4; (temp 4-component vector of uint) +0:39 Function Parameters: +0:39 'x' (in 4-component vector of uint) +0:? Sequence +0:39 Branch: Return with expression +0:39 'x' (in 4-component vector of uint) +0:40 Function Definition: Fn1(vf4; (temp 4-component vector of float) +0:40 Function Parameters: +0:40 'x' (in 4-component vector of float) +0:? Sequence +0:40 Branch: Return with expression +0:40 'x' (in 4-component vector of float) +0:42 Function Definition: SomeValue( (temp 4-component vector of float) +0:42 Function Parameters: +0:? Sequence +0:42 Branch: Return with expression +0:42 Convert int to float (temp 4-component vector of float) +0:42 c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int) +0:42 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:42 Constant: +0:42 3 (const uint) +0:45 Function Definition: main( (temp structure{temp 4-component vector of float Color}) +0:45 Function Parameters: +0:? Sequence +0:49 textureFetch (temp 4-component vector of float) +0:49 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:49 c1: direct index for structure (layout(offset=0 ) uniform int) +0:49 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:49 Constant: +0:49 0 (const uint) +0:49 Constant: +0:49 0 (const int) +0:51 Sequence +0:51 move second child to first child (temp 4-component vector of float) +0:51 'r00' (temp 4-component vector of float) +0:51 textureFetch (temp 4-component vector of float) +0:51 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:51 c1: direct index for structure (layout(offset=0 ) uniform int) +0:51 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:51 Constant: +0:51 0 (const uint) +0:51 Constant: +0:51 0 (const int) +0:52 Sequence +0:52 move second child to first child (temp 4-component vector of int) +0:52 'r01' (temp 4-component vector of int) +0:52 textureFetch (temp 4-component vector of int) +0:52 'g_tTex1di4' (uniform itexture1D) +0:52 c1: direct index for structure (layout(offset=0 ) uniform int) +0:52 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:52 Constant: +0:52 0 (const uint) +0:52 Constant: +0:52 0 (const int) +0:53 Sequence +0:53 move second child to first child (temp 4-component vector of uint) +0:53 'r02' (temp 4-component vector of uint) +0:53 textureFetch (temp 4-component vector of uint) +0:53 'g_tTex1du4' (uniform utexture1D) +0:53 c1: direct index for structure (layout(offset=0 ) uniform int) +0:53 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:53 Constant: +0:53 0 (const uint) +0:53 Constant: +0:53 0 (const int) +0:56 Sequence +0:56 move second child to first child (temp 4-component vector of float) +0:56 'r10' (temp 4-component vector of float) +0:56 textureFetch (temp 4-component vector of float) +0:56 'g_tTex2df4' (uniform texture2D) +0:56 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:56 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:56 Constant: +0:56 1 (const uint) +0:56 Constant: +0:56 0 (const int) +0:57 Sequence +0:57 move second child to first child (temp 4-component vector of int) +0:57 'r11' (temp 4-component vector of int) +0:57 textureFetch (temp 4-component vector of int) +0:57 'g_tTex2di4' (uniform itexture2D) +0:57 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:57 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:57 Constant: +0:57 1 (const uint) +0:57 Constant: +0:57 0 (const int) +0:58 Sequence +0:58 move second child to first child (temp 4-component vector of uint) +0:58 'r12' (temp 4-component vector of uint) +0:58 textureFetch (temp 4-component vector of uint) +0:58 'g_tTex2du4' (uniform utexture2D) +0:58 c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int) +0:58 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:58 Constant: +0:58 1 (const uint) +0:58 Constant: +0:58 0 (const int) +0:61 Sequence +0:61 move second child to first child (temp 4-component vector of float) +0:61 'r20' (temp 4-component vector of float) +0:61 textureFetch (temp 4-component vector of float) +0:61 'g_tTex3df4' (uniform texture3D) +0:61 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:61 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:61 Constant: +0:61 2 (const uint) +0:61 Constant: +0:61 0 (const int) +0:62 Sequence +0:62 move second child to first child (temp 4-component vector of int) +0:62 'r21' (temp 4-component vector of int) +0:62 textureFetch (temp 4-component vector of int) +0:62 'g_tTex3di4' (uniform itexture3D) +0:62 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:62 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:62 Constant: +0:62 2 (const uint) +0:62 Constant: +0:62 0 (const int) +0:63 Sequence +0:63 move second child to first child (temp 4-component vector of uint) +0:63 'r22' (temp 4-component vector of uint) +0:63 textureFetch (temp 4-component vector of uint) +0:63 'g_tTex3du4' (uniform utexture3D) +0:63 c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int) +0:63 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:63 Constant: +0:63 2 (const uint) +0:63 Constant: +0:63 0 (const int) +0:66 Function Call: Fn1(vf4; (temp 4-component vector of float) +0:66 textureFetch (temp 4-component vector of float) +0:66 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:66 c1: direct index for structure (layout(offset=0 ) uniform int) +0:66 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:66 Constant: +0:66 0 (const uint) +0:66 Constant: +0:66 0 (const int) +0:67 Function Call: Fn1(vi4; (temp 4-component vector of int) +0:67 textureFetch (temp 4-component vector of int) +0:67 'g_tTex1di4' (uniform itexture1D) +0:67 c1: direct index for structure (layout(offset=0 ) uniform int) +0:67 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:67 Constant: +0:67 0 (const uint) +0:67 Constant: +0:67 0 (const int) +0:68 Function Call: Fn1(vu4; (temp 4-component vector of uint) +0:68 textureFetch (temp 4-component vector of uint) +0:68 'g_tTex1du4' (uniform utexture1D) +0:68 c1: direct index for structure (layout(offset=0 ) uniform int) +0:68 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:68 Constant: +0:68 0 (const uint) +0:68 Constant: +0:68 0 (const int) +0:70 move second child to first child (temp 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}) +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1.000000 +0:70 1.000000 +0:70 1.000000 +0:70 1.000000 +0:72 Sequence +0:72 Sequence +0:72 move second child to first child (temp 4-component vector of float) +0:? 'Color' (layout(location=0 ) out 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}) +0:72 Constant: +0:72 0 (const int) +0:72 Branch: Return +0:? Linker Objects +0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) +0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) +0:? 'g_tTex1di4' (uniform itexture1D) +0:? 'g_tTex1du4' (uniform utexture1D) +0:? 'g_tTex2df4' (uniform texture2D) +0:? 'g_tTex2di4' (uniform itexture2D) +0:? 'g_tTex2du4' (uniform utexture2D) +0:? 'g_tTex3df4' (uniform texture3D) +0:? 'g_tTex3di4' (uniform itexture3D) +0:? 'g_tTex3du4' (uniform utexture3D) +0:? 'g_tTex1df4a' (uniform texture1DArray) +0:? 'g_tTex1di4a' (uniform itexture1DArray) +0:? 'g_tTex1du4a' (uniform utexture1DArray) +0:? 'g_tTex2df4a' (uniform texture2DArray) +0:? 'g_tTex2di4a' (uniform itexture2DArray) +0:? 'g_tTex2du4a' (uniform utexture2DArray) +0:? 'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) +0:? 'Color' (layout(location=0 ) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 183 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 158 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 11 "Fn1(vi4;" + Name 10 "x" + Name 18 "Fn1(vu4;" + Name 17 "x" + Name 25 "Fn1(vf4;" + Name 24 "x" + Name 28 "SomeValue(" + Name 41 "$Global" + MemberName 41($Global) 0 "c1" + MemberName 41($Global) 1 "c2" + MemberName 41($Global) 2 "c3" + MemberName 41($Global) 3 "c4" + MemberName 41($Global) 4 "o1" + MemberName 41($Global) 5 "o2" + MemberName 41($Global) 6 "o3" + MemberName 41($Global) 7 "o4" + Name 43 "" + Name 53 "g_tTex1df4" + Name 60 "r00" + Name 65 "r01" + Name 68 "g_tTex1di4" + Name 73 "r02" + Name 76 "g_tTex1du4" + Name 81 "r10" + Name 84 "g_tTex2df4" + Name 91 "r11" + Name 94 "g_tTex2di4" + Name 99 "r12" + Name 102 "g_tTex2du4" + Name 107 "r20" + Name 110 "g_tTex3df4" + Name 117 "r21" + Name 120 "g_tTex3di4" + Name 125 "r22" + Name 128 "g_tTex3du4" + Name 137 "param" + Name 143 "param" + Name 149 "param" + Name 151 "PS_OUTPUT" + MemberName 151(PS_OUTPUT) 0 "Color" + Name 153 "psout" + Name 158 "Color" + Name 164 "g_sSamp" + Name 167 "g_tTex1df4a" + Name 170 "g_tTex1di4a" + Name 173 "g_tTex1du4a" + Name 176 "g_tTex2df4a" + Name 179 "g_tTex2di4a" + Name 182 "g_tTex2du4a" + MemberDecorate 41($Global) 0 Offset 0 + MemberDecorate 41($Global) 1 Offset 8 + MemberDecorate 41($Global) 2 Offset 16 + MemberDecorate 41($Global) 3 Offset 32 + MemberDecorate 41($Global) 4 Offset 48 + MemberDecorate 41($Global) 5 Offset 56 + MemberDecorate 41($Global) 6 Offset 64 + MemberDecorate 41($Global) 7 Offset 80 + Decorate 41($Global) Block + Decorate 43 DescriptorSet 0 + Decorate 53(g_tTex1df4) DescriptorSet 0 + Decorate 53(g_tTex1df4) Binding 0 + Decorate 68(g_tTex1di4) DescriptorSet 0 + Decorate 76(g_tTex1du4) DescriptorSet 0 + Decorate 84(g_tTex2df4) DescriptorSet 0 + Decorate 94(g_tTex2di4) DescriptorSet 0 + Decorate 102(g_tTex2du4) DescriptorSet 0 + Decorate 110(g_tTex3df4) DescriptorSet 0 + Decorate 120(g_tTex3di4) DescriptorSet 0 + Decorate 128(g_tTex3du4) DescriptorSet 0 + Decorate 158(Color) Location 0 + Decorate 164(g_sSamp) DescriptorSet 0 + Decorate 164(g_sSamp) Binding 0 + Decorate 167(g_tTex1df4a) DescriptorSet 0 + Decorate 170(g_tTex1di4a) DescriptorSet 0 + Decorate 173(g_tTex1du4a) DescriptorSet 0 + Decorate 176(g_tTex2df4a) DescriptorSet 0 + Decorate 179(g_tTex2di4a) DescriptorSet 0 + Decorate 182(g_tTex2du4a) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypeVector 6(int) 4 + 8: TypePointer Function 7(ivec4) + 9: TypeFunction 7(ivec4) 8(ptr) + 13: TypeInt 32 0 + 14: TypeVector 13(int) 4 + 15: TypePointer Function 14(ivec4) + 16: TypeFunction 14(ivec4) 15(ptr) + 20: TypeFloat 32 + 21: TypeVector 20(float) 4 + 22: TypePointer Function 21(fvec4) + 23: TypeFunction 21(fvec4) 22(ptr) + 27: TypeFunction 21(fvec4) + 39: TypeVector 6(int) 2 + 40: TypeVector 6(int) 3 + 41($Global): TypeStruct 6(int) 39(ivec2) 40(ivec3) 7(ivec4) 6(int) 39(ivec2) 40(ivec3) 7(ivec4) + 42: TypePointer Uniform 41($Global) + 43: 42(ptr) Variable Uniform + 44: 6(int) Constant 3 + 45: TypePointer Uniform 7(ivec4) + 51: TypeImage 20(float) 1D sampled format:Unknown + 52: TypePointer UniformConstant 51 + 53(g_tTex1df4): 52(ptr) Variable UniformConstant + 55: 6(int) Constant 0 + 56: TypePointer Uniform 6(int) + 66: TypeImage 6(int) 1D sampled format:Unknown + 67: TypePointer UniformConstant 66 + 68(g_tTex1di4): 67(ptr) Variable UniformConstant + 74: TypeImage 13(int) 1D sampled format:Unknown + 75: TypePointer UniformConstant 74 + 76(g_tTex1du4): 75(ptr) Variable UniformConstant + 82: TypeImage 20(float) 2D sampled format:Unknown + 83: TypePointer UniformConstant 82 + 84(g_tTex2df4): 83(ptr) Variable UniformConstant + 86: 6(int) Constant 1 + 87: TypePointer Uniform 39(ivec2) + 92: TypeImage 6(int) 2D sampled format:Unknown + 93: TypePointer UniformConstant 92 + 94(g_tTex2di4): 93(ptr) Variable UniformConstant + 100: TypeImage 13(int) 2D sampled format:Unknown + 101: TypePointer UniformConstant 100 + 102(g_tTex2du4): 101(ptr) Variable UniformConstant + 108: TypeImage 20(float) 3D sampled format:Unknown + 109: TypePointer UniformConstant 108 + 110(g_tTex3df4): 109(ptr) Variable UniformConstant + 112: 6(int) Constant 2 + 113: TypePointer Uniform 40(ivec3) + 118: TypeImage 6(int) 3D sampled format:Unknown + 119: TypePointer UniformConstant 118 + 120(g_tTex3di4): 119(ptr) Variable UniformConstant + 126: TypeImage 13(int) 3D sampled format:Unknown + 127: TypePointer UniformConstant 126 + 128(g_tTex3du4): 127(ptr) Variable UniformConstant + 151(PS_OUTPUT): TypeStruct 21(fvec4) + 152: TypePointer Function 151(PS_OUTPUT) + 154: 20(float) Constant 1065353216 + 155: 21(fvec4) ConstantComposite 154 154 154 154 + 157: TypePointer Output 21(fvec4) + 158(Color): 157(ptr) Variable Output + 162: TypeSampler + 163: TypePointer UniformConstant 162 + 164(g_sSamp): 163(ptr) Variable UniformConstant + 165: TypeImage 20(float) 1D array sampled format:Unknown + 166: TypePointer UniformConstant 165 +167(g_tTex1df4a): 166(ptr) Variable UniformConstant + 168: TypeImage 6(int) 1D array sampled format:Unknown + 169: TypePointer UniformConstant 168 +170(g_tTex1di4a): 169(ptr) Variable UniformConstant + 171: TypeImage 13(int) 1D array sampled format:Unknown + 172: TypePointer UniformConstant 171 +173(g_tTex1du4a): 172(ptr) Variable UniformConstant + 174: TypeImage 20(float) 2D array sampled format:Unknown + 175: TypePointer UniformConstant 174 +176(g_tTex2df4a): 175(ptr) Variable UniformConstant + 177: TypeImage 6(int) 2D array sampled format:Unknown + 178: TypePointer UniformConstant 177 +179(g_tTex2di4a): 178(ptr) Variable UniformConstant + 180: TypeImage 13(int) 2D array sampled format:Unknown + 181: TypePointer UniformConstant 180 +182(g_tTex2du4a): 181(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 60(r00): 22(ptr) Variable Function + 65(r01): 8(ptr) Variable Function + 73(r02): 15(ptr) Variable Function + 81(r10): 22(ptr) Variable Function + 91(r11): 8(ptr) Variable Function + 99(r12): 15(ptr) Variable Function + 107(r20): 22(ptr) Variable Function + 117(r21): 8(ptr) Variable Function + 125(r22): 15(ptr) Variable Function + 137(param): 22(ptr) Variable Function + 143(param): 8(ptr) Variable Function + 149(param): 15(ptr) Variable Function + 153(psout): 152(ptr) Variable Function + 54: 51 Load 53(g_tTex1df4) + 57: 56(ptr) AccessChain 43 55 + 58: 6(int) Load 57 + 59: 21(fvec4) ImageFetch 54 58 Lod 55 + 61: 51 Load 53(g_tTex1df4) + 62: 56(ptr) AccessChain 43 55 + 63: 6(int) Load 62 + 64: 21(fvec4) ImageFetch 61 63 Lod 55 + Store 60(r00) 64 + 69: 66 Load 68(g_tTex1di4) + 70: 56(ptr) AccessChain 43 55 + 71: 6(int) Load 70 + 72: 7(ivec4) ImageFetch 69 71 Lod 55 + Store 65(r01) 72 + 77: 74 Load 76(g_tTex1du4) + 78: 56(ptr) AccessChain 43 55 + 79: 6(int) Load 78 + 80: 14(ivec4) ImageFetch 77 79 Lod 55 + Store 73(r02) 80 + 85: 82 Load 84(g_tTex2df4) + 88: 87(ptr) AccessChain 43 86 + 89: 39(ivec2) Load 88 + 90: 21(fvec4) ImageFetch 85 89 Lod 55 + Store 81(r10) 90 + 95: 92 Load 94(g_tTex2di4) + 96: 87(ptr) AccessChain 43 86 + 97: 39(ivec2) Load 96 + 98: 7(ivec4) ImageFetch 95 97 Lod 55 + Store 91(r11) 98 + 103: 100 Load 102(g_tTex2du4) + 104: 87(ptr) AccessChain 43 86 + 105: 39(ivec2) Load 104 + 106: 14(ivec4) ImageFetch 103 105 Lod 55 + Store 99(r12) 106 + 111: 108 Load 110(g_tTex3df4) + 114: 113(ptr) AccessChain 43 112 + 115: 40(ivec3) Load 114 + 116: 21(fvec4) ImageFetch 111 115 Lod 55 + Store 107(r20) 116 + 121: 118 Load 120(g_tTex3di4) + 122: 113(ptr) AccessChain 43 112 + 123: 40(ivec3) Load 122 + 124: 7(ivec4) ImageFetch 121 123 Lod 55 + Store 117(r21) 124 + 129: 126 Load 128(g_tTex3du4) + 130: 113(ptr) AccessChain 43 112 + 131: 40(ivec3) Load 130 + 132: 14(ivec4) ImageFetch 129 131 Lod 55 + Store 125(r22) 132 + 133: 51 Load 53(g_tTex1df4) + 134: 56(ptr) AccessChain 43 55 + 135: 6(int) Load 134 + 136: 21(fvec4) ImageFetch 133 135 Lod 55 + Store 137(param) 136 + 138: 21(fvec4) FunctionCall 25(Fn1(vf4;) 137(param) + 139: 66 Load 68(g_tTex1di4) + 140: 56(ptr) AccessChain 43 55 + 141: 6(int) Load 140 + 142: 7(ivec4) ImageFetch 139 141 Lod 55 + Store 143(param) 142 + 144: 7(ivec4) FunctionCall 11(Fn1(vi4;) 143(param) + 145: 74 Load 76(g_tTex1du4) + 146: 56(ptr) AccessChain 43 55 + 147: 6(int) Load 146 + 148: 14(ivec4) ImageFetch 145 147 Lod 55 + Store 149(param) 148 + 150: 14(ivec4) FunctionCall 18(Fn1(vu4;) 149(param) + 156: 22(ptr) AccessChain 153(psout) 55 + Store 156 155 + 159: 22(ptr) AccessChain 153(psout) 55 + 160: 21(fvec4) Load 159 + Store 158(Color) 160 + Return + FunctionEnd + 11(Fn1(vi4;): 7(ivec4) Function None 9 + 10(x): 8(ptr) FunctionParameter + 12: Label + 30: 7(ivec4) Load 10(x) + ReturnValue 30 + FunctionEnd + 18(Fn1(vu4;): 14(ivec4) Function None 16 + 17(x): 15(ptr) FunctionParameter + 19: Label + 33: 14(ivec4) Load 17(x) + ReturnValue 33 + FunctionEnd + 25(Fn1(vf4;): 21(fvec4) Function None 23 + 24(x): 22(ptr) FunctionParameter + 26: Label + 36: 21(fvec4) Load 24(x) + ReturnValue 36 + FunctionEnd + 28(SomeValue(): 21(fvec4) Function None 27 + 29: Label + 46: 45(ptr) AccessChain 43 44 + 47: 7(ivec4) Load 46 + 48: 21(fvec4) ConvertSToF 47 + ReturnValue 48 + FunctionEnd diff --git a/Test/baseResults/hlsl.typedef.frag.out b/Test/baseResults/hlsl.typedef.frag.out index ca0235ae..e8bda1af 100755 --- a/Test/baseResults/hlsl.typedef.frag.out +++ b/Test/baseResults/hlsl.typedef.frag.out @@ -2,7 +2,7 @@ hlsl.typedef.frag 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; (temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' (in 4-component vector of float) 0:4 'ii' (in int) @@ -29,7 +29,7 @@ gl_FragCoord origin is upper left 0:10 component-wise multiply (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) 0:10 'a1' (temp 4-component vector of float) -0:10 Construct vec4 (global 4-component vector of float) +0:10 Construct vec4 (uniform 4-component vector of float) 0:10 Convert int to float (temp float) 0:10 add (temp int) 0:10 'i' (temp int) @@ -43,7 +43,7 @@ Linked fragment stage: 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; (temp 4-component vector of float) 0:4 Function Parameters: 0:4 'input' (in 4-component vector of float) 0:4 'ii' (in int) @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:10 component-wise multiply (temp 4-component vector of float) 0:10 'input' (in 4-component vector of float) 0:10 'a1' (temp 4-component vector of float) -0:10 Construct vec4 (global 4-component vector of float) +0:10 Construct vec4 (uniform 4-component vector of float) 0:10 Convert int to float (temp float) 0:10 add (temp int) 0:10 'i' (temp int) @@ -86,7 +86,6 @@ gl_FragCoord origin is upper left 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 c3fc10c6..6faa388a 100755 --- a/Test/baseResults/hlsl.void.frag.out +++ b/Test/baseResults/hlsl.void.frag.out @@ -2,17 +2,19 @@ hlsl.void.frag Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: foo1( (global void) +0:1 Function Definition: foo1( (temp void) 0:1 Function Parameters: -0:4 Function Definition: foo2( (global void) +0:2 Function Definition: foo2( (temp void) 0:2 Function Parameters: -0:8 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:5 Function Definition: PixelShaderFunction(vf4; (temp 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:6 Function Call: foo1( (temp void) +0:7 Function Call: foo2( (temp 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 @@ Linked fragment stage: Shader version: 450 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: foo1( (global void) +0:1 Function Definition: foo1( (temp void) 0:1 Function Parameters: -0:4 Function Definition: foo2( (global void) +0:2 Function Definition: foo2( (temp void) 0:2 Function Parameters: -0:8 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) +0:5 Function Definition: PixelShaderFunction(vf4; (temp 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:6 Function Call: foo1( (temp void) +0:7 Function Call: foo2( (temp 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 aece52a4..28e326d2 100755 --- a/Test/baseResults/hlsl.whileLoop.frag.out +++ b/Test/baseResults/hlsl.whileLoop.frag.out @@ -2,19 +2,22 @@ hlsl.whileLoop.frag 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ Linked fragment stage: 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; (temp 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 @@ gl_FragCoord origin is upper left 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 8ba02bf1..0b5c2b78 100644 --- a/Test/baseResults/mains1.frag.out +++ b/Test/baseResults/mains1.frag.out @@ -42,7 +42,7 @@ output primitive = line_strip 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 630af955..80a32255 100644 --- a/Test/baseResults/noMain.vert.out +++ b/Test/baseResults/noMain.vert.out @@ -23,7 +23,7 @@ ERROR: node is still EOpNull! 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 10c693c0..8e03610e 100644 --- a/Test/baseResults/nonVulkan.frag.out +++ b/Test/baseResults/nonVulkan.frag.out @@ -18,7 +18,7 @@ ERROR: node is still EOpNull! 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/numeral.frag.out b/Test/baseResults/numeral.frag.out index 6f5595c8..e5b20410 100644 --- a/Test/baseResults/numeral.frag.out +++ b/Test/baseResults/numeral.frag.out @@ -7,8 +7,8 @@ ERROR: 0:17: '' : octal literal too big ERROR: 0:18: '' : octal literal too big ERROR: 0:23: '' : octal literal digit too large ERROR: 0:24: '' : octal literal digit too large -ERROR: 0:49: '' : bad digit in hexidecimal literal -ERROR: 0:50: '' : hexidecimal literal too big +ERROR: 0:49: '' : bad digit in hexadecimal literal +ERROR: 0:50: '' : hexadecimal literal too big ERROR: 0:88: '' : float literal needs a decimal point or exponent ERROR: 0:98: '' : numeric literal too big ERROR: 0:101: '' : numeric literal too big diff --git a/Test/baseResults/pointCoord.frag.out b/Test/baseResults/pointCoord.frag.out index 633d8b9b..5d53aea1 100644 --- a/Test/baseResults/pointCoord.frag.out +++ b/Test/baseResults/pointCoord.frag.out @@ -14,7 +14,7 @@ Shader version: 100 0:9 true case 0:10 move second child to first child (temp highp 4-component vector of float) 0:10 'color' (temp highp 4-component vector of float) -0:10 texture (global lowp 4-component vector of float) +0:10 texture (global lowp 4-component vector of float, operation at mediump) 0:10 'sampler' (uniform lowp sampler2D) 0:10 'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float PointCoord) 0:9 false case @@ -50,7 +50,7 @@ Shader version: 100 0:9 true case 0:10 move second child to first child (temp highp 4-component vector of float) 0:10 'color' (temp highp 4-component vector of float) -0:10 texture (global lowp 4-component vector of float) +0:10 texture (global lowp 4-component vector of float, operation at mediump) 0:10 'sampler' (uniform lowp sampler2D) 0:10 'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float PointCoord) 0:9 false case diff --git a/Test/baseResults/preprocessor.simple.vert.out b/Test/baseResults/preprocessor.simple.vert.out index 8737bc81..8cbabdad 100644 --- a/Test/baseResults/preprocessor.simple.vert.out +++ b/Test/baseResults/preprocessor.simple.vert.out @@ -19,5 +19,12 @@ int main(){ gl_Position = vec4(1); gl_Position = vec4(1, 2); gl_Position = vec4(fn(3)); + []. ++ -- + + - * % / - ! ~ + << >> < > <= >= + == != + & ^ | && ^^ || ? : + += -= *= /= %= <<= >>= &= |= ^= + 1.2 2E10 5u - 5 lf } diff --git a/Test/baseResults/reflection.vert.out b/Test/baseResults/reflection.vert.out index 24ee7809..1e4c24fa 100644 --- a/Test/baseResults/reflection.vert.out +++ b/Test/baseResults/reflection.vert.out @@ -6,99 +6,99 @@ Linked vertex stage: Uniform reflection: -image_ui2D: offset -1, type 9063, size 1, index -1 -sampler_2D: offset -1, type 8b5e, size 1, index -1 -sampler_2DMSArray: offset -1, type 910b, size 1, index -1 -anonMember3: offset 80, type 8b52, size 1, index 0 -s.a: offset -1, type 1404, size 1, index -1 -named.scalar: offset 12, type 1404, size 1, index 1 -m23: offset 16, type 8b67, size 1, index 0 -scalarAfterm23: offset 48, type 1404, size 1, index 0 -c_m23: offset 16, type 8b67, size 1, index 2 -c_scalarAfterm23: offset 64, type 1404, size 1, index 2 -scalarBeforeArray: offset 96, type 1404, size 1, index 0 -floatArray: offset 112, type 1406, size 5, index 0 -scalarAfterArray: offset 192, type 1404, size 1, index 0 -named.memvec2: offset 48, type 8b50, size 1, index 1 -named.memf1: offset 56, type 1406, size 1, index 1 -named.memf2: offset 60, type 8b56, size 1, index 1 -named.memf3: offset 64, type 1404, size 1, index 1 -named.memvec2a: offset 72, type 8b50, size 1, index 1 -named.m22: offset 80, type 8b5a, size 7, index 1 -dm22: offset -1, type 8b5a, size 4, index -1 -m22: offset 208, type 8b5a, size 3, index 0 -nested.foo.n1.a: offset 0, type 1406, size 1, index 3 -nested.foo.n2.b: offset 16, type 1406, size 1, index 3 -nested.foo.n2.c: offset 20, type 1406, size 1, index 3 -nested.foo.n2.d: offset 24, type 1406, size 1, index 3 -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 -abl.foo: offset 0, type 1406, size 1, index 7 -abl2.foo: offset 0, type 1406, size 1, index 11 -anonMember1: offset 0, type 8b51, size 1, index 0 -uf1: offset -1, type 1406, size 1, index -1 -uf2: offset -1, type 1406, size 1, index -1 -named.member3: offset 32, type 8b52, size 1, index 1 +image_ui2D: offset -1, type 9063, size 1, index -1, binding -1 +sampler_2D: offset -1, type 8b5e, size 1, index -1, binding -1 +sampler_2DMSArray: offset -1, type 910b, size 1, index -1, binding -1 +anonMember3: offset 80, type 8b52, size 1, index 0, binding -1 +s.a: offset -1, type 1404, size 1, index -1, binding -1 +named.scalar: offset 12, type 1404, size 1, index 1, binding -1 +m23: offset 16, type 8b67, size 1, index 0, binding -1 +scalarAfterm23: offset 48, type 1404, size 1, index 0, binding -1 +c_m23: offset 16, type 8b67, size 1, index 2, binding -1 +c_scalarAfterm23: offset 64, type 1404, size 1, index 2, binding -1 +scalarBeforeArray: offset 96, type 1404, size 1, index 0, binding -1 +floatArray: offset 112, type 1406, size 5, index 0, binding -1 +scalarAfterArray: offset 192, type 1404, size 1, index 0, binding -1 +named.memvec2: offset 48, type 8b50, size 1, index 1, binding -1 +named.memf1: offset 56, type 1406, size 1, index 1, binding -1 +named.memf2: offset 60, type 8b56, size 1, index 1, binding -1 +named.memf3: offset 64, type 1404, size 1, index 1, binding -1 +named.memvec2a: offset 72, type 8b50, size 1, index 1, binding -1 +named.m22: offset 80, type 8b5a, size 7, index 1, binding -1 +dm22: offset -1, type 8b5a, size 4, index -1, binding -1 +m22: offset 208, type 8b5a, size 3, index 0, binding -1 +nested.foo.n1.a: offset 0, type 1406, size 1, index 3, binding -1 +nested.foo.n2.b: offset 16, type 1406, size 1, index 3, binding -1 +nested.foo.n2.c: offset 20, type 1406, size 1, index 3, binding -1 +nested.foo.n2.d: offset 24, type 1406, size 1, index 3, binding -1 +deepA[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepA[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[1].d2.d1[0].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[1].d2.d1[1].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[1].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[1].d2.d1[3].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[0].d2.d1[0].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[0].d2.d1[1].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[0].d2.d1[2].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepB[0].d2.d1[3].va: offset -1, type 8b50, size 2, index -1, binding -1 +deepC[1].iv4: offset -1, type 8b52, size 1, index -1, binding -1 +deepC[1].d2.i: offset -1, type 1404, size 1, index -1, binding -1 +deepC[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepC[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepC[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepC[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepC[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepC[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepC[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepC[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepC[1].v3: offset -1, type 8b54, size 1, index -1, binding -1 +deepD[0].iv4: offset -1, type 8b52, size 1, index -1, binding -1 +deepD[0].d2.i: offset -1, type 1404, size 1, index -1, binding -1 +deepD[0].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[0].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[0].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[0].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[0].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[0].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[0].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[0].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[0].v3: offset -1, type 8b54, size 1, index -1, binding -1 +deepD[1].iv4: offset -1, type 8b52, size 1, index -1, binding -1 +deepD[1].d2.i: offset -1, type 1404, size 1, index -1, binding -1 +deepD[1].d2.d1[0].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[1].d2.d1[0].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[1].d2.d1[1].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[1].d2.d1[1].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[1].d2.d1[2].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[1].d2.d1[2].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[1].d2.d1[3].va: offset -1, type 8b50, size 3, index -1, binding -1 +deepD[1].d2.d1[3].b: offset -1, type 8b56, size 1, index -1, binding -1 +deepD[1].v3: offset -1, type 8b54, size 1, index -1, binding -1 +abl.foo: offset 0, type 1406, size 1, index 7, binding -1 +abl2.foo: offset 0, type 1406, size 1, index 11, binding -1 +anonMember1: offset 0, type 8b51, size 1, index 0, binding -1 +uf1: offset -1, type 1406, size 1, index -1, binding -1 +uf2: offset -1, type 1406, size 1, index -1, binding -1 +named.member3: offset 32, type 8b52, size 1, index 1, binding -1 Uniform block reflection: -nameless: offset -1, type ffffffff, size 496, index -1 -named: offset -1, type ffffffff, size 304, index -1 -c_nameless: offset -1, type ffffffff, size 112, index -1 -nested: offset -1, type ffffffff, size 32, index -1 -abl[0]: offset -1, type ffffffff, size 4, index -1 -abl[1]: offset -1, type ffffffff, size 4, index -1 -abl[2]: offset -1, type ffffffff, size 4, index -1 -abl[3]: offset -1, type ffffffff, size 4, index -1 -abl2[0]: offset -1, type ffffffff, size 4, index -1 -abl2[1]: offset -1, type ffffffff, size 4, index -1 -abl2[2]: offset -1, type ffffffff, size 4, index -1 -abl2[3]: offset -1, type ffffffff, size 4, index -1 +nameless: offset -1, type ffffffff, size 496, index -1, binding -1 +named: offset -1, type ffffffff, size 304, index -1, binding -1 +c_nameless: offset -1, type ffffffff, size 112, index -1, binding -1 +nested: offset -1, type ffffffff, size 32, index -1, binding -1 +abl[0]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl[1]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl[2]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl[3]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl2[0]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl2[1]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl2[2]: offset -1, type ffffffff, size 4, index -1, binding -1 +abl2[3]: offset -1, type ffffffff, size 4, index -1, binding -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 +attributeFloat: offset 0, type 1406, size 0, index 0, binding -1 +attributeFloat2: offset 0, type 8b50, size 0, index 0, binding -1 +attributeFloat3: offset 0, type 8b51, size 0, index 0, binding -1 +attributeFloat4: offset 0, type 8b52, size 0, index 0, binding -1 +attributeMat4: offset 0, type 8b5c, size 0, index 0, binding -1 diff --git a/Test/baseResults/remap.basic.dcefunc.frag.out b/Test/baseResults/remap.basic.dcefunc.frag.out new file mode 100644 index 00000000..0f367c96 --- /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 00000000..dd03946d --- /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 00000000..f6d6ed44 --- /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 00000000..3632309a --- /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 00000000..d34ce8ff --- /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 00000000..bd1fa7e4 --- /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 00000000..b149718f --- /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 00000000..53407678 --- /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 00000000..63eb6cbb --- /dev/null +++ b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out @@ -0,0 +1,31 @@ +remap.hlsl.templatetypes.everything.frag + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 9012 + + 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 + 650: TypePointer Output 13(float) + 4045: 650(ptr) Variable Output + 666: TypePointer Input 29(fvec4) + 4872: 666(ptr) Variable Input + 5663: 8 Function None 1282 + 9011: Label + Store 4045 2572 + Return + 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 00000000..df0dcf55 --- /dev/null +++ b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out @@ -0,0 +1,226 @@ +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 6(float) +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 + Store 146(@entryPointOutput) 106 + Return + FunctionEnd diff --git a/Test/baseResults/remap.if.everything.frag.out b/Test/baseResults/remap.if.everything.frag.out new file mode 100644 index 00000000..9f98c184 --- /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 00000000..f3113a36 --- /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 00000000..7a4f37ba --- /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 00000000..792b13a6 --- /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 00000000..09589f57 --- /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 00000000..17484512 --- /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 00000000..d05be117 --- /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 00000000..f9bf0847 --- /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 00000000..a1d9b0d9 --- /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 00000000..7fc8f04b --- /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 00000000..18defecb --- /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 00000000..ff2489e3 --- /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/specExamples.frag.out b/Test/baseResults/specExamples.frag.out index 464a2793..848839c6 100644 --- a/Test/baseResults/specExamples.frag.out +++ b/Test/baseResults/specExamples.frag.out @@ -2,7 +2,7 @@ specExamples.frag Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. ERROR: 0:6: '=' : cannot convert from 'const uint' to 'global int' ERROR: 0:20: '' : numeric literal too big -ERROR: 0:21: '' : hexidecimal literal too big +ERROR: 0:21: '' : hexadecimal literal too big ERROR: 0:37: 'view' : redefinition ERROR: 0:63: 'invariant' : can only apply to an output ERROR: 0:68: 'lightPosition' : redefinition diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out index f06b0fcd..7858845e 100644 --- a/Test/baseResults/spv.400.frag.out +++ b/Test/baseResults/spv.400.frag.out @@ -7,16 +7,17 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 1114 +// Id's are bound by 1118 Capability Shader + Capability Geometry Capability Float64 Capability ImageGatherExtended Capability ClipDistance Capability SampledRect 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 13 1027 1033 1038 1050 1076 1097 1099 1105 1107 + EntryPoint Fragment 4 "main" 13 1027 1033 1038 1050 1076 1097 1099 1105 1107 1116 ExecutionMode 4 OriginUpperLeft Source GLSL 400 SourceExtension "GL_ARB_separate_shader_objects" @@ -55,6 +56,8 @@ Linked fragment stage: Name 1099 "vl2" Name 1105 "uo" Name 1107 "u" + Name 1115 "id" + Name 1116 "gl_PrimitiveID" Decorate 17(u2drs) DescriptorSet 0 Decorate 1025(arrayedSampler) DescriptorSet 0 Decorate 1027(i) Flat @@ -64,6 +67,8 @@ Linked fragment stage: Decorate 1097(gl_FragCoord) BuiltIn FragCoord Decorate 1099(vl2) Location 6 Decorate 1107(u) Flat + Decorate 1116(gl_PrimitiveID) Flat + Decorate 1116(gl_PrimitiveID) BuiltIn PrimitiveId 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 @@ -185,9 +190,12 @@ Linked fragment stage: 1105(uo): 1104(ptr) Variable Output 1106: TypePointer Input 32(int) 1107(u): 1106(ptr) Variable Input + 1114: TypePointer Function 23(int) +1116(gl_PrimitiveID): 1026(ptr) Variable Input 4(main): 2 Function None 3 5: Label 1019(v): 1018(ptr) Variable Function + 1115(id): 1114(ptr) Variable Function 1028: 23(int) Load 1027(i) 1030: 1029(ptr) AccessChain 1025(arrayedSampler) 1028 1031: 1021 Load 1030 @@ -242,6 +250,8 @@ Linked fragment stage: Store 1105(uo) 1111 1112: 2 FunctionCall 6(foo23() 1113: 2 FunctionCall 8(doubles() + 1117: 23(int) Load 1116(gl_PrimitiveID) + Store 1115(id) 1117 Return FunctionEnd 6(foo23(): 2 Function None 3 diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out index 52749134..c3ad2b92 100755 --- a/Test/baseResults/spv.430.vert.out +++ b/Test/baseResults/spv.430.vert.out @@ -63,6 +63,7 @@ Linked vertex stage: 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 c6c08b26..2900fdfc 100755 --- a/Test/baseResults/spv.450.tesc.out +++ b/Test/baseResults/spv.450.tesc.out @@ -7,12 +7,12 @@ Linked tessellation control stage: // 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 @@ Linked tessellation control stage: 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 @@ Linked tessellation control stage: 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 e9a9d81b..3d391c31 100755 --- a/Test/baseResults/spv.accessChain.frag.out +++ b/Test/baseResults/spv.accessChain.frag.out @@ -7,12 +7,12 @@ Linked fragment stage: // 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 @@ Linked fragment stage: 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 @@ Linked fragment stage: 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 @@ Linked fragment stage: 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 4888bea4..5a19d2f4 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 @@ Linked fragment stage: 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.buffer.autoassign.frag.out b/Test/baseResults/spv.buffer.autoassign.frag.out new file mode 100644 index 00000000..1d94707c --- /dev/null +++ b/Test/baseResults/spv.buffer.autoassign.frag.out @@ -0,0 +1,89 @@ +spv.buffer.autoassign.frag + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 45 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 41 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 8 "PS_OUTPUT" + MemberName 8(PS_OUTPUT) 0 "Color" + Name 10 "psout" + Name 13 "MyUB1" + MemberName 13(MyUB1) 0 "g_a" + MemberName 13(MyUB1) 1 "g_b" + Name 15 "" + Name 25 "MyUB2" + MemberName 25(MyUB2) 0 "g_c" + Name 27 "" + Name 31 "MyUB3" + MemberName 31(MyUB3) 0 "g_d" + Name 33 "" + Name 41 "Color" + MemberDecorate 13(MyUB1) 0 Offset 0 + MemberDecorate 13(MyUB1) 1 Offset 4 + Decorate 13(MyUB1) Block + Decorate 15 DescriptorSet 0 + Decorate 15 Binding 20 + MemberDecorate 25(MyUB2) 0 Offset 0 + Decorate 25(MyUB2) Block + Decorate 27 DescriptorSet 0 + Decorate 27 Binding 15 + MemberDecorate 31(MyUB3) 0 Offset 0 + Decorate 31(MyUB3) Block + Decorate 33 DescriptorSet 0 + Decorate 33 Binding 16 + Decorate 41(Color) Location 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(MyUB1): TypeStruct 6(float) 11(int) + 14: TypePointer Uniform 13(MyUB1) + 15: 14(ptr) Variable Uniform + 16: TypePointer Uniform 6(float) + 19: 11(int) Constant 1 + 20: TypePointer Uniform 11(int) + 25(MyUB2): TypeStruct 6(float) + 26: TypePointer Uniform 25(MyUB2) + 27: 26(ptr) Variable Uniform + 31(MyUB3): TypeStruct 6(float) + 32: TypePointer Uniform 31(MyUB3) + 33: 32(ptr) Variable Uniform + 38: TypePointer Function 7(fvec4) + 40: TypePointer Output 7(fvec4) + 41(Color): 40(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 10(psout): 9(ptr) Variable Function + 17: 16(ptr) AccessChain 15 12 + 18: 6(float) Load 17 + 21: 20(ptr) AccessChain 15 19 + 22: 11(int) Load 21 + 23: 6(float) ConvertSToF 22 + 24: 6(float) FAdd 18 23 + 28: 16(ptr) AccessChain 27 12 + 29: 6(float) Load 28 + 30: 6(float) FAdd 24 29 + 34: 16(ptr) AccessChain 33 12 + 35: 6(float) Load 34 + 36: 6(float) FAdd 30 35 + 37: 7(fvec4) CompositeConstruct 36 36 36 36 + 39: 38(ptr) AccessChain 10(psout) 12 + Store 39 37 + 42: 38(ptr) AccessChain 10(psout) 12 + 43: 7(fvec4) Load 42 + Store 41(Color) 43 + Return + FunctionEnd diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out new file mode 100644 index 00000000..f1fe6e4e --- /dev/null +++ b/Test/baseResults/spv.float16.frag.out @@ -0,0 +1,836 @@ +spv.float16.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 534 + + Capability Shader + Capability Float16 + Capability Float64 + Capability Int64 + Capability DerivativeControl + Capability InterpolationFunction + Extension "SPV_AMD_gpu_shader_half_float" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 465 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_AMD_gpu_shader_half_float" + SourceExtension "GL_ARB_gpu_shader_int64" + Name 4 "main" + Name 6 "literal(" + Name 8 "operators(" + Name 10 "typeCast(" + Name 12 "builtinAngleTrigFuncs(" + Name 14 "builtinExpFuncs(" + Name 16 "builtinCommonFuncs(" + Name 18 "builtinPackUnpackFuncs(" + Name 20 "builtinGeometryFuncs(" + Name 22 "builtinMatrixFuncs(" + Name 24 "builtinVecRelFuncs(" + Name 26 "builtinFragProcFuncs(" + Name 31 "f16v" + Name 42 "f16v" + Name 64 "f16m" + Name 87 "f16" + Name 111 "b" + Name 153 "f16v" + Name 156 "bv" + Name 167 "fv" + Name 175 "dv" + Name 186 "iv" + Name 193 "uv" + Name 201 "i64v" + Name 209 "u64v" + Name 216 "f16v2" + Name 217 "f16v1" + Name 249 "f16v2" + Name 250 "f16v1" + Name 266 "f16v2" + Name 267 "f16v1" + Name 288 "f16" + Name 292 "f16v3" + Name 332 "bv" + Name 353 "b" + Name 363 "iv" + Name 364 "ResType" + Name 372 "u" + Name 373 "f16v" + Name 378 "f16" + Name 379 "f16v1" + Name 383 "f16v2" + Name 389 "f16v3" + Name 408 "f16m3" + Name 409 "f16m1" + Name 411 "f16m2" + Name 420 "f16v1" + Name 422 "f16v2" + Name 427 "f16m4" + Name 430 "f16" + Name 433 "f16m5" + Name 438 "f16m6" + Name 439 "f16m7" + Name 442 "bv" + Name 443 "f16v1" + Name 445 "f16v2" + Name 463 "f16v" + Name 465 "if16v" + Name 514 "S" + MemberName 514(S) 0 "x" + MemberName 514(S) 1 "y" + MemberName 514(S) 2 "z" + Name 516 "B1" + MemberName 516(B1) 0 "a" + MemberName 516(B1) 1 "b" + MemberName 516(B1) 2 "c" + MemberName 516(B1) 3 "d" + MemberName 516(B1) 4 "e" + MemberName 516(B1) 5 "f" + MemberName 516(B1) 6 "g" + MemberName 516(B1) 7 "h" + Name 518 "" + Name 521 "S" + MemberName 521(S) 0 "x" + MemberName 521(S) 1 "y" + MemberName 521(S) 2 "z" + Name 523 "B2" + MemberName 523(B2) 0 "o" + MemberName 523(B2) 1 "p" + MemberName 523(B2) 2 "q" + MemberName 523(B2) 3 "r" + MemberName 523(B2) 4 "s" + MemberName 523(B2) 5 "t" + MemberName 523(B2) 6 "u" + MemberName 523(B2) 7 "v" + Name 525 "" + Decorate 512 ArrayStride 16 + Decorate 513 ArrayStride 32 + MemberDecorate 514(S) 0 Offset 0 + MemberDecorate 514(S) 1 Offset 4 + MemberDecorate 514(S) 2 Offset 8 + Decorate 515 ArrayStride 16 + MemberDecorate 516(B1) 0 Offset 0 + MemberDecorate 516(B1) 1 Offset 4 + MemberDecorate 516(B1) 2 Offset 8 + MemberDecorate 516(B1) 3 Offset 16 + MemberDecorate 516(B1) 4 ColMajor + MemberDecorate 516(B1) 4 Offset 48 + MemberDecorate 516(B1) 4 MatrixStride 16 + MemberDecorate 516(B1) 5 ColMajor + MemberDecorate 516(B1) 5 Offset 80 + MemberDecorate 516(B1) 5 MatrixStride 16 + MemberDecorate 516(B1) 6 Offset 144 + MemberDecorate 516(B1) 7 Offset 160 + Decorate 516(B1) Block + Decorate 518 DescriptorSet 0 + Decorate 519 ArrayStride 2 + Decorate 520 ArrayStride 12 + MemberDecorate 521(S) 0 Offset 0 + MemberDecorate 521(S) 1 Offset 4 + MemberDecorate 521(S) 2 Offset 8 + Decorate 522 ArrayStride 16 + MemberDecorate 523(B2) 0 Offset 0 + MemberDecorate 523(B2) 1 Offset 4 + MemberDecorate 523(B2) 2 Offset 8 + MemberDecorate 523(B2) 3 Offset 14 + MemberDecorate 523(B2) 4 RowMajor + MemberDecorate 523(B2) 4 Offset 20 + MemberDecorate 523(B2) 4 MatrixStride 4 + MemberDecorate 523(B2) 5 RowMajor + MemberDecorate 523(B2) 5 Offset 32 + MemberDecorate 523(B2) 5 MatrixStride 4 + MemberDecorate 523(B2) 6 Offset 56 + MemberDecorate 523(B2) 7 Offset 72 + Decorate 523(B2) BufferBlock + Decorate 525 DescriptorSet 0 + Decorate 526 SpecId 100 + Decorate 527 SpecId 101 + Decorate 528 SpecId 102 + 2: TypeVoid + 3: TypeFunction 2 + 28: TypeFloat 16 + 29: TypeVector 28(float) 2 + 30: TypePointer Function 29(fvec2) + 32: 28(float) Constant 16 + 33: TypeInt 32 0 + 34: 33(int) Constant 0 + 35: TypePointer Function 28(float) + 37: 28(float) Constant 46080 + 38: 28(float) Constant 10158 + 39: 29(fvec2) ConstantComposite 37 38 + 56: 28(float) Constant 15360 + 62: TypeMatrix 29(fvec2) 2 + 63: TypePointer Function 62 + 90: 33(int) Constant 1 + 109: TypeBool + 110: TypePointer Function 109(bool) + 151: TypeVector 28(float) 3 + 152: TypePointer Function 151(fvec3) + 154: TypeVector 109(bool) 3 + 155: TypePointer Function 154(bvec3) + 158: 28(float) Constant 0 + 159: 151(fvec3) ConstantComposite 158 158 158 + 160: 151(fvec3) ConstantComposite 56 56 56 + 164: TypeFloat 32 + 165: TypeVector 164(float) 3 + 166: TypePointer Function 165(fvec3) + 172: TypeFloat 64 + 173: TypeVector 172(float) 3 + 174: TypePointer Function 173(fvec3) + 183: TypeInt 32 1 + 184: TypeVector 183(int) 3 + 185: TypePointer Function 184(ivec3) + 191: TypeVector 33(int) 3 + 192: TypePointer Function 191(ivec3) + 198: TypeInt 64 1 + 199: TypeVector 198(int) 3 + 200: TypePointer Function 199(ivec3) + 206: TypeInt 64 0 + 207: TypeVector 206(int) 3 + 208: TypePointer Function 207(ivec3) + 214: TypeVector 28(float) 4 + 215: TypePointer Function 214(fvec4) + 364(ResType): TypeStruct 151(fvec3) 184(ivec3) + 371: TypePointer Function 33(int) + 406: TypeMatrix 151(fvec3) 2 + 407: TypePointer Function 406 + 425: TypeMatrix 29(fvec2) 3 + 426: TypePointer Function 425 + 431: TypeMatrix 151(fvec3) 3 + 432: TypePointer Function 431 + 436: TypeMatrix 214(fvec4) 4 + 437: TypePointer Function 436 + 464: TypePointer Input 151(fvec3) + 465(if16v): 464(ptr) Variable Input + 466: TypePointer Input 28(float) + 503: 183(int) Constant 1 + 508: 28(float) Constant 14336 + 509: 29(fvec2) ConstantComposite 508 508 + 511: 33(int) Constant 2 + 512: TypeArray 28(float) 511 + 513: TypeArray 406 511 + 514(S): TypeStruct 28(float) 29(fvec2) 151(fvec3) + 515: TypeArray 514(S) 511 + 516(B1): TypeStruct 28(float) 29(fvec2) 151(fvec3) 512 406 513 514(S) 515 + 517: TypePointer Uniform 516(B1) + 518: 517(ptr) Variable Uniform + 519: TypeArray 28(float) 511 + 520: TypeArray 406 511 + 521(S): TypeStruct 28(float) 29(fvec2) 151(fvec3) + 522: TypeArray 521(S) 511 + 523(B2): TypeStruct 28(float) 29(fvec2) 151(fvec3) 519 406 520 521(S) 522 + 524: TypePointer Uniform 523(B2) + 525: 524(ptr) Variable Uniform + 526: 28(float) SpecConstant 12288 + 527: 164(float) SpecConstant 1048576000 + 528: 172(float) SpecConstant 0 1071644672 + 529: 164(float) SpecConstantOp 115 526 + 530: 164(float) SpecConstantOp 115 526 + 531: 172(float) SpecConstantOp 115 530 + 532: 28(float) SpecConstantOp 115 527 + 533: 28(float) SpecConstantOp 115 528 + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd + 6(literal(): 2 Function None 3 + 7: Label + 31(f16v): 30(ptr) Variable Function + 36: 35(ptr) AccessChain 31(f16v) 34 + Store 36 32 + 40: 29(fvec2) Load 31(f16v) + 41: 29(fvec2) FAdd 40 39 + Store 31(f16v) 41 + Return + FunctionEnd + 8(operators(): 2 Function None 3 + 9: Label + 42(f16v): 30(ptr) Variable Function + 64(f16m): 63(ptr) Variable Function + 87(f16): 35(ptr) Variable Function + 111(b): 110(ptr) Variable Function + 43: 29(fvec2) Load 42(f16v) + 44: 29(fvec2) Load 42(f16v) + 45: 29(fvec2) FAdd 44 43 + Store 42(f16v) 45 + 46: 29(fvec2) Load 42(f16v) + 47: 29(fvec2) Load 42(f16v) + 48: 29(fvec2) FSub 47 46 + Store 42(f16v) 48 + 49: 29(fvec2) Load 42(f16v) + 50: 29(fvec2) Load 42(f16v) + 51: 29(fvec2) FMul 50 49 + Store 42(f16v) 51 + 52: 29(fvec2) Load 42(f16v) + 53: 29(fvec2) Load 42(f16v) + 54: 29(fvec2) FDiv 53 52 + Store 42(f16v) 54 + 55: 29(fvec2) Load 42(f16v) + 57: 29(fvec2) CompositeConstruct 56 56 + 58: 29(fvec2) FAdd 55 57 + Store 42(f16v) 58 + 59: 29(fvec2) Load 42(f16v) + 60: 29(fvec2) CompositeConstruct 56 56 + 61: 29(fvec2) FSub 59 60 + Store 42(f16v) 61 + 65: 62 Load 64(f16m) + 66: 29(fvec2) CompositeConstruct 56 56 + 67: 29(fvec2) CompositeExtract 65 0 + 68: 29(fvec2) FAdd 67 66 + 69: 29(fvec2) CompositeExtract 65 1 + 70: 29(fvec2) FAdd 69 66 + 71: 62 CompositeConstruct 68 70 + Store 64(f16m) 71 + 72: 62 Load 64(f16m) + 73: 29(fvec2) CompositeConstruct 56 56 + 74: 29(fvec2) CompositeExtract 72 0 + 75: 29(fvec2) FSub 74 73 + 76: 29(fvec2) CompositeExtract 72 1 + 77: 29(fvec2) FSub 76 73 + 78: 62 CompositeConstruct 75 77 + Store 64(f16m) 78 + 79: 29(fvec2) Load 42(f16v) + 80: 29(fvec2) FNegate 79 + Store 42(f16v) 80 + 81: 62 Load 64(f16m) + 82: 29(fvec2) CompositeExtract 81 0 + 83: 29(fvec2) FNegate 82 + 84: 29(fvec2) CompositeExtract 81 1 + 85: 29(fvec2) FNegate 84 + 86: 62 CompositeConstruct 83 85 + Store 64(f16m) 86 + 88: 35(ptr) AccessChain 42(f16v) 34 + 89: 28(float) Load 88 + 91: 35(ptr) AccessChain 42(f16v) 90 + 92: 28(float) Load 91 + 93: 28(float) FAdd 89 92 + Store 87(f16) 93 + 94: 35(ptr) AccessChain 42(f16v) 34 + 95: 28(float) Load 94 + 96: 35(ptr) AccessChain 42(f16v) 90 + 97: 28(float) Load 96 + 98: 28(float) FSub 95 97 + Store 87(f16) 98 + 99: 35(ptr) AccessChain 42(f16v) 34 + 100: 28(float) Load 99 + 101: 35(ptr) AccessChain 42(f16v) 90 + 102: 28(float) Load 101 + 103: 28(float) FMul 100 102 + Store 87(f16) 103 + 104: 35(ptr) AccessChain 42(f16v) 34 + 105: 28(float) Load 104 + 106: 35(ptr) AccessChain 42(f16v) 90 + 107: 28(float) Load 106 + 108: 28(float) FDiv 105 107 + Store 87(f16) 108 + 112: 35(ptr) AccessChain 42(f16v) 34 + 113: 28(float) Load 112 + 114: 28(float) Load 87(f16) + 115: 109(bool) FOrdNotEqual 113 114 + Store 111(b) 115 + 116: 35(ptr) AccessChain 42(f16v) 90 + 117: 28(float) Load 116 + 118: 28(float) Load 87(f16) + 119: 109(bool) FOrdEqual 117 118 + Store 111(b) 119 + 120: 35(ptr) AccessChain 42(f16v) 34 + 121: 28(float) Load 120 + 122: 28(float) Load 87(f16) + 123: 109(bool) FOrdGreaterThan 121 122 + Store 111(b) 123 + 124: 35(ptr) AccessChain 42(f16v) 90 + 125: 28(float) Load 124 + 126: 28(float) Load 87(f16) + 127: 109(bool) FOrdLessThan 125 126 + Store 111(b) 127 + 128: 35(ptr) AccessChain 42(f16v) 34 + 129: 28(float) Load 128 + 130: 28(float) Load 87(f16) + 131: 109(bool) FOrdGreaterThanEqual 129 130 + Store 111(b) 131 + 132: 35(ptr) AccessChain 42(f16v) 90 + 133: 28(float) Load 132 + 134: 28(float) Load 87(f16) + 135: 109(bool) FOrdLessThanEqual 133 134 + Store 111(b) 135 + 136: 29(fvec2) Load 42(f16v) + 137: 28(float) Load 87(f16) + 138: 29(fvec2) VectorTimesScalar 136 137 + Store 42(f16v) 138 + 139: 62 Load 64(f16m) + 140: 28(float) Load 87(f16) + 141: 62 MatrixTimesScalar 139 140 + Store 64(f16m) 141 + 142: 62 Load 64(f16m) + 143: 29(fvec2) Load 42(f16v) + 144: 29(fvec2) MatrixTimesVector 142 143 + Store 42(f16v) 144 + 145: 29(fvec2) Load 42(f16v) + 146: 62 Load 64(f16m) + 147: 29(fvec2) VectorTimesMatrix 145 146 + Store 42(f16v) 147 + 148: 62 Load 64(f16m) + 149: 62 Load 64(f16m) + 150: 62 MatrixTimesMatrix 148 149 + Store 64(f16m) 150 + Return + FunctionEnd + 10(typeCast(): 2 Function None 3 + 11: Label + 153(f16v): 152(ptr) Variable Function + 156(bv): 155(ptr) Variable Function + 167(fv): 166(ptr) Variable Function + 175(dv): 174(ptr) Variable Function + 186(iv): 185(ptr) Variable Function + 193(uv): 192(ptr) Variable Function + 201(i64v): 200(ptr) Variable Function + 209(u64v): 208(ptr) Variable Function + 157: 154(bvec3) Load 156(bv) + 161: 151(fvec3) Select 157 160 159 + Store 153(f16v) 161 + 162: 151(fvec3) Load 153(f16v) + 163: 154(bvec3) FOrdNotEqual 162 159 + Store 156(bv) 163 + 168: 165(fvec3) Load 167(fv) + 169: 151(fvec3) FConvert 168 + Store 153(f16v) 169 + 170: 151(fvec3) Load 153(f16v) + 171: 165(fvec3) FConvert 170 + Store 167(fv) 171 + 176: 173(fvec3) Load 175(dv) + 177: 151(fvec3) FConvert 176 + Store 153(f16v) 177 + 178: 173(fvec3) Load 175(dv) + 179: 172(float) CompositeExtract 178 0 + 180: 172(float) CompositeExtract 178 1 + 181: 172(float) CompositeExtract 178 2 + 182: 173(fvec3) CompositeConstruct 179 180 181 + Store 175(dv) 182 + 187: 184(ivec3) Load 186(iv) + 188: 151(fvec3) ConvertSToF 187 + Store 153(f16v) 188 + 189: 151(fvec3) Load 153(f16v) + 190: 184(ivec3) ConvertFToS 189 + Store 186(iv) 190 + 194: 191(ivec3) Load 193(uv) + 195: 151(fvec3) ConvertUToF 194 + Store 153(f16v) 195 + 196: 151(fvec3) Load 153(f16v) + 197: 191(ivec3) ConvertFToU 196 + Store 193(uv) 197 + 202: 199(ivec3) Load 201(i64v) + 203: 151(fvec3) ConvertSToF 202 + Store 153(f16v) 203 + 204: 151(fvec3) Load 153(f16v) + 205: 199(ivec3) ConvertFToS 204 + Store 201(i64v) 205 + 210: 207(ivec3) Load 209(u64v) + 211: 151(fvec3) ConvertUToF 210 + Store 153(f16v) 211 + 212: 151(fvec3) Load 153(f16v) + 213: 207(ivec3) ConvertFToU 212 + Store 209(u64v) 213 + Return + FunctionEnd +12(builtinAngleTrigFuncs(): 2 Function None 3 + 13: Label + 216(f16v2): 215(ptr) Variable Function + 217(f16v1): 215(ptr) Variable Function + 218: 214(fvec4) Load 217(f16v1) + 219: 214(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 218 + Store 216(f16v2) 219 + 220: 214(fvec4) Load 217(f16v1) + 221: 214(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 220 + Store 216(f16v2) 221 + 222: 214(fvec4) Load 217(f16v1) + 223: 214(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 222 + Store 216(f16v2) 223 + 224: 214(fvec4) Load 217(f16v1) + 225: 214(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 224 + Store 216(f16v2) 225 + 226: 214(fvec4) Load 217(f16v1) + 227: 214(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 226 + Store 216(f16v2) 227 + 228: 214(fvec4) Load 217(f16v1) + 229: 214(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 228 + Store 216(f16v2) 229 + 230: 214(fvec4) Load 217(f16v1) + 231: 214(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 230 + Store 216(f16v2) 231 + 232: 214(fvec4) Load 217(f16v1) + 233: 214(fvec4) Load 216(f16v2) + 234: 214(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 232 233 + Store 216(f16v2) 234 + 235: 214(fvec4) Load 217(f16v1) + 236: 214(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 235 + Store 216(f16v2) 236 + 237: 214(fvec4) Load 217(f16v1) + 238: 214(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 237 + Store 216(f16v2) 238 + 239: 214(fvec4) Load 217(f16v1) + 240: 214(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 239 + Store 216(f16v2) 240 + 241: 214(fvec4) Load 217(f16v1) + 242: 214(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 241 + Store 216(f16v2) 242 + 243: 214(fvec4) Load 217(f16v1) + 244: 214(fvec4) ExtInst 1(GLSL.std.450) 22(Asinh) 243 + Store 216(f16v2) 244 + 245: 214(fvec4) Load 217(f16v1) + 246: 214(fvec4) ExtInst 1(GLSL.std.450) 23(Acosh) 245 + Store 216(f16v2) 246 + 247: 214(fvec4) Load 217(f16v1) + 248: 214(fvec4) ExtInst 1(GLSL.std.450) 24(Atanh) 247 + Store 216(f16v2) 248 + Return + FunctionEnd +14(builtinExpFuncs(): 2 Function None 3 + 15: Label + 249(f16v2): 30(ptr) Variable Function + 250(f16v1): 30(ptr) Variable Function + 251: 29(fvec2) Load 250(f16v1) + 252: 29(fvec2) Load 249(f16v2) + 253: 29(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 251 252 + Store 249(f16v2) 253 + 254: 29(fvec2) Load 250(f16v1) + 255: 29(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 254 + Store 249(f16v2) 255 + 256: 29(fvec2) Load 250(f16v1) + 257: 29(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 256 + Store 249(f16v2) 257 + 258: 29(fvec2) Load 250(f16v1) + 259: 29(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 258 + Store 249(f16v2) 259 + 260: 29(fvec2) Load 250(f16v1) + 261: 29(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 260 + Store 249(f16v2) 261 + 262: 29(fvec2) Load 250(f16v1) + 263: 29(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 262 + Store 249(f16v2) 263 + 264: 29(fvec2) Load 250(f16v1) + 265: 29(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 264 + Store 249(f16v2) 265 + Return + FunctionEnd +16(builtinCommonFuncs(): 2 Function None 3 + 17: Label + 266(f16v2): 152(ptr) Variable Function + 267(f16v1): 152(ptr) Variable Function + 288(f16): 35(ptr) Variable Function + 292(f16v3): 152(ptr) Variable Function + 332(bv): 155(ptr) Variable Function + 353(b): 110(ptr) Variable Function + 363(iv): 185(ptr) Variable Function + 268: 151(fvec3) Load 267(f16v1) + 269: 151(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 268 + Store 266(f16v2) 269 + 270: 151(fvec3) Load 267(f16v1) + 271: 151(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 270 + Store 266(f16v2) 271 + 272: 151(fvec3) Load 267(f16v1) + 273: 151(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 272 + Store 266(f16v2) 273 + 274: 151(fvec3) Load 267(f16v1) + 275: 151(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 274 + Store 266(f16v2) 275 + 276: 151(fvec3) Load 267(f16v1) + 277: 151(fvec3) ExtInst 1(GLSL.std.450) 1(Round) 276 + Store 266(f16v2) 277 + 278: 151(fvec3) Load 267(f16v1) + 279: 151(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 278 + Store 266(f16v2) 279 + 280: 151(fvec3) Load 267(f16v1) + 281: 151(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 280 + Store 266(f16v2) 281 + 282: 151(fvec3) Load 267(f16v1) + 283: 151(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 282 + Store 266(f16v2) 283 + 284: 151(fvec3) Load 267(f16v1) + 285: 151(fvec3) Load 266(f16v2) + 286: 151(fvec3) FMod 284 285 + Store 266(f16v2) 286 + 287: 151(fvec3) Load 267(f16v1) + 289: 28(float) Load 288(f16) + 290: 151(fvec3) CompositeConstruct 289 289 289 + 291: 151(fvec3) FMod 287 290 + Store 266(f16v2) 291 + 293: 151(fvec3) Load 267(f16v1) + 294: 151(fvec3) ExtInst 1(GLSL.std.450) 35(Modf) 293 266(f16v2) + Store 292(f16v3) 294 + 295: 151(fvec3) Load 267(f16v1) + 296: 151(fvec3) Load 266(f16v2) + 297: 151(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 295 296 + Store 292(f16v3) 297 + 298: 151(fvec3) Load 267(f16v1) + 299: 28(float) Load 288(f16) + 300: 151(fvec3) CompositeConstruct 299 299 299 + 301: 151(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 298 300 + Store 292(f16v3) 301 + 302: 151(fvec3) Load 267(f16v1) + 303: 151(fvec3) Load 266(f16v2) + 304: 151(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 302 303 + Store 292(f16v3) 304 + 305: 151(fvec3) Load 267(f16v1) + 306: 28(float) Load 288(f16) + 307: 151(fvec3) CompositeConstruct 306 306 306 + 308: 151(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 305 307 + Store 292(f16v3) 308 + 309: 151(fvec3) Load 267(f16v1) + 310: 28(float) Load 288(f16) + 311: 35(ptr) AccessChain 266(f16v2) 34 + 312: 28(float) Load 311 + 313: 151(fvec3) CompositeConstruct 310 310 310 + 314: 151(fvec3) CompositeConstruct 312 312 312 + 315: 151(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 309 313 314 + Store 292(f16v3) 315 + 316: 151(fvec3) Load 267(f16v1) + 317: 151(fvec3) Load 266(f16v2) + 318: 28(float) Load 288(f16) + 319: 151(fvec3) CompositeConstruct 318 318 318 + 320: 151(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 316 317 319 + Store 292(f16v3) 320 + 321: 151(fvec3) Load 267(f16v1) + 322: 151(fvec3) Load 266(f16v2) + 323: 28(float) Load 288(f16) + 324: 151(fvec3) CompositeConstruct 323 323 323 + 325: 151(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 321 322 324 + Store 292(f16v3) 325 + 326: 151(fvec3) Load 267(f16v1) + 327: 151(fvec3) Load 266(f16v2) + 328: 151(fvec3) Load 292(f16v3) + 329: 151(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 326 327 328 + Store 292(f16v3) 329 + 330: 151(fvec3) Load 267(f16v1) + 331: 151(fvec3) Load 266(f16v2) + 333: 154(bvec3) Load 332(bv) + 334: 151(fvec3) Select 333 331 330 + Store 292(f16v3) 334 + 335: 151(fvec3) Load 267(f16v1) + 336: 151(fvec3) Load 266(f16v2) + 337: 151(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 335 336 + Store 292(f16v3) 337 + 338: 28(float) Load 288(f16) + 339: 151(fvec3) Load 292(f16v3) + 340: 151(fvec3) CompositeConstruct 338 338 338 + 341: 151(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 340 339 + Store 292(f16v3) 341 + 342: 151(fvec3) Load 267(f16v1) + 343: 151(fvec3) Load 266(f16v2) + 344: 151(fvec3) Load 292(f16v3) + 345: 151(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 342 343 344 + Store 292(f16v3) 345 + 346: 28(float) Load 288(f16) + 347: 35(ptr) AccessChain 267(f16v1) 34 + 348: 28(float) Load 347 + 349: 151(fvec3) Load 266(f16v2) + 350: 151(fvec3) CompositeConstruct 346 346 346 + 351: 151(fvec3) CompositeConstruct 348 348 348 + 352: 151(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 350 351 349 + Store 292(f16v3) 352 + 354: 28(float) Load 288(f16) + 355: 109(bool) IsNan 354 + Store 353(b) 355 + 356: 151(fvec3) Load 267(f16v1) + 357: 154(bvec3) IsInf 356 + Store 332(bv) 357 + 358: 151(fvec3) Load 267(f16v1) + 359: 151(fvec3) Load 266(f16v2) + 360: 151(fvec3) Load 292(f16v3) + 361: 151(fvec3) ExtInst 1(GLSL.std.450) 50(Fma) 358 359 360 + Store 292(f16v3) 361 + 362: 151(fvec3) Load 267(f16v1) + 365:364(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 362 + 366: 184(ivec3) CompositeExtract 365 1 + Store 363(iv) 366 + 367: 151(fvec3) CompositeExtract 365 0 + Store 266(f16v2) 367 + 368: 151(fvec3) Load 267(f16v1) + 369: 184(ivec3) Load 363(iv) + 370: 151(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 368 369 + Store 266(f16v2) 370 + Return + FunctionEnd +18(builtinPackUnpackFuncs(): 2 Function None 3 + 19: Label + 372(u): 371(ptr) Variable Function + 373(f16v): 30(ptr) Variable Function + 374: 29(fvec2) Load 373(f16v) + 375: 33(int) Bitcast 374 + Store 372(u) 375 + 376: 33(int) Load 372(u) + 377: 29(fvec2) Bitcast 376 + Store 373(f16v) 377 + Return + FunctionEnd +20(builtinGeometryFuncs(): 2 Function None 3 + 21: Label + 378(f16): 35(ptr) Variable Function + 379(f16v1): 152(ptr) Variable Function + 383(f16v2): 152(ptr) Variable Function + 389(f16v3): 152(ptr) Variable Function + 380: 151(fvec3) Load 379(f16v1) + 381: 28(float) ExtInst 1(GLSL.std.450) 66(Length) 380 + Store 378(f16) 381 + 382: 151(fvec3) Load 379(f16v1) + 384: 151(fvec3) Load 383(f16v2) + 385: 28(float) ExtInst 1(GLSL.std.450) 67(Distance) 382 384 + Store 378(f16) 385 + 386: 151(fvec3) Load 379(f16v1) + 387: 151(fvec3) Load 383(f16v2) + 388: 28(float) Dot 386 387 + Store 378(f16) 388 + 390: 151(fvec3) Load 379(f16v1) + 391: 151(fvec3) Load 383(f16v2) + 392: 151(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 390 391 + Store 389(f16v3) 392 + 393: 151(fvec3) Load 379(f16v1) + 394: 151(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 393 + Store 383(f16v2) 394 + 395: 151(fvec3) Load 379(f16v1) + 396: 151(fvec3) Load 383(f16v2) + 397: 151(fvec3) Load 389(f16v3) + 398: 151(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 395 396 397 + Store 389(f16v3) 398 + 399: 151(fvec3) Load 379(f16v1) + 400: 151(fvec3) Load 383(f16v2) + 401: 151(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 399 400 + Store 389(f16v3) 401 + 402: 151(fvec3) Load 379(f16v1) + 403: 151(fvec3) Load 383(f16v2) + 404: 28(float) Load 378(f16) + 405: 151(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 402 403 404 + Store 389(f16v3) 405 + Return + FunctionEnd +22(builtinMatrixFuncs(): 2 Function None 3 + 23: Label + 408(f16m3): 407(ptr) Variable Function + 409(f16m1): 407(ptr) Variable Function + 411(f16m2): 407(ptr) Variable Function + 420(f16v1): 152(ptr) Variable Function + 422(f16v2): 30(ptr) Variable Function + 427(f16m4): 426(ptr) Variable Function + 430(f16): 35(ptr) Variable Function + 433(f16m5): 432(ptr) Variable Function + 438(f16m6): 437(ptr) Variable Function + 439(f16m7): 437(ptr) Variable Function + 410: 406 Load 409(f16m1) + 412: 406 Load 411(f16m2) + 413: 151(fvec3) CompositeExtract 410 0 + 414: 151(fvec3) CompositeExtract 412 0 + 415: 151(fvec3) FMul 413 414 + 416: 151(fvec3) CompositeExtract 410 1 + 417: 151(fvec3) CompositeExtract 412 1 + 418: 151(fvec3) FMul 416 417 + 419: 406 CompositeConstruct 415 418 + Store 408(f16m3) 419 + 421: 151(fvec3) Load 420(f16v1) + 423: 29(fvec2) Load 422(f16v2) + 424: 406 OuterProduct 421 423 + Store 409(f16m1) 424 + 428: 406 Load 409(f16m1) + 429: 425 Transpose 428 + Store 427(f16m4) 429 + 434: 431 Load 433(f16m5) + 435: 28(float) ExtInst 1(GLSL.std.450) 33(Determinant) 434 + Store 430(f16) 435 + 440: 436 Load 439(f16m7) + 441: 436 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 440 + Store 438(f16m6) 441 + Return + FunctionEnd +24(builtinVecRelFuncs(): 2 Function None 3 + 25: Label + 442(bv): 155(ptr) Variable Function + 443(f16v1): 152(ptr) Variable Function + 445(f16v2): 152(ptr) Variable Function + 444: 151(fvec3) Load 443(f16v1) + 446: 151(fvec3) Load 445(f16v2) + 447: 154(bvec3) FOrdLessThan 444 446 + Store 442(bv) 447 + 448: 151(fvec3) Load 443(f16v1) + 449: 151(fvec3) Load 445(f16v2) + 450: 154(bvec3) FOrdLessThanEqual 448 449 + Store 442(bv) 450 + 451: 151(fvec3) Load 443(f16v1) + 452: 151(fvec3) Load 445(f16v2) + 453: 154(bvec3) FOrdGreaterThan 451 452 + Store 442(bv) 453 + 454: 151(fvec3) Load 443(f16v1) + 455: 151(fvec3) Load 445(f16v2) + 456: 154(bvec3) FOrdGreaterThanEqual 454 455 + Store 442(bv) 456 + 457: 151(fvec3) Load 443(f16v1) + 458: 151(fvec3) Load 445(f16v2) + 459: 154(bvec3) FOrdEqual 457 458 + Store 442(bv) 459 + 460: 151(fvec3) Load 443(f16v1) + 461: 151(fvec3) Load 445(f16v2) + 462: 154(bvec3) FOrdNotEqual 460 461 + Store 442(bv) 462 + Return + FunctionEnd +26(builtinFragProcFuncs(): 2 Function None 3 + 27: Label + 463(f16v): 152(ptr) Variable Function + 467: 466(ptr) AccessChain 465(if16v) 34 + 468: 28(float) Load 467 + 469: 28(float) DPdx 468 + 470: 35(ptr) AccessChain 463(f16v) 34 + Store 470 469 + 471: 466(ptr) AccessChain 465(if16v) 90 + 472: 28(float) Load 471 + 473: 28(float) DPdy 472 + 474: 35(ptr) AccessChain 463(f16v) 90 + Store 474 473 + 475: 151(fvec3) Load 465(if16v) + 476: 29(fvec2) VectorShuffle 475 475 0 1 + 477: 29(fvec2) DPdxFine 476 + 478: 151(fvec3) Load 463(f16v) + 479: 151(fvec3) VectorShuffle 478 477 3 4 2 + Store 463(f16v) 479 + 480: 151(fvec3) Load 465(if16v) + 481: 29(fvec2) VectorShuffle 480 480 0 1 + 482: 29(fvec2) DPdyFine 481 + 483: 151(fvec3) Load 463(f16v) + 484: 151(fvec3) VectorShuffle 483 482 3 4 2 + Store 463(f16v) 484 + 485: 151(fvec3) Load 465(if16v) + 486: 151(fvec3) DPdxCoarse 485 + Store 463(f16v) 486 + 487: 151(fvec3) Load 465(if16v) + 488: 151(fvec3) DPdxCoarse 487 + Store 463(f16v) 488 + 489: 466(ptr) AccessChain 465(if16v) 34 + 490: 28(float) Load 489 + 491: 28(float) Fwidth 490 + 492: 35(ptr) AccessChain 463(f16v) 34 + Store 492 491 + 493: 151(fvec3) Load 465(if16v) + 494: 29(fvec2) VectorShuffle 493 493 0 1 + 495: 29(fvec2) FwidthFine 494 + 496: 151(fvec3) Load 463(f16v) + 497: 151(fvec3) VectorShuffle 496 495 3 4 2 + Store 463(f16v) 497 + 498: 151(fvec3) Load 465(if16v) + 499: 151(fvec3) FwidthCoarse 498 + Store 463(f16v) 499 + 500: 466(ptr) AccessChain 465(if16v) 34 + 501: 28(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 500 + 502: 35(ptr) AccessChain 463(f16v) 34 + Store 502 501 + 504: 151(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 465(if16v) 503 + 505: 29(fvec2) VectorShuffle 504 504 0 1 + 506: 151(fvec3) Load 463(f16v) + 507: 151(fvec3) VectorShuffle 506 505 3 4 2 + Store 463(f16v) 507 + 510: 151(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 465(if16v) 509 + Store 463(f16v) 510 + Return + FunctionEnd diff --git a/Test/baseResults/spv.for-complex-condition.vert.out b/Test/baseResults/spv.for-complex-condition.vert.out index fab7f3d9..c5fe4389 100644 --- a/Test/baseResults/spv.for-complex-condition.vert.out +++ b/Test/baseResults/spv.for-complex-condition.vert.out @@ -18,7 +18,9 @@ Linked vertex stage: 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 346523cb..a804e1df 100755 --- a/Test/baseResults/spv.forwardFun.frag.out +++ b/Test/baseResults/spv.forwardFun.frag.out @@ -25,6 +25,26 @@ Linked fragment stage: 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.glsl.register.autoassign.frag.out b/Test/baseResults/spv.glsl.register.autoassign.frag.out new file mode 100644 index 00000000..a9c1bda9 --- /dev/null +++ b/Test/baseResults/spv.glsl.register.autoassign.frag.out @@ -0,0 +1,228 @@ +spv.glsl.register.autoassign.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 142 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 137 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + Name 4 "main" + Name 9 "Func1(" + Name 11 "Func2(" + Name 13 "Func2_unused(" + Name 17 "g_tTex1" + Name 21 "g_sSamp1" + Name 27 "g_tTex2" + Name 29 "g_sSamp2" + Name 39 "g_tTex3" + Name 46 "g_sSamp3" + Name 64 "g_tTex4" + Name 69 "g_sSamp4" + Name 84 "g_tTex5" + Name 86 "g_sSamp5" + Name 93 "MyStruct_t" + MemberName 93(MyStruct_t) 0 "a" + MemberName 93(MyStruct_t) 1 "b" + MemberName 93(MyStruct_t) 2 "c" + Name 95 "myblock" + MemberName 95(myblock) 0 "mystruct" + MemberName 95(myblock) 1 "myvec4_a" + MemberName 95(myblock) 2 "myvec4_b" + MemberName 95(myblock) 3 "myint4_a" + Name 97 "" + Name 119 "g_tTex_unused1" + Name 121 "g_sSamp_unused1" + Name 126 "g_tTex_unused2" + Name 128 "g_sSamp_unused2" + Name 137 "FragColor" + Name 141 "g_tTex_unused3" + Decorate 17(g_tTex1) DescriptorSet 0 + Decorate 17(g_tTex1) Binding 11 + Decorate 21(g_sSamp1) DescriptorSet 0 + Decorate 21(g_sSamp1) Binding 5 + Decorate 27(g_tTex2) DescriptorSet 0 + Decorate 27(g_tTex2) Binding 14 + Decorate 29(g_sSamp2) DescriptorSet 0 + Decorate 29(g_sSamp2) Binding 6 + Decorate 39(g_tTex3) DescriptorSet 0 + Decorate 39(g_tTex3) Binding 13 + Decorate 46(g_sSamp3) DescriptorSet 0 + Decorate 46(g_sSamp3) Binding 7 + Decorate 64(g_tTex4) DescriptorSet 0 + Decorate 64(g_tTex4) Binding 15 + Decorate 69(g_sSamp4) DescriptorSet 0 + Decorate 69(g_sSamp4) Binding 8 + Decorate 84(g_tTex5) DescriptorSet 0 + Decorate 84(g_tTex5) Binding 16 + Decorate 86(g_sSamp5) DescriptorSet 0 + Decorate 86(g_sSamp5) Binding 9 + MemberDecorate 93(MyStruct_t) 0 Offset 0 + MemberDecorate 93(MyStruct_t) 1 Offset 4 + MemberDecorate 93(MyStruct_t) 2 Offset 16 + MemberDecorate 95(myblock) 0 Offset 0 + MemberDecorate 95(myblock) 1 Offset 32 + MemberDecorate 95(myblock) 2 Offset 48 + MemberDecorate 95(myblock) 3 Offset 64 + Decorate 95(myblock) Block + Decorate 97 DescriptorSet 0 + Decorate 97 Binding 24 + Decorate 119(g_tTex_unused1) DescriptorSet 0 + Decorate 119(g_tTex_unused1) Binding 10 + Decorate 121(g_sSamp_unused1) DescriptorSet 0 + Decorate 126(g_tTex_unused2) DescriptorSet 0 + Decorate 126(g_tTex_unused2) Binding 12 + Decorate 128(g_sSamp_unused2) DescriptorSet 0 + Decorate 141(g_tTex_unused3) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 15: TypeImage 6(float) 1D sampled format:Unknown + 16: TypePointer UniformConstant 15 + 17(g_tTex1): 16(ptr) Variable UniformConstant + 19: TypeSampler + 20: TypePointer UniformConstant 19 + 21(g_sSamp1): 20(ptr) Variable UniformConstant + 23: TypeSampledImage 15 + 25: 6(float) Constant 1036831949 + 27(g_tTex2): 16(ptr) Variable UniformConstant + 29(g_sSamp2): 20(ptr) Variable UniformConstant + 32: 6(float) Constant 1045220557 + 35: TypeInt 32 0 + 36: 35(int) Constant 2 + 37: TypeArray 15 36 + 38: TypePointer UniformConstant 37 + 39(g_tTex3): 38(ptr) Variable UniformConstant + 40: TypeInt 32 1 + 41: 40(int) Constant 0 + 44: TypeArray 19 36 + 45: TypePointer UniformConstant 44 + 46(g_sSamp3): 45(ptr) Variable UniformConstant + 50: 6(float) Constant 1050253722 + 53: 40(int) Constant 1 + 61: 35(int) Constant 3 + 62: TypeArray 15 61 + 63: TypePointer UniformConstant 62 + 64(g_tTex4): 63(ptr) Variable UniformConstant + 67: TypeArray 19 61 + 68: TypePointer UniformConstant 67 + 69(g_sSamp4): 68(ptr) Variable UniformConstant + 73: 6(float) Constant 1053609165 + 76: 40(int) Constant 2 + 84(g_tTex5): 16(ptr) Variable UniformConstant + 86(g_sSamp5): 20(ptr) Variable UniformConstant + 89: 6(float) Constant 1056964608 + 92: TypeVector 6(float) 3 + 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) + 94: TypeVector 40(int) 4 + 95(myblock): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4) + 96: TypePointer Uniform 95(myblock) + 97: 96(ptr) Variable Uniform + 98: 35(int) Constant 1 + 99: TypePointer Uniform 6(float) +119(g_tTex_unused1): 16(ptr) Variable UniformConstant +121(g_sSamp_unused1): 20(ptr) Variable UniformConstant + 124: 6(float) Constant 1066192077 +126(g_tTex_unused2): 16(ptr) Variable UniformConstant +128(g_sSamp_unused2): 20(ptr) Variable UniformConstant + 131: 6(float) Constant 1067030938 + 136: TypePointer Output 7(fvec4) + 137(FragColor): 136(ptr) Variable Output +141(g_tTex_unused3): 16(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 138: 7(fvec4) FunctionCall 9(Func1() + 139: 7(fvec4) FunctionCall 11(Func2() + 140: 7(fvec4) FAdd 138 139 + Store 137(FragColor) 140 + Return + FunctionEnd + 9(Func1(): 7(fvec4) Function None 8 + 10: Label + 18: 15 Load 17(g_tTex1) + 22: 19 Load 21(g_sSamp1) + 24: 23 SampledImage 18 22 + 26: 7(fvec4) ImageSampleImplicitLod 24 25 + 28: 15 Load 27(g_tTex2) + 30: 19 Load 29(g_sSamp2) + 31: 23 SampledImage 28 30 + 33: 7(fvec4) ImageSampleImplicitLod 31 32 + 34: 7(fvec4) FAdd 26 33 + 42: 16(ptr) AccessChain 39(g_tTex3) 41 + 43: 15 Load 42 + 47: 20(ptr) AccessChain 46(g_sSamp3) 41 + 48: 19 Load 47 + 49: 23 SampledImage 43 48 + 51: 7(fvec4) ImageSampleImplicitLod 49 50 + 52: 7(fvec4) FAdd 34 51 + 54: 16(ptr) AccessChain 39(g_tTex3) 53 + 55: 15 Load 54 + 56: 20(ptr) AccessChain 46(g_sSamp3) 53 + 57: 19 Load 56 + 58: 23 SampledImage 55 57 + 59: 7(fvec4) ImageSampleImplicitLod 58 50 + 60: 7(fvec4) FAdd 52 59 + 65: 16(ptr) AccessChain 64(g_tTex4) 53 + 66: 15 Load 65 + 70: 20(ptr) AccessChain 69(g_sSamp4) 53 + 71: 19 Load 70 + 72: 23 SampledImage 66 71 + 74: 7(fvec4) ImageSampleImplicitLod 72 73 + 75: 7(fvec4) FAdd 60 74 + 77: 16(ptr) AccessChain 64(g_tTex4) 76 + 78: 15 Load 77 + 79: 20(ptr) AccessChain 69(g_sSamp4) 76 + 80: 19 Load 79 + 81: 23 SampledImage 78 80 + 82: 7(fvec4) ImageSampleImplicitLod 81 73 + 83: 7(fvec4) FAdd 75 82 + 85: 15 Load 84(g_tTex5) + 87: 19 Load 86(g_sSamp5) + 88: 23 SampledImage 85 87 + 90: 7(fvec4) ImageSampleImplicitLod 88 89 + 91: 7(fvec4) FAdd 83 90 + 100: 99(ptr) AccessChain 97 41 76 98 + 101: 6(float) Load 100 + 102: 7(fvec4) CompositeConstruct 101 101 101 101 + 103: 7(fvec4) FAdd 91 102 + ReturnValue 103 + FunctionEnd + 11(Func2(): 7(fvec4) Function None 8 + 12: Label + 106: 15 Load 17(g_tTex1) + 107: 19 Load 21(g_sSamp1) + 108: 23 SampledImage 106 107 + 109: 7(fvec4) ImageSampleImplicitLod 108 25 + 110: 16(ptr) AccessChain 39(g_tTex3) 53 + 111: 15 Load 110 + 112: 20(ptr) AccessChain 46(g_sSamp3) 53 + 113: 19 Load 112 + 114: 23 SampledImage 111 113 + 115: 7(fvec4) ImageSampleImplicitLod 114 50 + 116: 7(fvec4) FAdd 109 115 + ReturnValue 116 + FunctionEnd +13(Func2_unused(): 7(fvec4) Function None 8 + 14: Label + 120: 15 Load 119(g_tTex_unused1) + 122: 19 Load 121(g_sSamp_unused1) + 123: 23 SampledImage 120 122 + 125: 7(fvec4) ImageSampleImplicitLod 123 124 + 127: 15 Load 126(g_tTex_unused2) + 129: 19 Load 128(g_sSamp_unused2) + 130: 23 SampledImage 127 129 + 132: 7(fvec4) ImageSampleImplicitLod 130 131 + 133: 7(fvec4) FAdd 125 132 + ReturnValue 133 + FunctionEnd diff --git a/Test/baseResults/spv.glsl.register.noautoassign.frag.out b/Test/baseResults/spv.glsl.register.noautoassign.frag.out new file mode 100644 index 00000000..05bf3cf0 --- /dev/null +++ b/Test/baseResults/spv.glsl.register.noautoassign.frag.out @@ -0,0 +1,222 @@ +spv.glsl.register.noautoassign.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 142 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 137 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + Name 4 "main" + Name 9 "Func1(" + Name 11 "Func2(" + Name 13 "Func2_unused(" + Name 17 "g_tTex1" + Name 21 "g_sSamp1" + Name 27 "g_tTex2" + Name 29 "g_sSamp2" + Name 39 "g_tTex3" + Name 46 "g_sSamp3" + Name 64 "g_tTex4" + Name 69 "g_sSamp4" + Name 84 "g_tTex5" + Name 86 "g_sSamp5" + Name 93 "MyStruct_t" + MemberName 93(MyStruct_t) 0 "a" + MemberName 93(MyStruct_t) 1 "b" + MemberName 93(MyStruct_t) 2 "c" + Name 95 "myblock" + MemberName 95(myblock) 0 "mystruct" + MemberName 95(myblock) 1 "myvec4_a" + MemberName 95(myblock) 2 "myvec4_b" + MemberName 95(myblock) 3 "myint4_a" + Name 97 "" + Name 119 "g_tTex_unused1" + Name 121 "g_sSamp_unused1" + Name 126 "g_tTex_unused2" + Name 128 "g_sSamp_unused2" + Name 137 "FragColor" + Name 141 "g_tTex_unused3" + Decorate 17(g_tTex1) DescriptorSet 0 + Decorate 17(g_tTex1) Binding 11 + Decorate 21(g_sSamp1) DescriptorSet 0 + Decorate 21(g_sSamp1) Binding 5 + Decorate 27(g_tTex2) DescriptorSet 0 + Decorate 29(g_sSamp2) DescriptorSet 0 + Decorate 39(g_tTex3) DescriptorSet 0 + Decorate 39(g_tTex3) Binding 13 + Decorate 46(g_sSamp3) DescriptorSet 0 + Decorate 46(g_sSamp3) Binding 7 + Decorate 64(g_tTex4) DescriptorSet 0 + Decorate 69(g_sSamp4) DescriptorSet 0 + Decorate 84(g_tTex5) DescriptorSet 0 + Decorate 86(g_sSamp5) DescriptorSet 0 + MemberDecorate 93(MyStruct_t) 0 Offset 0 + MemberDecorate 93(MyStruct_t) 1 Offset 4 + MemberDecorate 93(MyStruct_t) 2 Offset 16 + MemberDecorate 95(myblock) 0 Offset 0 + MemberDecorate 95(myblock) 1 Offset 32 + MemberDecorate 95(myblock) 2 Offset 48 + MemberDecorate 95(myblock) 3 Offset 64 + Decorate 95(myblock) Block + Decorate 97 DescriptorSet 0 + Decorate 97 Binding 19 + Decorate 119(g_tTex_unused1) DescriptorSet 0 + Decorate 119(g_tTex_unused1) Binding 10 + Decorate 121(g_sSamp_unused1) DescriptorSet 0 + Decorate 126(g_tTex_unused2) DescriptorSet 0 + Decorate 126(g_tTex_unused2) Binding 12 + Decorate 128(g_sSamp_unused2) DescriptorSet 0 + Decorate 141(g_tTex_unused3) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 15: TypeImage 6(float) 1D sampled format:Unknown + 16: TypePointer UniformConstant 15 + 17(g_tTex1): 16(ptr) Variable UniformConstant + 19: TypeSampler + 20: TypePointer UniformConstant 19 + 21(g_sSamp1): 20(ptr) Variable UniformConstant + 23: TypeSampledImage 15 + 25: 6(float) Constant 1036831949 + 27(g_tTex2): 16(ptr) Variable UniformConstant + 29(g_sSamp2): 20(ptr) Variable UniformConstant + 32: 6(float) Constant 1045220557 + 35: TypeInt 32 0 + 36: 35(int) Constant 2 + 37: TypeArray 15 36 + 38: TypePointer UniformConstant 37 + 39(g_tTex3): 38(ptr) Variable UniformConstant + 40: TypeInt 32 1 + 41: 40(int) Constant 0 + 44: TypeArray 19 36 + 45: TypePointer UniformConstant 44 + 46(g_sSamp3): 45(ptr) Variable UniformConstant + 50: 6(float) Constant 1050253722 + 53: 40(int) Constant 1 + 61: 35(int) Constant 3 + 62: TypeArray 15 61 + 63: TypePointer UniformConstant 62 + 64(g_tTex4): 63(ptr) Variable UniformConstant + 67: TypeArray 19 61 + 68: TypePointer UniformConstant 67 + 69(g_sSamp4): 68(ptr) Variable UniformConstant + 73: 6(float) Constant 1053609165 + 76: 40(int) Constant 2 + 84(g_tTex5): 16(ptr) Variable UniformConstant + 86(g_sSamp5): 20(ptr) Variable UniformConstant + 89: 6(float) Constant 1056964608 + 92: TypeVector 6(float) 3 + 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) + 94: TypeVector 40(int) 4 + 95(myblock): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4) + 96: TypePointer Uniform 95(myblock) + 97: 96(ptr) Variable Uniform + 98: 35(int) Constant 1 + 99: TypePointer Uniform 6(float) +119(g_tTex_unused1): 16(ptr) Variable UniformConstant +121(g_sSamp_unused1): 20(ptr) Variable UniformConstant + 124: 6(float) Constant 1066192077 +126(g_tTex_unused2): 16(ptr) Variable UniformConstant +128(g_sSamp_unused2): 20(ptr) Variable UniformConstant + 131: 6(float) Constant 1067030938 + 136: TypePointer Output 7(fvec4) + 137(FragColor): 136(ptr) Variable Output +141(g_tTex_unused3): 16(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 138: 7(fvec4) FunctionCall 9(Func1() + 139: 7(fvec4) FunctionCall 11(Func2() + 140: 7(fvec4) FAdd 138 139 + Store 137(FragColor) 140 + Return + FunctionEnd + 9(Func1(): 7(fvec4) Function None 8 + 10: Label + 18: 15 Load 17(g_tTex1) + 22: 19 Load 21(g_sSamp1) + 24: 23 SampledImage 18 22 + 26: 7(fvec4) ImageSampleImplicitLod 24 25 + 28: 15 Load 27(g_tTex2) + 30: 19 Load 29(g_sSamp2) + 31: 23 SampledImage 28 30 + 33: 7(fvec4) ImageSampleImplicitLod 31 32 + 34: 7(fvec4) FAdd 26 33 + 42: 16(ptr) AccessChain 39(g_tTex3) 41 + 43: 15 Load 42 + 47: 20(ptr) AccessChain 46(g_sSamp3) 41 + 48: 19 Load 47 + 49: 23 SampledImage 43 48 + 51: 7(fvec4) ImageSampleImplicitLod 49 50 + 52: 7(fvec4) FAdd 34 51 + 54: 16(ptr) AccessChain 39(g_tTex3) 53 + 55: 15 Load 54 + 56: 20(ptr) AccessChain 46(g_sSamp3) 53 + 57: 19 Load 56 + 58: 23 SampledImage 55 57 + 59: 7(fvec4) ImageSampleImplicitLod 58 50 + 60: 7(fvec4) FAdd 52 59 + 65: 16(ptr) AccessChain 64(g_tTex4) 53 + 66: 15 Load 65 + 70: 20(ptr) AccessChain 69(g_sSamp4) 53 + 71: 19 Load 70 + 72: 23 SampledImage 66 71 + 74: 7(fvec4) ImageSampleImplicitLod 72 73 + 75: 7(fvec4) FAdd 60 74 + 77: 16(ptr) AccessChain 64(g_tTex4) 76 + 78: 15 Load 77 + 79: 20(ptr) AccessChain 69(g_sSamp4) 76 + 80: 19 Load 79 + 81: 23 SampledImage 78 80 + 82: 7(fvec4) ImageSampleImplicitLod 81 73 + 83: 7(fvec4) FAdd 75 82 + 85: 15 Load 84(g_tTex5) + 87: 19 Load 86(g_sSamp5) + 88: 23 SampledImage 85 87 + 90: 7(fvec4) ImageSampleImplicitLod 88 89 + 91: 7(fvec4) FAdd 83 90 + 100: 99(ptr) AccessChain 97 41 76 98 + 101: 6(float) Load 100 + 102: 7(fvec4) CompositeConstruct 101 101 101 101 + 103: 7(fvec4) FAdd 91 102 + ReturnValue 103 + FunctionEnd + 11(Func2(): 7(fvec4) Function None 8 + 12: Label + 106: 15 Load 17(g_tTex1) + 107: 19 Load 21(g_sSamp1) + 108: 23 SampledImage 106 107 + 109: 7(fvec4) ImageSampleImplicitLod 108 25 + 110: 16(ptr) AccessChain 39(g_tTex3) 53 + 111: 15 Load 110 + 112: 20(ptr) AccessChain 46(g_sSamp3) 53 + 113: 19 Load 112 + 114: 23 SampledImage 111 113 + 115: 7(fvec4) ImageSampleImplicitLod 114 50 + 116: 7(fvec4) FAdd 109 115 + ReturnValue 116 + FunctionEnd +13(Func2_unused(): 7(fvec4) Function None 8 + 14: Label + 120: 15 Load 119(g_tTex_unused1) + 122: 19 Load 121(g_sSamp_unused1) + 123: 23 SampledImage 120 122 + 125: 7(fvec4) ImageSampleImplicitLod 123 124 + 127: 15 Load 126(g_tTex_unused2) + 129: 19 Load 128(g_sSamp_unused2) + 130: 23 SampledImage 127 129 + 132: 7(fvec4) ImageSampleImplicitLod 130 131 + 133: 7(fvec4) FAdd 125 132 + ReturnValue 133 + FunctionEnd diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out index fe450137..acfee730 100644 --- a/Test/baseResults/spv.int64.frag.out +++ b/Test/baseResults/spv.int64.frag.out @@ -5,10 +5,9 @@ Warning, version 450 is not yet complete; most version-specific features are pre 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 @@ Missing functionality: shader int64 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 d778fbb4..fd785ab4 100644 --- a/Test/baseResults/spv.layoutNested.vert.out +++ b/Test/baseResults/spv.layoutNested.vert.out @@ -91,13 +91,17 @@ Linked vertex stage: 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 @@ Linked vertex stage: 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 @@ Linked vertex stage: 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 00000000..28402ce2 --- /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 00000000..dcbcfa00 --- /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.offsets.frag.out b/Test/baseResults/spv.offsets.frag.out new file mode 100755 index 00000000..b0091eaa --- /dev/null +++ b/Test/baseResults/spv.offsets.frag.out @@ -0,0 +1,59 @@ +spv.offsets.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 15 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + Name 4 "main" + Name 7 "n1" + MemberName 7(n1) 0 "a" + MemberName 7(n1) 1 "b" + MemberName 7(n1) 2 "c" + MemberName 7(n1) 3 "d" + Name 9 "i1" + Name 12 "n2" + MemberName 12(n2) 0 "e" + MemberName 12(n2) 1 "f" + MemberName 12(n2) 2 "g" + MemberName 12(n2) 3 "h" + Name 14 "i2" + MemberDecorate 7(n1) 0 Offset 8 + MemberDecorate 7(n1) 1 Offset 4 + MemberDecorate 7(n1) 2 Offset 0 + MemberDecorate 7(n1) 3 Offset 12 + Decorate 7(n1) Block + Decorate 9(i1) DescriptorSet 0 + Decorate 9(i1) Binding 0 + MemberDecorate 12(n2) 0 Offset 32 + MemberDecorate 12(n2) 1 Offset 48 + MemberDecorate 12(n2) 2 Offset 16 + MemberDecorate 12(n2) 3 Offset 0 + Decorate 12(n2) BufferBlock + Decorate 14(i2) DescriptorSet 0 + Decorate 14(i2) Binding 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7(n1): TypeStruct 6(int) 6(int) 6(int) 6(int) + 8: TypePointer Uniform 7(n1) + 9(i1): 8(ptr) Variable Uniform + 10: TypeFloat 32 + 11: TypeVector 10(float) 3 + 12(n2): TypeStruct 11(fvec3) 11(fvec3) 11(fvec3) 11(fvec3) + 13: TypePointer Uniform 12(n2) + 14(i2): 13(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out index 6d2b2b97..2236c66a 100755 --- a/Test/baseResults/spv.queryL.frag.out +++ b/Test/baseResults/spv.queryL.frag.out @@ -7,7 +7,7 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 237 +// Id's are bound by 224 Capability Shader Capability SampledRect @@ -24,48 +24,48 @@ Linked fragment stage: Name 9 "lod" Name 13 "samp1D" Name 16 "pf" - Name 24 "isamp2D" - Name 26 "pf2" - Name 36 "usamp3D" - Name 40 "pf3" - Name 49 "sampCube" - Name 59 "isamp1DA" - Name 69 "usamp2DA" - Name 79 "isampCubeA" - Name 89 "samp1Ds" - Name 99 "samp2Ds" - Name 109 "sampCubes" - Name 119 "samp1DAs" - Name 129 "samp2DAs" - Name 139 "sampCubeAs" - Name 147 "levels" - Name 154 "usamp2D" - Name 163 "isamp3D" - Name 172 "isampCube" - Name 186 "samp2DA" - Name 195 "usampCubeA" - Name 232 "sampBuf" - Name 236 "sampRect" + Name 23 "isamp2D" + Name 25 "pf2" + Name 34 "usamp3D" + Name 38 "pf3" + Name 46 "sampCube" + Name 55 "isamp1DA" + Name 64 "usamp2DA" + Name 73 "isampCubeA" + Name 82 "samp1Ds" + Name 91 "samp2Ds" + Name 100 "sampCubes" + Name 109 "samp1DAs" + Name 118 "samp2DAs" + Name 127 "sampCubeAs" + Name 134 "levels" + Name 141 "usamp2D" + Name 150 "isamp3D" + Name 159 "isampCube" + Name 173 "samp2DA" + Name 182 "usampCubeA" + Name 219 "sampBuf" + Name 223 "sampRect" Decorate 13(samp1D) DescriptorSet 0 - Decorate 24(isamp2D) DescriptorSet 0 - Decorate 36(usamp3D) DescriptorSet 0 - Decorate 49(sampCube) DescriptorSet 0 - Decorate 59(isamp1DA) DescriptorSet 0 - Decorate 69(usamp2DA) DescriptorSet 0 - Decorate 79(isampCubeA) DescriptorSet 0 - Decorate 89(samp1Ds) DescriptorSet 0 - Decorate 99(samp2Ds) DescriptorSet 0 - Decorate 109(sampCubes) DescriptorSet 0 - Decorate 119(samp1DAs) DescriptorSet 0 - Decorate 129(samp2DAs) DescriptorSet 0 - Decorate 139(sampCubeAs) DescriptorSet 0 - Decorate 154(usamp2D) DescriptorSet 0 - Decorate 163(isamp3D) DescriptorSet 0 - Decorate 172(isampCube) DescriptorSet 0 - Decorate 186(samp2DA) DescriptorSet 0 - Decorate 195(usampCubeA) DescriptorSet 0 - Decorate 232(sampBuf) DescriptorSet 0 - Decorate 236(sampRect) DescriptorSet 0 + Decorate 23(isamp2D) DescriptorSet 0 + Decorate 34(usamp3D) DescriptorSet 0 + Decorate 46(sampCube) DescriptorSet 0 + Decorate 55(isamp1DA) DescriptorSet 0 + Decorate 64(usamp2DA) DescriptorSet 0 + Decorate 73(isampCubeA) DescriptorSet 0 + Decorate 82(samp1Ds) DescriptorSet 0 + Decorate 91(samp2Ds) DescriptorSet 0 + Decorate 100(sampCubes) DescriptorSet 0 + Decorate 109(samp1DAs) DescriptorSet 0 + Decorate 118(samp2DAs) DescriptorSet 0 + Decorate 127(sampCubeAs) DescriptorSet 0 + Decorate 141(usamp2D) DescriptorSet 0 + Decorate 150(isamp3D) DescriptorSet 0 + Decorate 159(isampCube) DescriptorSet 0 + Decorate 173(samp2DA) DescriptorSet 0 + Decorate 182(usampCubeA) DescriptorSet 0 + Decorate 219(sampBuf) DescriptorSet 0 + Decorate 223(sampRect) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -76,256 +76,243 @@ Linked fragment stage: 12: TypePointer UniformConstant 11 13(samp1D): 12(ptr) Variable UniformConstant 15: TypePointer Function 6(float) - 20: TypeInt 32 1 - 21: TypeImage 20(int) 2D sampled format:Unknown - 22: TypeSampledImage 21 - 23: TypePointer UniformConstant 22 - 24(isamp2D): 23(ptr) Variable UniformConstant - 32: TypeInt 32 0 - 33: TypeImage 32(int) 3D sampled format:Unknown - 34: TypeSampledImage 33 - 35: TypePointer UniformConstant 34 - 36(usamp3D): 35(ptr) Variable UniformConstant - 38: TypeVector 6(float) 3 - 39: TypePointer Function 38(fvec3) - 46: TypeImage 6(float) Cube sampled format:Unknown - 47: TypeSampledImage 46 - 48: TypePointer UniformConstant 47 - 49(sampCube): 48(ptr) Variable UniformConstant - 56: TypeImage 20(int) 1D array sampled format:Unknown - 57: TypeSampledImage 56 - 58: TypePointer UniformConstant 57 - 59(isamp1DA): 58(ptr) Variable UniformConstant - 66: TypeImage 32(int) 2D array sampled format:Unknown - 67: TypeSampledImage 66 - 68: TypePointer UniformConstant 67 - 69(usamp2DA): 68(ptr) Variable UniformConstant - 76: TypeImage 20(int) Cube array sampled format:Unknown - 77: TypeSampledImage 76 - 78: TypePointer UniformConstant 77 - 79(isampCubeA): 78(ptr) Variable UniformConstant - 86: TypeImage 6(float) 1D depth sampled format:Unknown - 87: TypeSampledImage 86 - 88: TypePointer UniformConstant 87 - 89(samp1Ds): 88(ptr) Variable UniformConstant - 96: TypeImage 6(float) 2D depth sampled format:Unknown - 97: TypeSampledImage 96 - 98: TypePointer UniformConstant 97 - 99(samp2Ds): 98(ptr) Variable UniformConstant - 106: TypeImage 6(float) Cube depth sampled format:Unknown + 19: TypeInt 32 1 + 20: TypeImage 19(int) 2D sampled format:Unknown + 21: TypeSampledImage 20 + 22: TypePointer UniformConstant 21 + 23(isamp2D): 22(ptr) Variable UniformConstant + 30: TypeInt 32 0 + 31: TypeImage 30(int) 3D sampled format:Unknown + 32: TypeSampledImage 31 + 33: TypePointer UniformConstant 32 + 34(usamp3D): 33(ptr) Variable UniformConstant + 36: TypeVector 6(float) 3 + 37: TypePointer Function 36(fvec3) + 43: TypeImage 6(float) Cube sampled format:Unknown + 44: TypeSampledImage 43 + 45: TypePointer UniformConstant 44 + 46(sampCube): 45(ptr) Variable UniformConstant + 52: TypeImage 19(int) 1D array sampled format:Unknown + 53: TypeSampledImage 52 + 54: TypePointer UniformConstant 53 + 55(isamp1DA): 54(ptr) Variable UniformConstant + 61: TypeImage 30(int) 2D array sampled format:Unknown + 62: TypeSampledImage 61 + 63: TypePointer UniformConstant 62 + 64(usamp2DA): 63(ptr) Variable UniformConstant + 70: TypeImage 19(int) Cube array sampled format:Unknown + 71: TypeSampledImage 70 + 72: TypePointer UniformConstant 71 + 73(isampCubeA): 72(ptr) Variable UniformConstant + 79: TypeImage 6(float) 1D depth sampled format:Unknown + 80: TypeSampledImage 79 + 81: TypePointer UniformConstant 80 + 82(samp1Ds): 81(ptr) Variable UniformConstant + 88: TypeImage 6(float) 2D depth sampled format:Unknown + 89: TypeSampledImage 88 + 90: TypePointer UniformConstant 89 + 91(samp2Ds): 90(ptr) Variable UniformConstant + 97: TypeImage 6(float) Cube depth sampled format:Unknown + 98: TypeSampledImage 97 + 99: TypePointer UniformConstant 98 + 100(sampCubes): 99(ptr) Variable UniformConstant + 106: TypeImage 6(float) 1D depth array sampled format:Unknown 107: TypeSampledImage 106 108: TypePointer UniformConstant 107 - 109(sampCubes): 108(ptr) Variable UniformConstant - 116: TypeImage 6(float) 1D depth array sampled format:Unknown - 117: TypeSampledImage 116 - 118: TypePointer UniformConstant 117 - 119(samp1DAs): 118(ptr) Variable UniformConstant - 126: TypeImage 6(float) 2D depth array sampled format:Unknown - 127: TypeSampledImage 126 - 128: TypePointer UniformConstant 127 - 129(samp2DAs): 128(ptr) Variable UniformConstant - 136: TypeImage 6(float) Cube depth array sampled format:Unknown - 137: TypeSampledImage 136 - 138: TypePointer UniformConstant 137 - 139(sampCubeAs): 138(ptr) Variable UniformConstant - 146: TypePointer Function 20(int) - 151: TypeImage 32(int) 2D sampled format:Unknown - 152: TypeSampledImage 151 - 153: TypePointer UniformConstant 152 - 154(usamp2D): 153(ptr) Variable UniformConstant - 160: TypeImage 20(int) 3D sampled format:Unknown - 161: TypeSampledImage 160 - 162: TypePointer UniformConstant 161 - 163(isamp3D): 162(ptr) Variable UniformConstant - 169: TypeImage 20(int) Cube sampled format:Unknown - 170: TypeSampledImage 169 - 171: TypePointer UniformConstant 170 - 172(isampCube): 171(ptr) Variable UniformConstant - 183: TypeImage 6(float) 2D array sampled format:Unknown - 184: TypeSampledImage 183 - 185: TypePointer UniformConstant 184 - 186(samp2DA): 185(ptr) Variable UniformConstant - 192: TypeImage 32(int) Cube array sampled format:Unknown - 193: TypeSampledImage 192 - 194: TypePointer UniformConstant 193 - 195(usampCubeA): 194(ptr) Variable UniformConstant - 229: TypeImage 6(float) Buffer sampled format:Unknown - 230: TypeSampledImage 229 - 231: TypePointer UniformConstant 230 - 232(sampBuf): 231(ptr) Variable UniformConstant - 233: TypeImage 6(float) Rect sampled format:Unknown - 234: TypeSampledImage 233 - 235: TypePointer UniformConstant 234 - 236(sampRect): 235(ptr) Variable UniformConstant + 109(samp1DAs): 108(ptr) Variable UniformConstant + 115: TypeImage 6(float) 2D depth array sampled format:Unknown + 116: TypeSampledImage 115 + 117: TypePointer UniformConstant 116 + 118(samp2DAs): 117(ptr) Variable UniformConstant + 124: TypeImage 6(float) Cube depth array sampled format:Unknown + 125: TypeSampledImage 124 + 126: TypePointer UniformConstant 125 + 127(sampCubeAs): 126(ptr) Variable UniformConstant + 133: TypePointer Function 19(int) + 138: TypeImage 30(int) 2D sampled format:Unknown + 139: TypeSampledImage 138 + 140: TypePointer UniformConstant 139 + 141(usamp2D): 140(ptr) Variable UniformConstant + 147: TypeImage 19(int) 3D sampled format:Unknown + 148: TypeSampledImage 147 + 149: TypePointer UniformConstant 148 + 150(isamp3D): 149(ptr) Variable UniformConstant + 156: TypeImage 19(int) Cube sampled format:Unknown + 157: TypeSampledImage 156 + 158: TypePointer UniformConstant 157 + 159(isampCube): 158(ptr) Variable UniformConstant + 170: TypeImage 6(float) 2D array sampled format:Unknown + 171: TypeSampledImage 170 + 172: TypePointer UniformConstant 171 + 173(samp2DA): 172(ptr) Variable UniformConstant + 179: TypeImage 30(int) Cube array sampled format:Unknown + 180: TypeSampledImage 179 + 181: TypePointer UniformConstant 180 + 182(usampCubeA): 181(ptr) Variable UniformConstant + 216: TypeImage 6(float) Buffer sampled format:Unknown + 217: TypeSampledImage 216 + 218: TypePointer UniformConstant 217 + 219(sampBuf): 218(ptr) Variable UniformConstant + 220: TypeImage 6(float) Rect sampled format:Unknown + 221: TypeSampledImage 220 + 222: TypePointer UniformConstant 221 + 223(sampRect): 222(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(lod): 8(ptr) Variable Function 16(pf): 15(ptr) Variable Function - 26(pf2): 8(ptr) Variable Function - 40(pf3): 39(ptr) Variable Function - 147(levels): 146(ptr) Variable Function + 25(pf2): 8(ptr) Variable Function + 38(pf3): 37(ptr) Variable Function + 134(levels): 133(ptr) Variable Function 14: 11 Load 13(samp1D) 17: 6(float) Load 16(pf) - 18: 10 Image 14 - 19: 7(fvec2) ImageQueryLod 18 17 - Store 9(lod) 19 - 25: 22 Load 24(isamp2D) - 27: 7(fvec2) Load 26(pf2) - 28: 21 Image 25 - 29: 7(fvec2) ImageQueryLod 28 27 - 30: 7(fvec2) Load 9(lod) - 31: 7(fvec2) FAdd 30 29 - Store 9(lod) 31 - 37: 34 Load 36(usamp3D) - 41: 38(fvec3) Load 40(pf3) - 42: 33 Image 37 - 43: 7(fvec2) ImageQueryLod 42 41 - 44: 7(fvec2) Load 9(lod) - 45: 7(fvec2) FAdd 44 43 - Store 9(lod) 45 - 50: 47 Load 49(sampCube) - 51: 38(fvec3) Load 40(pf3) - 52: 46 Image 50 - 53: 7(fvec2) ImageQueryLod 52 51 - 54: 7(fvec2) Load 9(lod) - 55: 7(fvec2) FAdd 54 53 - Store 9(lod) 55 - 60: 57 Load 59(isamp1DA) - 61: 6(float) Load 16(pf) - 62: 56 Image 60 - 63: 7(fvec2) ImageQueryLod 62 61 - 64: 7(fvec2) Load 9(lod) - 65: 7(fvec2) FAdd 64 63 - Store 9(lod) 65 - 70: 67 Load 69(usamp2DA) - 71: 7(fvec2) Load 26(pf2) - 72: 66 Image 70 - 73: 7(fvec2) ImageQueryLod 72 71 - 74: 7(fvec2) Load 9(lod) - 75: 7(fvec2) FAdd 74 73 - Store 9(lod) 75 - 80: 77 Load 79(isampCubeA) - 81: 38(fvec3) Load 40(pf3) - 82: 76 Image 80 - 83: 7(fvec2) ImageQueryLod 82 81 - 84: 7(fvec2) Load 9(lod) - 85: 7(fvec2) FAdd 84 83 - Store 9(lod) 85 - 90: 87 Load 89(samp1Ds) - 91: 6(float) Load 16(pf) - 92: 86 Image 90 - 93: 7(fvec2) ImageQueryLod 92 91 - 94: 7(fvec2) Load 9(lod) - 95: 7(fvec2) FAdd 94 93 - Store 9(lod) 95 - 100: 97 Load 99(samp2Ds) - 101: 7(fvec2) Load 26(pf2) - 102: 96 Image 100 - 103: 7(fvec2) ImageQueryLod 102 101 + 18: 7(fvec2) ImageQueryLod 14 17 + Store 9(lod) 18 + 24: 21 Load 23(isamp2D) + 26: 7(fvec2) Load 25(pf2) + 27: 7(fvec2) ImageQueryLod 24 26 + 28: 7(fvec2) Load 9(lod) + 29: 7(fvec2) FAdd 28 27 + Store 9(lod) 29 + 35: 32 Load 34(usamp3D) + 39: 36(fvec3) Load 38(pf3) + 40: 7(fvec2) ImageQueryLod 35 39 + 41: 7(fvec2) Load 9(lod) + 42: 7(fvec2) FAdd 41 40 + Store 9(lod) 42 + 47: 44 Load 46(sampCube) + 48: 36(fvec3) Load 38(pf3) + 49: 7(fvec2) ImageQueryLod 47 48 + 50: 7(fvec2) Load 9(lod) + 51: 7(fvec2) FAdd 50 49 + Store 9(lod) 51 + 56: 53 Load 55(isamp1DA) + 57: 6(float) Load 16(pf) + 58: 7(fvec2) ImageQueryLod 56 57 + 59: 7(fvec2) Load 9(lod) + 60: 7(fvec2) FAdd 59 58 + Store 9(lod) 60 + 65: 62 Load 64(usamp2DA) + 66: 7(fvec2) Load 25(pf2) + 67: 7(fvec2) ImageQueryLod 65 66 + 68: 7(fvec2) Load 9(lod) + 69: 7(fvec2) FAdd 68 67 + Store 9(lod) 69 + 74: 71 Load 73(isampCubeA) + 75: 36(fvec3) Load 38(pf3) + 76: 7(fvec2) ImageQueryLod 74 75 + 77: 7(fvec2) Load 9(lod) + 78: 7(fvec2) FAdd 77 76 + Store 9(lod) 78 + 83: 80 Load 82(samp1Ds) + 84: 6(float) Load 16(pf) + 85: 7(fvec2) ImageQueryLod 83 84 + 86: 7(fvec2) Load 9(lod) + 87: 7(fvec2) FAdd 86 85 + Store 9(lod) 87 + 92: 89 Load 91(samp2Ds) + 93: 7(fvec2) Load 25(pf2) + 94: 7(fvec2) ImageQueryLod 92 93 + 95: 7(fvec2) Load 9(lod) + 96: 7(fvec2) FAdd 95 94 + Store 9(lod) 96 + 101: 98 Load 100(sampCubes) + 102: 36(fvec3) Load 38(pf3) + 103: 7(fvec2) ImageQueryLod 101 102 104: 7(fvec2) Load 9(lod) 105: 7(fvec2) FAdd 104 103 Store 9(lod) 105 - 110: 107 Load 109(sampCubes) - 111: 38(fvec3) Load 40(pf3) - 112: 106 Image 110 - 113: 7(fvec2) ImageQueryLod 112 111 - 114: 7(fvec2) Load 9(lod) - 115: 7(fvec2) FAdd 114 113 - Store 9(lod) 115 - 120: 117 Load 119(samp1DAs) - 121: 6(float) Load 16(pf) - 122: 116 Image 120 - 123: 7(fvec2) ImageQueryLod 122 121 - 124: 7(fvec2) Load 9(lod) - 125: 7(fvec2) FAdd 124 123 - Store 9(lod) 125 - 130: 127 Load 129(samp2DAs) - 131: 7(fvec2) Load 26(pf2) - 132: 126 Image 130 - 133: 7(fvec2) ImageQueryLod 132 131 - 134: 7(fvec2) Load 9(lod) - 135: 7(fvec2) FAdd 134 133 - Store 9(lod) 135 - 140: 137 Load 139(sampCubeAs) - 141: 38(fvec3) Load 40(pf3) - 142: 136 Image 140 - 143: 7(fvec2) ImageQueryLod 142 141 - 144: 7(fvec2) Load 9(lod) - 145: 7(fvec2) FAdd 144 143 - Store 9(lod) 145 - 148: 11 Load 13(samp1D) - 149: 10 Image 148 - 150: 20(int) ImageQueryLevels 149 - Store 147(levels) 150 - 155: 152 Load 154(usamp2D) - 156: 151 Image 155 - 157: 20(int) ImageQueryLevels 156 - 158: 20(int) Load 147(levels) - 159: 20(int) IAdd 158 157 - Store 147(levels) 159 - 164: 161 Load 163(isamp3D) - 165: 160 Image 164 - 166: 20(int) ImageQueryLevels 165 - 167: 20(int) Load 147(levels) - 168: 20(int) IAdd 167 166 - Store 147(levels) 168 - 173: 170 Load 172(isampCube) - 174: 169 Image 173 - 175: 20(int) ImageQueryLevels 174 - 176: 20(int) Load 147(levels) - 177: 20(int) IAdd 176 175 - Store 147(levels) 177 - 178: 57 Load 59(isamp1DA) - 179: 56 Image 178 - 180: 20(int) ImageQueryLevels 179 - 181: 20(int) Load 147(levels) - 182: 20(int) IAdd 181 180 - Store 147(levels) 182 - 187: 184 Load 186(samp2DA) - 188: 183 Image 187 - 189: 20(int) ImageQueryLevels 188 - 190: 20(int) Load 147(levels) - 191: 20(int) IAdd 190 189 - Store 147(levels) 191 - 196: 193 Load 195(usampCubeA) - 197: 192 Image 196 - 198: 20(int) ImageQueryLevels 197 - 199: 20(int) Load 147(levels) - 200: 20(int) IAdd 199 198 - Store 147(levels) 200 - 201: 87 Load 89(samp1Ds) - 202: 86 Image 201 - 203: 20(int) ImageQueryLevels 202 - Store 147(levels) 203 - 204: 97 Load 99(samp2Ds) - 205: 96 Image 204 - 206: 20(int) ImageQueryLevels 205 - 207: 20(int) Load 147(levels) - 208: 20(int) IAdd 207 206 - Store 147(levels) 208 - 209: 107 Load 109(sampCubes) - 210: 106 Image 209 - 211: 20(int) ImageQueryLevels 210 - 212: 20(int) Load 147(levels) - 213: 20(int) IAdd 212 211 - Store 147(levels) 213 - 214: 117 Load 119(samp1DAs) - 215: 116 Image 214 - 216: 20(int) ImageQueryLevels 215 - 217: 20(int) Load 147(levels) - 218: 20(int) IAdd 217 216 - Store 147(levels) 218 - 219: 127 Load 129(samp2DAs) - 220: 126 Image 219 - 221: 20(int) ImageQueryLevels 220 - 222: 20(int) Load 147(levels) - 223: 20(int) IAdd 222 221 - Store 147(levels) 223 - 224: 137 Load 139(sampCubeAs) - 225: 136 Image 224 - 226: 20(int) ImageQueryLevels 225 - 227: 20(int) Load 147(levels) - 228: 20(int) IAdd 227 226 - Store 147(levels) 228 + 110: 107 Load 109(samp1DAs) + 111: 6(float) Load 16(pf) + 112: 7(fvec2) ImageQueryLod 110 111 + 113: 7(fvec2) Load 9(lod) + 114: 7(fvec2) FAdd 113 112 + Store 9(lod) 114 + 119: 116 Load 118(samp2DAs) + 120: 7(fvec2) Load 25(pf2) + 121: 7(fvec2) ImageQueryLod 119 120 + 122: 7(fvec2) Load 9(lod) + 123: 7(fvec2) FAdd 122 121 + Store 9(lod) 123 + 128: 125 Load 127(sampCubeAs) + 129: 36(fvec3) Load 38(pf3) + 130: 7(fvec2) ImageQueryLod 128 129 + 131: 7(fvec2) Load 9(lod) + 132: 7(fvec2) FAdd 131 130 + Store 9(lod) 132 + 135: 11 Load 13(samp1D) + 136: 10 Image 135 + 137: 19(int) ImageQueryLevels 136 + Store 134(levels) 137 + 142: 139 Load 141(usamp2D) + 143: 138 Image 142 + 144: 19(int) ImageQueryLevels 143 + 145: 19(int) Load 134(levels) + 146: 19(int) IAdd 145 144 + Store 134(levels) 146 + 151: 148 Load 150(isamp3D) + 152: 147 Image 151 + 153: 19(int) ImageQueryLevels 152 + 154: 19(int) Load 134(levels) + 155: 19(int) IAdd 154 153 + Store 134(levels) 155 + 160: 157 Load 159(isampCube) + 161: 156 Image 160 + 162: 19(int) ImageQueryLevels 161 + 163: 19(int) Load 134(levels) + 164: 19(int) IAdd 163 162 + Store 134(levels) 164 + 165: 53 Load 55(isamp1DA) + 166: 52 Image 165 + 167: 19(int) ImageQueryLevels 166 + 168: 19(int) Load 134(levels) + 169: 19(int) IAdd 168 167 + Store 134(levels) 169 + 174: 171 Load 173(samp2DA) + 175: 170 Image 174 + 176: 19(int) ImageQueryLevels 175 + 177: 19(int) Load 134(levels) + 178: 19(int) IAdd 177 176 + Store 134(levels) 178 + 183: 180 Load 182(usampCubeA) + 184: 179 Image 183 + 185: 19(int) ImageQueryLevels 184 + 186: 19(int) Load 134(levels) + 187: 19(int) IAdd 186 185 + Store 134(levels) 187 + 188: 80 Load 82(samp1Ds) + 189: 79 Image 188 + 190: 19(int) ImageQueryLevels 189 + Store 134(levels) 190 + 191: 89 Load 91(samp2Ds) + 192: 88 Image 191 + 193: 19(int) ImageQueryLevels 192 + 194: 19(int) Load 134(levels) + 195: 19(int) IAdd 194 193 + Store 134(levels) 195 + 196: 98 Load 100(sampCubes) + 197: 97 Image 196 + 198: 19(int) ImageQueryLevels 197 + 199: 19(int) Load 134(levels) + 200: 19(int) IAdd 199 198 + Store 134(levels) 200 + 201: 107 Load 109(samp1DAs) + 202: 106 Image 201 + 203: 19(int) ImageQueryLevels 202 + 204: 19(int) Load 134(levels) + 205: 19(int) IAdd 204 203 + Store 134(levels) 205 + 206: 116 Load 118(samp2DAs) + 207: 115 Image 206 + 208: 19(int) ImageQueryLevels 207 + 209: 19(int) Load 134(levels) + 210: 19(int) IAdd 209 208 + Store 134(levels) 210 + 211: 125 Load 127(sampCubeAs) + 212: 124 Image 211 + 213: 19(int) ImageQueryLevels 212 + 214: 19(int) Load 134(levels) + 215: 19(int) IAdd 214 213 + Store 134(levels) 215 Return FunctionEnd diff --git a/Test/baseResults/spv.register.autoassign-2.frag.out b/Test/baseResults/spv.register.autoassign-2.frag.out new file mode 100644 index 00000000..038c7f0e --- /dev/null +++ b/Test/baseResults/spv.register.autoassign-2.frag.out @@ -0,0 +1,57 @@ +spv.register.autoassign-2.frag + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 30 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 + ExecutionMode 4 OriginUpperLeft + Name 4 "main" + Name 9 "Color" + Name 12 "g_tScene[0]" + Name 16 "g_tSamp" + Name 24 "g_tScene[1]" + Decorate 9(Color) Location 0 + Decorate 12(g_tScene[0]) DescriptorSet 0 + Decorate 12(g_tScene[0]) Binding 10 + Decorate 16(g_tSamp) DescriptorSet 0 + Decorate 16(g_tSamp) Binding 5 + Decorate 24(g_tScene[1]) DescriptorSet 0 + Decorate 24(g_tScene[1]) Binding 11 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(Color): 8(ptr) Variable Output + 10: TypeImage 6(float) 2D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(g_tScene[0]): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(g_tSamp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeVector 6(float) 2 + 21: 6(float) Constant 1050253722 + 22: 20(fvec2) ConstantComposite 21 21 + 24(g_tScene[1]): 11(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 13: 10 Load 12(g_tScene[0]) + 17: 14 Load 16(g_tSamp) + 19: 18 SampledImage 13 17 + 23: 7(fvec4) ImageSampleImplicitLod 19 22 + 25: 10 Load 24(g_tScene[1]) + 26: 14 Load 16(g_tSamp) + 27: 18 SampledImage 25 26 + 28: 7(fvec4) ImageSampleImplicitLod 27 22 + 29: 7(fvec4) FAdd 23 28 + Store 9(Color) 29 + Return + FunctionEnd diff --git a/Test/baseResults/spv.register.autoassign.frag.out b/Test/baseResults/spv.register.autoassign.frag.out new file mode 100644 index 00000000..708f4750 --- /dev/null +++ b/Test/baseResults/spv.register.autoassign.frag.out @@ -0,0 +1,237 @@ +spv.register.autoassign.frag + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 150 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main_ep" 145 + ExecutionMode 4 OriginUpperLeft + Name 4 "main_ep" + Name 9 "Func1(" + Name 11 "Func2(" + Name 13 "Func2_unused(" + Name 17 "g_tTex1" + Name 21 "g_sSamp1" + Name 27 "g_tTex2" + Name 29 "g_sSamp2" + Name 39 "g_tTex3" + Name 46 "g_sSamp3" + Name 64 "g_tTex4" + Name 69 "g_sSamp4" + Name 84 "g_tTex5" + Name 86 "g_sSamp5" + Name 93 "MyStruct_t" + MemberName 93(MyStruct_t) 0 "a" + MemberName 93(MyStruct_t) 1 "b" + MemberName 93(MyStruct_t) 2 "c" + Name 95 "$Global" + MemberName 95($Global) 0 "mystruct" + MemberName 95($Global) 1 "myfloat4_a" + MemberName 95($Global) 2 "myfloat4_b" + MemberName 95($Global) 3 "myint4_a" + Name 97 "" + Name 119 "g_tTex_unused1" + Name 121 "g_sSamp_unused1" + Name 126 "g_tTex_unused2" + Name 128 "g_sSamp_unused2" + Name 136 "PS_OUTPUT" + MemberName 136(PS_OUTPUT) 0 "Color" + Name 138 "psout" + Name 145 "Color" + Name 149 "g_tTex_unused3" + Decorate 17(g_tTex1) DescriptorSet 0 + Decorate 17(g_tTex1) Binding 11 + Decorate 21(g_sSamp1) DescriptorSet 0 + Decorate 21(g_sSamp1) Binding 5 + Decorate 27(g_tTex2) DescriptorSet 0 + Decorate 27(g_tTex2) Binding 14 + Decorate 29(g_sSamp2) DescriptorSet 0 + Decorate 29(g_sSamp2) Binding 6 + Decorate 39(g_tTex3) DescriptorSet 0 + Decorate 39(g_tTex3) Binding 13 + Decorate 46(g_sSamp3) DescriptorSet 0 + Decorate 46(g_sSamp3) Binding 7 + Decorate 64(g_tTex4) DescriptorSet 0 + Decorate 64(g_tTex4) Binding 15 + Decorate 69(g_sSamp4) DescriptorSet 0 + Decorate 69(g_sSamp4) Binding 8 + Decorate 84(g_tTex5) DescriptorSet 0 + Decorate 84(g_tTex5) Binding 16 + Decorate 86(g_sSamp5) DescriptorSet 0 + Decorate 86(g_sSamp5) Binding 9 + MemberDecorate 93(MyStruct_t) 0 Offset 0 + MemberDecorate 93(MyStruct_t) 1 Offset 4 + MemberDecorate 93(MyStruct_t) 2 Offset 16 + MemberDecorate 95($Global) 0 Offset 0 + MemberDecorate 95($Global) 1 Offset 32 + MemberDecorate 95($Global) 2 Offset 48 + MemberDecorate 95($Global) 3 Offset 64 + Decorate 95($Global) Block + Decorate 97 DescriptorSet 0 + Decorate 97 Binding 20 + Decorate 119(g_tTex_unused1) DescriptorSet 0 + Decorate 119(g_tTex_unused1) Binding 10 + Decorate 121(g_sSamp_unused1) DescriptorSet 0 + Decorate 126(g_tTex_unused2) DescriptorSet 0 + Decorate 126(g_tTex_unused2) Binding 12 + Decorate 128(g_sSamp_unused2) DescriptorSet 0 + Decorate 145(Color) Location 0 + Decorate 149(g_tTex_unused3) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 15: TypeImage 6(float) 1D sampled format:Unknown + 16: TypePointer UniformConstant 15 + 17(g_tTex1): 16(ptr) Variable UniformConstant + 19: TypeSampler + 20: TypePointer UniformConstant 19 + 21(g_sSamp1): 20(ptr) Variable UniformConstant + 23: TypeSampledImage 15 + 25: 6(float) Constant 1036831949 + 27(g_tTex2): 16(ptr) Variable UniformConstant + 29(g_sSamp2): 20(ptr) Variable UniformConstant + 32: 6(float) Constant 1045220557 + 35: TypeInt 32 0 + 36: 35(int) Constant 2 + 37: TypeArray 15 36 + 38: TypePointer UniformConstant 37 + 39(g_tTex3): 38(ptr) Variable UniformConstant + 40: TypeInt 32 1 + 41: 40(int) Constant 0 + 44: TypeArray 19 36 + 45: TypePointer UniformConstant 44 + 46(g_sSamp3): 45(ptr) Variable UniformConstant + 50: 6(float) Constant 1050253722 + 53: 40(int) Constant 1 + 61: 35(int) Constant 3 + 62: TypeArray 15 61 + 63: TypePointer UniformConstant 62 + 64(g_tTex4): 63(ptr) Variable UniformConstant + 67: TypeArray 19 61 + 68: TypePointer UniformConstant 67 + 69(g_sSamp4): 68(ptr) Variable UniformConstant + 73: 6(float) Constant 1053609165 + 76: 40(int) Constant 2 + 84(g_tTex5): 16(ptr) Variable UniformConstant + 86(g_sSamp5): 20(ptr) Variable UniformConstant + 89: 6(float) Constant 1056964608 + 92: TypeVector 6(float) 3 + 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) + 94: TypeVector 40(int) 4 + 95($Global): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4) + 96: TypePointer Uniform 95($Global) + 97: 96(ptr) Variable Uniform + 98: 35(int) Constant 1 + 99: TypePointer Uniform 6(float) +119(g_tTex_unused1): 16(ptr) Variable UniformConstant +121(g_sSamp_unused1): 20(ptr) Variable UniformConstant + 124: 6(float) Constant 1066192077 +126(g_tTex_unused2): 16(ptr) Variable UniformConstant +128(g_sSamp_unused2): 20(ptr) Variable UniformConstant + 131: 6(float) Constant 1067030938 + 136(PS_OUTPUT): TypeStruct 7(fvec4) + 137: TypePointer Function 136(PS_OUTPUT) + 142: TypePointer Function 7(fvec4) + 144: TypePointer Output 7(fvec4) + 145(Color): 144(ptr) Variable Output +149(g_tTex_unused3): 16(ptr) Variable UniformConstant + 4(main_ep): 2 Function None 3 + 5: Label + 138(psout): 137(ptr) Variable Function + 139: 7(fvec4) FunctionCall 9(Func1() + 140: 7(fvec4) FunctionCall 11(Func2() + 141: 7(fvec4) FAdd 139 140 + 143: 142(ptr) AccessChain 138(psout) 41 + Store 143 141 + 146: 142(ptr) AccessChain 138(psout) 41 + 147: 7(fvec4) Load 146 + Store 145(Color) 147 + Return + FunctionEnd + 9(Func1(): 7(fvec4) Function None 8 + 10: Label + 18: 15 Load 17(g_tTex1) + 22: 19 Load 21(g_sSamp1) + 24: 23 SampledImage 18 22 + 26: 7(fvec4) ImageSampleImplicitLod 24 25 + 28: 15 Load 27(g_tTex2) + 30: 19 Load 29(g_sSamp2) + 31: 23 SampledImage 28 30 + 33: 7(fvec4) ImageSampleImplicitLod 31 32 + 34: 7(fvec4) FAdd 26 33 + 42: 16(ptr) AccessChain 39(g_tTex3) 41 + 43: 15 Load 42 + 47: 20(ptr) AccessChain 46(g_sSamp3) 41 + 48: 19 Load 47 + 49: 23 SampledImage 43 48 + 51: 7(fvec4) ImageSampleImplicitLod 49 50 + 52: 7(fvec4) FAdd 34 51 + 54: 16(ptr) AccessChain 39(g_tTex3) 53 + 55: 15 Load 54 + 56: 20(ptr) AccessChain 46(g_sSamp3) 53 + 57: 19 Load 56 + 58: 23 SampledImage 55 57 + 59: 7(fvec4) ImageSampleImplicitLod 58 50 + 60: 7(fvec4) FAdd 52 59 + 65: 16(ptr) AccessChain 64(g_tTex4) 53 + 66: 15 Load 65 + 70: 20(ptr) AccessChain 69(g_sSamp4) 53 + 71: 19 Load 70 + 72: 23 SampledImage 66 71 + 74: 7(fvec4) ImageSampleImplicitLod 72 73 + 75: 7(fvec4) FAdd 60 74 + 77: 16(ptr) AccessChain 64(g_tTex4) 76 + 78: 15 Load 77 + 79: 20(ptr) AccessChain 69(g_sSamp4) 76 + 80: 19 Load 79 + 81: 23 SampledImage 78 80 + 82: 7(fvec4) ImageSampleImplicitLod 81 73 + 83: 7(fvec4) FAdd 75 82 + 85: 15 Load 84(g_tTex5) + 87: 19 Load 86(g_sSamp5) + 88: 23 SampledImage 85 87 + 90: 7(fvec4) ImageSampleImplicitLod 88 89 + 91: 7(fvec4) FAdd 83 90 + 100: 99(ptr) AccessChain 97 41 76 98 + 101: 6(float) Load 100 + 102: 7(fvec4) CompositeConstruct 101 101 101 101 + 103: 7(fvec4) FAdd 91 102 + ReturnValue 103 + FunctionEnd + 11(Func2(): 7(fvec4) Function None 8 + 12: Label + 106: 15 Load 17(g_tTex1) + 107: 19 Load 21(g_sSamp1) + 108: 23 SampledImage 106 107 + 109: 7(fvec4) ImageSampleImplicitLod 108 25 + 110: 16(ptr) AccessChain 39(g_tTex3) 53 + 111: 15 Load 110 + 112: 20(ptr) AccessChain 46(g_sSamp3) 53 + 113: 19 Load 112 + 114: 23 SampledImage 111 113 + 115: 7(fvec4) ImageSampleImplicitLod 114 50 + 116: 7(fvec4) FAdd 109 115 + ReturnValue 116 + FunctionEnd +13(Func2_unused(): 7(fvec4) Function None 8 + 14: Label + 120: 15 Load 119(g_tTex_unused1) + 122: 19 Load 121(g_sSamp_unused1) + 123: 23 SampledImage 120 122 + 125: 7(fvec4) ImageSampleImplicitLod 123 124 + 127: 15 Load 126(g_tTex_unused2) + 129: 19 Load 128(g_sSamp_unused2) + 130: 23 SampledImage 127 129 + 132: 7(fvec4) ImageSampleImplicitLod 130 131 + 133: 7(fvec4) FAdd 125 132 + ReturnValue 133 + FunctionEnd diff --git a/Test/baseResults/spv.register.autoassign.rangetest.frag.out b/Test/baseResults/spv.register.autoassign.rangetest.frag.out new file mode 100644 index 00000000..a521a13b --- /dev/null +++ b/Test/baseResults/spv.register.autoassign.rangetest.frag.out @@ -0,0 +1,12 @@ +spv.register.autoassign.rangetest.frag + +Linked fragment stage: + +INTERNAL ERROR: mapped binding out of range: g_tScene +INTERNAL ERROR: mapped binding out of range: g_tSamp +INTERNAL ERROR: mapped binding out of range: g_tScene +INTERNAL ERROR: mapped binding out of range: g_tSamp +INTERNAL ERROR: mapped binding out of range: g_tSamp +INTERNAL ERROR: mapped binding out of range: g_tScene + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.register.noautoassign.frag.out b/Test/baseResults/spv.register.noautoassign.frag.out new file mode 100644 index 00000000..ad476eeb --- /dev/null +++ b/Test/baseResults/spv.register.noautoassign.frag.out @@ -0,0 +1,230 @@ +spv.register.noautoassign.frag + +Linked fragment stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 150 + + Capability Shader + Capability Sampled1D + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main_ep" 145 + ExecutionMode 4 OriginUpperLeft + Name 4 "main_ep" + Name 9 "Func1(" + Name 11 "Func2(" + Name 13 "Func2_unused(" + Name 17 "g_tTex1" + Name 21 "g_sSamp1" + Name 27 "g_tTex2" + Name 29 "g_sSamp2" + Name 39 "g_tTex3" + Name 46 "g_sSamp3" + Name 64 "g_tTex4" + Name 69 "g_sSamp4" + Name 84 "g_tTex5" + Name 86 "g_sSamp5" + Name 93 "MyStruct_t" + MemberName 93(MyStruct_t) 0 "a" + MemberName 93(MyStruct_t) 1 "b" + MemberName 93(MyStruct_t) 2 "c" + Name 95 "$Global" + MemberName 95($Global) 0 "mystruct" + MemberName 95($Global) 1 "myfloat4_a" + MemberName 95($Global) 2 "myfloat4_b" + MemberName 95($Global) 3 "myint4_a" + Name 97 "" + Name 119 "g_tTex_unused1" + Name 121 "g_sSamp_unused1" + Name 126 "g_tTex_unused2" + Name 128 "g_sSamp_unused2" + Name 136 "PS_OUTPUT" + MemberName 136(PS_OUTPUT) 0 "Color" + Name 138 "psout" + Name 145 "Color" + Name 149 "g_tTex_unused3" + Decorate 17(g_tTex1) DescriptorSet 0 + Decorate 17(g_tTex1) Binding 11 + Decorate 21(g_sSamp1) DescriptorSet 0 + Decorate 21(g_sSamp1) Binding 5 + Decorate 27(g_tTex2) DescriptorSet 0 + Decorate 29(g_sSamp2) DescriptorSet 0 + Decorate 39(g_tTex3) DescriptorSet 0 + Decorate 39(g_tTex3) Binding 13 + Decorate 46(g_sSamp3) DescriptorSet 0 + Decorate 46(g_sSamp3) Binding 7 + Decorate 64(g_tTex4) DescriptorSet 0 + Decorate 69(g_sSamp4) DescriptorSet 0 + Decorate 84(g_tTex5) DescriptorSet 0 + Decorate 86(g_sSamp5) DescriptorSet 0 + MemberDecorate 93(MyStruct_t) 0 Offset 0 + MemberDecorate 93(MyStruct_t) 1 Offset 4 + MemberDecorate 93(MyStruct_t) 2 Offset 16 + MemberDecorate 95($Global) 0 Offset 0 + MemberDecorate 95($Global) 1 Offset 32 + MemberDecorate 95($Global) 2 Offset 48 + MemberDecorate 95($Global) 3 Offset 64 + Decorate 95($Global) Block + Decorate 97 DescriptorSet 0 + Decorate 119(g_tTex_unused1) DescriptorSet 0 + Decorate 119(g_tTex_unused1) Binding 10 + Decorate 121(g_sSamp_unused1) DescriptorSet 0 + Decorate 126(g_tTex_unused2) DescriptorSet 0 + Decorate 126(g_tTex_unused2) Binding 12 + Decorate 128(g_sSamp_unused2) DescriptorSet 0 + Decorate 145(Color) Location 0 + Decorate 149(g_tTex_unused3) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 15: TypeImage 6(float) 1D sampled format:Unknown + 16: TypePointer UniformConstant 15 + 17(g_tTex1): 16(ptr) Variable UniformConstant + 19: TypeSampler + 20: TypePointer UniformConstant 19 + 21(g_sSamp1): 20(ptr) Variable UniformConstant + 23: TypeSampledImage 15 + 25: 6(float) Constant 1036831949 + 27(g_tTex2): 16(ptr) Variable UniformConstant + 29(g_sSamp2): 20(ptr) Variable UniformConstant + 32: 6(float) Constant 1045220557 + 35: TypeInt 32 0 + 36: 35(int) Constant 2 + 37: TypeArray 15 36 + 38: TypePointer UniformConstant 37 + 39(g_tTex3): 38(ptr) Variable UniformConstant + 40: TypeInt 32 1 + 41: 40(int) Constant 0 + 44: TypeArray 19 36 + 45: TypePointer UniformConstant 44 + 46(g_sSamp3): 45(ptr) Variable UniformConstant + 50: 6(float) Constant 1050253722 + 53: 40(int) Constant 1 + 61: 35(int) Constant 3 + 62: TypeArray 15 61 + 63: TypePointer UniformConstant 62 + 64(g_tTex4): 63(ptr) Variable UniformConstant + 67: TypeArray 19 61 + 68: TypePointer UniformConstant 67 + 69(g_sSamp4): 68(ptr) Variable UniformConstant + 73: 6(float) Constant 1053609165 + 76: 40(int) Constant 2 + 84(g_tTex5): 16(ptr) Variable UniformConstant + 86(g_sSamp5): 20(ptr) Variable UniformConstant + 89: 6(float) Constant 1056964608 + 92: TypeVector 6(float) 3 + 93(MyStruct_t): TypeStruct 40(int) 6(float) 92(fvec3) + 94: TypeVector 40(int) 4 + 95($Global): TypeStruct 93(MyStruct_t) 7(fvec4) 7(fvec4) 94(ivec4) + 96: TypePointer Uniform 95($Global) + 97: 96(ptr) Variable Uniform + 98: 35(int) Constant 1 + 99: TypePointer Uniform 6(float) +119(g_tTex_unused1): 16(ptr) Variable UniformConstant +121(g_sSamp_unused1): 20(ptr) Variable UniformConstant + 124: 6(float) Constant 1066192077 +126(g_tTex_unused2): 16(ptr) Variable UniformConstant +128(g_sSamp_unused2): 20(ptr) Variable UniformConstant + 131: 6(float) Constant 1067030938 + 136(PS_OUTPUT): TypeStruct 7(fvec4) + 137: TypePointer Function 136(PS_OUTPUT) + 142: TypePointer Function 7(fvec4) + 144: TypePointer Output 7(fvec4) + 145(Color): 144(ptr) Variable Output +149(g_tTex_unused3): 16(ptr) Variable UniformConstant + 4(main_ep): 2 Function None 3 + 5: Label + 138(psout): 137(ptr) Variable Function + 139: 7(fvec4) FunctionCall 9(Func1() + 140: 7(fvec4) FunctionCall 11(Func2() + 141: 7(fvec4) FAdd 139 140 + 143: 142(ptr) AccessChain 138(psout) 41 + Store 143 141 + 146: 142(ptr) AccessChain 138(psout) 41 + 147: 7(fvec4) Load 146 + Store 145(Color) 147 + Return + FunctionEnd + 9(Func1(): 7(fvec4) Function None 8 + 10: Label + 18: 15 Load 17(g_tTex1) + 22: 19 Load 21(g_sSamp1) + 24: 23 SampledImage 18 22 + 26: 7(fvec4) ImageSampleImplicitLod 24 25 + 28: 15 Load 27(g_tTex2) + 30: 19 Load 29(g_sSamp2) + 31: 23 SampledImage 28 30 + 33: 7(fvec4) ImageSampleImplicitLod 31 32 + 34: 7(fvec4) FAdd 26 33 + 42: 16(ptr) AccessChain 39(g_tTex3) 41 + 43: 15 Load 42 + 47: 20(ptr) AccessChain 46(g_sSamp3) 41 + 48: 19 Load 47 + 49: 23 SampledImage 43 48 + 51: 7(fvec4) ImageSampleImplicitLod 49 50 + 52: 7(fvec4) FAdd 34 51 + 54: 16(ptr) AccessChain 39(g_tTex3) 53 + 55: 15 Load 54 + 56: 20(ptr) AccessChain 46(g_sSamp3) 53 + 57: 19 Load 56 + 58: 23 SampledImage 55 57 + 59: 7(fvec4) ImageSampleImplicitLod 58 50 + 60: 7(fvec4) FAdd 52 59 + 65: 16(ptr) AccessChain 64(g_tTex4) 53 + 66: 15 Load 65 + 70: 20(ptr) AccessChain 69(g_sSamp4) 53 + 71: 19 Load 70 + 72: 23 SampledImage 66 71 + 74: 7(fvec4) ImageSampleImplicitLod 72 73 + 75: 7(fvec4) FAdd 60 74 + 77: 16(ptr) AccessChain 64(g_tTex4) 76 + 78: 15 Load 77 + 79: 20(ptr) AccessChain 69(g_sSamp4) 76 + 80: 19 Load 79 + 81: 23 SampledImage 78 80 + 82: 7(fvec4) ImageSampleImplicitLod 81 73 + 83: 7(fvec4) FAdd 75 82 + 85: 15 Load 84(g_tTex5) + 87: 19 Load 86(g_sSamp5) + 88: 23 SampledImage 85 87 + 90: 7(fvec4) ImageSampleImplicitLod 88 89 + 91: 7(fvec4) FAdd 83 90 + 100: 99(ptr) AccessChain 97 41 76 98 + 101: 6(float) Load 100 + 102: 7(fvec4) CompositeConstruct 101 101 101 101 + 103: 7(fvec4) FAdd 91 102 + ReturnValue 103 + FunctionEnd + 11(Func2(): 7(fvec4) Function None 8 + 12: Label + 106: 15 Load 17(g_tTex1) + 107: 19 Load 21(g_sSamp1) + 108: 23 SampledImage 106 107 + 109: 7(fvec4) ImageSampleImplicitLod 108 25 + 110: 16(ptr) AccessChain 39(g_tTex3) 53 + 111: 15 Load 110 + 112: 20(ptr) AccessChain 46(g_sSamp3) 53 + 113: 19 Load 112 + 114: 23 SampledImage 111 113 + 115: 7(fvec4) ImageSampleImplicitLod 114 50 + 116: 7(fvec4) FAdd 109 115 + ReturnValue 116 + FunctionEnd +13(Func2_unused(): 7(fvec4) Function None 8 + 14: Label + 120: 15 Load 119(g_tTex_unused1) + 122: 19 Load 121(g_sSamp_unused1) + 123: 23 SampledImage 120 122 + 125: 7(fvec4) ImageSampleImplicitLod 123 124 + 127: 15 Load 126(g_tTex_unused2) + 129: 19 Load 128(g_sSamp_unused2) + 130: 23 SampledImage 127 129 + 132: 7(fvec4) ImageSampleImplicitLod 130 131 + 133: 7(fvec4) FAdd 125 132 + ReturnValue 133 + FunctionEnd diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out index cb2e0130..b837b8bc 100644 --- a/Test/baseResults/spv.shaderBallot.comp.out +++ b/Test/baseResults/spv.shaderBallot.comp.out @@ -5,16 +5,18 @@ Warning, version 450 is not yet complete; most version-specific features are pre Linked compute stage: -Missing functionality: shader ballot // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 241 +// Id's are bound by 299 Capability Shader Capability Int64 + Capability Groups + Capability SubgroupBallotKHR + Extension "SPV_KHR_shader_ballot" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 4 "main" 10 22 24 27 30 33 + EntryPoint GLCompute 4 "main" 10 12 21 23 26 29 32 ExecutionMode 4 LocalSize 8 8 1 Source GLSL 450 SourceExtension "GL_ARB_gpu_shader_int64" @@ -22,293 +24,358 @@ Missing functionality: shader ballot Name 4 "main" Name 8 "invocation" Name 10 "gl_SubGroupInvocationARB" - Name 13 "gl_SubGroupSizeARB" - Name 20 "relMask" - Name 22 "gl_SubGroupEqMaskARB" - Name 24 "gl_SubGroupGeMaskARB" - Name 27 "gl_SubGroupGtMaskARB" - Name 30 "gl_SubGroupLeMaskARB" - Name 33 "gl_SubGroupLtMaskARB" - Name 48 "Buffers" - MemberName 48(Buffers) 0 "f4" - MemberName 48(Buffers) 1 "i4" - MemberName 48(Buffers) 2 "u4" - Name 51 "data" - MemberDecorate 48(Buffers) 0 Offset 0 - MemberDecorate 48(Buffers) 1 Offset 16 - MemberDecorate 48(Buffers) 2 Offset 32 - Decorate 48(Buffers) BufferBlock - Decorate 51(data) DescriptorSet 0 - Decorate 51(data) Binding 0 - Decorate 240 BuiltIn WorkgroupSize + Name 12 "gl_SubGroupSizeARB" + Name 19 "relMask" + Name 21 "gl_SubGroupEqMaskARB" + Name 23 "gl_SubGroupGeMaskARB" + Name 26 "gl_SubGroupGtMaskARB" + Name 29 "gl_SubGroupLeMaskARB" + Name 32 "gl_SubGroupLtMaskARB" + Name 52 "Buffers" + MemberName 52(Buffers) 0 "f4" + MemberName 52(Buffers) 1 "i4" + MemberName 52(Buffers) 2 "u4" + Name 55 "data" + Decorate 10(gl_SubGroupInvocationARB) BuiltIn SubgroupLocalInvocationId + Decorate 12(gl_SubGroupSizeARB) BuiltIn SubgroupSize + Decorate 21(gl_SubGroupEqMaskARB) BuiltIn SubgroupEqMaskKHR + Decorate 23(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR + Decorate 26(gl_SubGroupGtMaskARB) BuiltIn SubgroupGtMaskKHR + Decorate 29(gl_SubGroupLeMaskARB) BuiltIn SubgroupLeMaskKHR + Decorate 32(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR + MemberDecorate 52(Buffers) 0 Offset 0 + MemberDecorate 52(Buffers) 1 Offset 16 + MemberDecorate 52(Buffers) 2 Offset 32 + Decorate 52(Buffers) BufferBlock + Decorate 55(data) DescriptorSet 0 + Decorate 55(data) Binding 0 + Decorate 298 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 7: TypePointer Function 6(int) 9: TypePointer Input 6(int) 10(gl_SubGroupInvocationARB): 9(ptr) Variable Input - 12: TypePointer UniformConstant 6(int) -13(gl_SubGroupSizeARB): 12(ptr) Variable UniformConstant - 16: 6(int) Constant 4 - 18: TypeInt 64 0 - 19: TypePointer Function 18(int) - 21: TypePointer Input 18(int) -22(gl_SubGroupEqMaskARB): 21(ptr) Variable Input -24(gl_SubGroupGeMaskARB): 21(ptr) Variable Input -27(gl_SubGroupGtMaskARB): 21(ptr) Variable Input -30(gl_SubGroupLeMaskARB): 21(ptr) Variable Input -33(gl_SubGroupLtMaskARB): 21(ptr) Variable Input - 37: TypeBool - 38: 37(bool) ConstantTrue - 43: TypeFloat 32 - 44: TypeVector 43(float) 4 - 45: TypeInt 32 1 - 46: TypeVector 45(int) 4 - 47: TypeVector 6(int) 4 - 48(Buffers): TypeStruct 44(fvec4) 46(ivec4) 47(ivec4) - 49: TypeArray 48(Buffers) 16 - 50: TypePointer Uniform 49 - 51(data): 50(ptr) Variable Uniform - 53: 45(int) Constant 0 - 54: 6(int) Constant 0 - 55: TypePointer Uniform 43(float) - 62: 45(int) Constant 1 - 63: TypeVector 43(float) 2 - 64: TypePointer Uniform 44(fvec4) - 74: 45(int) Constant 2 - 75: TypeVector 43(float) 3 - 85: 45(int) Constant 3 - 92: TypePointer Uniform 45(int) - 99: TypeVector 45(int) 2 - 100: TypePointer Uniform 46(ivec4) - 110: TypeVector 45(int) 3 - 126: TypePointer Uniform 6(int) - 133: TypeVector 6(int) 2 - 134: TypePointer Uniform 47(ivec4) - 144: TypeVector 6(int) 3 - 238: 6(int) Constant 8 - 239: 6(int) Constant 1 - 240: 144(ivec3) ConstantComposite 238 238 239 +12(gl_SubGroupSizeARB): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 64 0 + 18: TypePointer Function 17(int) + 20: TypePointer Input 17(int) +21(gl_SubGroupEqMaskARB): 20(ptr) Variable Input +23(gl_SubGroupGeMaskARB): 20(ptr) Variable Input +26(gl_SubGroupGtMaskARB): 20(ptr) Variable Input +29(gl_SubGroupLeMaskARB): 20(ptr) Variable Input +32(gl_SubGroupLtMaskARB): 20(ptr) Variable Input + 36: TypeBool + 37: 36(bool) ConstantTrue + 38: TypeVector 6(int) 4 + 42: TypeVector 6(int) 2 + 48: TypeFloat 32 + 49: TypeVector 48(float) 4 + 50: TypeInt 32 1 + 51: TypeVector 50(int) 4 + 52(Buffers): TypeStruct 49(fvec4) 51(ivec4) 38(ivec4) + 53: TypeArray 52(Buffers) 15 + 54: TypePointer Uniform 53 + 55(data): 54(ptr) Variable Uniform + 57: 50(int) Constant 0 + 58: 6(int) Constant 0 + 59: TypePointer Uniform 48(float) + 63: 6(int) Constant 3 + 67: 50(int) Constant 1 + 68: TypeVector 48(float) 2 + 69: TypePointer Uniform 49(fvec4) + 83: 50(int) Constant 2 + 84: TypeVector 48(float) 3 + 100: 50(int) Constant 3 + 115: TypePointer Uniform 50(int) + 122: TypeVector 50(int) 2 + 123: TypePointer Uniform 51(ivec4) + 137: TypeVector 50(int) 3 + 167: TypePointer Uniform 6(int) + 174: TypePointer Uniform 38(ivec4) + 188: TypeVector 6(int) 3 + 296: 6(int) Constant 8 + 297: 6(int) Constant 1 + 298: 188(ivec3) ConstantComposite 296 296 297 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function - 20(relMask): 19(ptr) Variable Function + 19(relMask): 18(ptr) Variable Function 11: 6(int) Load 10(gl_SubGroupInvocationARB) - 14: 6(int) Load 13(gl_SubGroupSizeARB) - 15: 6(int) IAdd 11 14 - 17: 6(int) UMod 15 16 - Store 8(invocation) 17 - 23: 18(int) Load 22(gl_SubGroupEqMaskARB) - 25: 18(int) Load 24(gl_SubGroupGeMaskARB) - 26: 18(int) IAdd 23 25 - 28: 18(int) Load 27(gl_SubGroupGtMaskARB) - 29: 18(int) IAdd 26 28 - 31: 18(int) Load 30(gl_SubGroupLeMaskARB) - 32: 18(int) IAdd 29 31 - 34: 18(int) Load 33(gl_SubGroupLtMaskARB) - 35: 18(int) IAdd 32 34 - Store 20(relMask) 35 - 36: 18(int) Load 20(relMask) - 39: 18(int) ExtInst 1(GLSL.std.450) 0(Unknown) 38 - 40: 37(bool) IEqual 36 39 - SelectionMerge 42 None - BranchConditional 40 41 159 - 41: Label - 52: 6(int) Load 8(invocation) - 56: 55(ptr) AccessChain 51(data) 53 53 54 - 57: 43(float) Load 56 - 58: 6(int) Load 8(invocation) - 59: 43(float) ExtInst 1(GLSL.std.450) 0(Unknown) 57 58 - 60: 55(ptr) AccessChain 51(data) 52 53 54 - Store 60 59 - 61: 6(int) Load 8(invocation) - 65: 64(ptr) AccessChain 51(data) 62 53 - 66: 44(fvec4) Load 65 - 67: 63(fvec2) VectorShuffle 66 66 0 1 - 68: 6(int) Load 8(invocation) - 69: 63(fvec2) ExtInst 1(GLSL.std.450) 0(Unknown) 67 68 - 70: 64(ptr) AccessChain 51(data) 61 53 - 71: 44(fvec4) Load 70 - 72: 44(fvec4) VectorShuffle 71 69 4 5 2 3 - Store 70 72 + 13: 6(int) Load 12(gl_SubGroupSizeARB) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 22: 17(int) Load 21(gl_SubGroupEqMaskARB) + 24: 17(int) Load 23(gl_SubGroupGeMaskARB) + 25: 17(int) IAdd 22 24 + 27: 17(int) Load 26(gl_SubGroupGtMaskARB) + 28: 17(int) IAdd 25 27 + 30: 17(int) Load 29(gl_SubGroupLeMaskARB) + 31: 17(int) IAdd 28 30 + 33: 17(int) Load 32(gl_SubGroupLtMaskARB) + 34: 17(int) IAdd 31 33 + Store 19(relMask) 34 + 35: 17(int) Load 19(relMask) + 39: 38(ivec4) SubgroupBallotKHR 37 + 40: 6(int) CompositeExtract 39 0 + 41: 6(int) CompositeExtract 39 1 + 43: 42(ivec2) CompositeConstruct 40 41 + 44: 17(int) Bitcast 43 + 45: 36(bool) IEqual 35 44 + SelectionMerge 47 None + BranchConditional 45 46 217 + 46: Label + 56: 6(int) Load 8(invocation) + 60: 59(ptr) AccessChain 55(data) 57 57 58 + 61: 48(float) Load 60 + 62: 6(int) Load 8(invocation) + 64: 48(float) GroupBroadcast 63 61 62 + 65: 59(ptr) AccessChain 55(data) 56 57 58 + Store 65 64 + 66: 6(int) Load 8(invocation) + 70: 69(ptr) AccessChain 55(data) 67 57 + 71: 49(fvec4) Load 70 + 72: 68(fvec2) VectorShuffle 71 71 0 1 73: 6(int) Load 8(invocation) - 76: 64(ptr) AccessChain 51(data) 74 53 - 77: 44(fvec4) Load 76 - 78: 75(fvec3) VectorShuffle 77 77 0 1 2 - 79: 6(int) Load 8(invocation) - 80: 75(fvec3) ExtInst 1(GLSL.std.450) 0(Unknown) 78 79 - 81: 64(ptr) AccessChain 51(data) 73 53 - 82: 44(fvec4) Load 81 - 83: 44(fvec4) VectorShuffle 82 80 4 5 6 3 - Store 81 83 - 84: 6(int) Load 8(invocation) - 86: 64(ptr) AccessChain 51(data) 85 53 - 87: 44(fvec4) Load 86 + 74: 48(float) CompositeExtract 72 0 + 75: 48(float) GroupBroadcast 63 74 73 + 76: 48(float) CompositeExtract 72 1 + 77: 48(float) GroupBroadcast 63 76 73 + 78: 68(fvec2) CompositeConstruct 75 77 + 79: 69(ptr) AccessChain 55(data) 66 57 + 80: 49(fvec4) Load 79 + 81: 49(fvec4) VectorShuffle 80 78 4 5 2 3 + Store 79 81 + 82: 6(int) Load 8(invocation) + 85: 69(ptr) AccessChain 55(data) 83 57 + 86: 49(fvec4) Load 85 + 87: 84(fvec3) VectorShuffle 86 86 0 1 2 88: 6(int) Load 8(invocation) - 89: 44(fvec4) ExtInst 1(GLSL.std.450) 0(Unknown) 87 88 - 90: 64(ptr) AccessChain 51(data) 84 53 - Store 90 89 - 91: 6(int) Load 8(invocation) - 93: 92(ptr) AccessChain 51(data) 53 62 54 - 94: 45(int) Load 93 - 95: 6(int) Load 8(invocation) - 96: 45(int) ExtInst 1(GLSL.std.450) 0(Unknown) 94 95 - 97: 92(ptr) AccessChain 51(data) 91 62 54 - Store 97 96 - 98: 6(int) Load 8(invocation) - 101: 100(ptr) AccessChain 51(data) 62 62 - 102: 46(ivec4) Load 101 - 103: 99(ivec2) VectorShuffle 102 102 0 1 - 104: 6(int) Load 8(invocation) - 105: 99(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 103 104 - 106: 100(ptr) AccessChain 51(data) 98 62 - 107: 46(ivec4) Load 106 - 108: 46(ivec4) VectorShuffle 107 105 4 5 2 3 - Store 106 108 - 109: 6(int) Load 8(invocation) - 111: 100(ptr) AccessChain 51(data) 74 62 - 112: 46(ivec4) Load 111 - 113: 110(ivec3) VectorShuffle 112 112 0 1 2 + 89: 48(float) CompositeExtract 87 0 + 90: 48(float) GroupBroadcast 63 89 88 + 91: 48(float) CompositeExtract 87 1 + 92: 48(float) GroupBroadcast 63 91 88 + 93: 48(float) CompositeExtract 87 2 + 94: 48(float) GroupBroadcast 63 93 88 + 95: 84(fvec3) CompositeConstruct 90 92 94 + 96: 69(ptr) AccessChain 55(data) 82 57 + 97: 49(fvec4) Load 96 + 98: 49(fvec4) VectorShuffle 97 95 4 5 6 3 + Store 96 98 + 99: 6(int) Load 8(invocation) + 101: 69(ptr) AccessChain 55(data) 100 57 + 102: 49(fvec4) Load 101 + 103: 6(int) Load 8(invocation) + 104: 48(float) CompositeExtract 102 0 + 105: 48(float) GroupBroadcast 63 104 103 + 106: 48(float) CompositeExtract 102 1 + 107: 48(float) GroupBroadcast 63 106 103 + 108: 48(float) CompositeExtract 102 2 + 109: 48(float) GroupBroadcast 63 108 103 + 110: 48(float) CompositeExtract 102 3 + 111: 48(float) GroupBroadcast 63 110 103 + 112: 49(fvec4) CompositeConstruct 105 107 109 111 + 113: 69(ptr) AccessChain 55(data) 99 57 + Store 113 112 114: 6(int) Load 8(invocation) - 115: 110(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 113 114 - 116: 100(ptr) AccessChain 51(data) 109 62 - 117: 46(ivec4) Load 116 - 118: 46(ivec4) VectorShuffle 117 115 4 5 6 3 - Store 116 118 - 119: 6(int) Load 8(invocation) - 120: 100(ptr) AccessChain 51(data) 85 62 - 121: 46(ivec4) Load 120 - 122: 6(int) Load 8(invocation) - 123: 46(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 121 122 - 124: 100(ptr) AccessChain 51(data) 119 62 - Store 124 123 - 125: 6(int) Load 8(invocation) - 127: 126(ptr) AccessChain 51(data) 53 74 54 - 128: 6(int) Load 127 - 129: 6(int) Load 8(invocation) - 130: 6(int) ExtInst 1(GLSL.std.450) 0(Unknown) 128 129 - 131: 126(ptr) AccessChain 51(data) 125 74 54 - Store 131 130 - 132: 6(int) Load 8(invocation) - 135: 134(ptr) AccessChain 51(data) 62 74 - 136: 47(ivec4) Load 135 - 137: 133(ivec2) VectorShuffle 136 136 0 1 - 138: 6(int) Load 8(invocation) - 139: 133(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 137 138 - 140: 134(ptr) AccessChain 51(data) 132 74 - 141: 47(ivec4) Load 140 - 142: 47(ivec4) VectorShuffle 141 139 4 5 2 3 - Store 140 142 - 143: 6(int) Load 8(invocation) - 145: 134(ptr) AccessChain 51(data) 74 74 - 146: 47(ivec4) Load 145 - 147: 144(ivec3) VectorShuffle 146 146 0 1 2 - 148: 6(int) Load 8(invocation) - 149: 144(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 147 148 - 150: 134(ptr) AccessChain 51(data) 143 74 - 151: 47(ivec4) Load 150 - 152: 47(ivec4) VectorShuffle 151 149 4 5 6 3 - Store 150 152 - 153: 6(int) Load 8(invocation) - 154: 134(ptr) AccessChain 51(data) 85 74 - 155: 47(ivec4) Load 154 - 156: 6(int) Load 8(invocation) - 157: 47(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 155 156 - 158: 134(ptr) AccessChain 51(data) 153 74 - Store 158 157 - Branch 42 - 159: Label - 160: 6(int) Load 8(invocation) - 161: 55(ptr) AccessChain 51(data) 53 53 54 - 162: 43(float) Load 161 - 163: 43(float) ExtInst 1(GLSL.std.450) 0(Unknown) 162 - 164: 55(ptr) AccessChain 51(data) 160 53 54 - Store 164 163 - 165: 6(int) Load 8(invocation) - 166: 64(ptr) AccessChain 51(data) 62 53 - 167: 44(fvec4) Load 166 - 168: 63(fvec2) VectorShuffle 167 167 0 1 - 169: 63(fvec2) ExtInst 1(GLSL.std.450) 0(Unknown) 168 - 170: 64(ptr) AccessChain 51(data) 165 53 - 171: 44(fvec4) Load 170 - 172: 44(fvec4) VectorShuffle 171 169 4 5 2 3 - Store 170 172 + 116: 115(ptr) AccessChain 55(data) 57 67 58 + 117: 50(int) Load 116 + 118: 6(int) Load 8(invocation) + 119: 50(int) GroupBroadcast 63 117 118 + 120: 115(ptr) AccessChain 55(data) 114 67 58 + Store 120 119 + 121: 6(int) Load 8(invocation) + 124: 123(ptr) AccessChain 55(data) 67 67 + 125: 51(ivec4) Load 124 + 126: 122(ivec2) VectorShuffle 125 125 0 1 + 127: 6(int) Load 8(invocation) + 128: 50(int) CompositeExtract 126 0 + 129: 50(int) GroupBroadcast 63 128 127 + 130: 50(int) CompositeExtract 126 1 + 131: 50(int) GroupBroadcast 63 130 127 + 132: 122(ivec2) CompositeConstruct 129 131 + 133: 123(ptr) AccessChain 55(data) 121 67 + 134: 51(ivec4) Load 133 + 135: 51(ivec4) VectorShuffle 134 132 4 5 2 3 + Store 133 135 + 136: 6(int) Load 8(invocation) + 138: 123(ptr) AccessChain 55(data) 83 67 + 139: 51(ivec4) Load 138 + 140: 137(ivec3) VectorShuffle 139 139 0 1 2 + 141: 6(int) Load 8(invocation) + 142: 50(int) CompositeExtract 140 0 + 143: 50(int) GroupBroadcast 63 142 141 + 144: 50(int) CompositeExtract 140 1 + 145: 50(int) GroupBroadcast 63 144 141 + 146: 50(int) CompositeExtract 140 2 + 147: 50(int) GroupBroadcast 63 146 141 + 148: 137(ivec3) CompositeConstruct 143 145 147 + 149: 123(ptr) AccessChain 55(data) 136 67 + 150: 51(ivec4) Load 149 + 151: 51(ivec4) VectorShuffle 150 148 4 5 6 3 + Store 149 151 + 152: 6(int) Load 8(invocation) + 153: 123(ptr) AccessChain 55(data) 100 67 + 154: 51(ivec4) Load 153 + 155: 6(int) Load 8(invocation) + 156: 50(int) CompositeExtract 154 0 + 157: 50(int) GroupBroadcast 63 156 155 + 158: 50(int) CompositeExtract 154 1 + 159: 50(int) GroupBroadcast 63 158 155 + 160: 50(int) CompositeExtract 154 2 + 161: 50(int) GroupBroadcast 63 160 155 + 162: 50(int) CompositeExtract 154 3 + 163: 50(int) GroupBroadcast 63 162 155 + 164: 51(ivec4) CompositeConstruct 157 159 161 163 + 165: 123(ptr) AccessChain 55(data) 152 67 + Store 165 164 + 166: 6(int) Load 8(invocation) + 168: 167(ptr) AccessChain 55(data) 57 83 58 + 169: 6(int) Load 168 + 170: 6(int) Load 8(invocation) + 171: 6(int) GroupBroadcast 63 169 170 + 172: 167(ptr) AccessChain 55(data) 166 83 58 + Store 172 171 173: 6(int) Load 8(invocation) - 174: 64(ptr) AccessChain 51(data) 74 53 - 175: 44(fvec4) Load 174 - 176: 75(fvec3) VectorShuffle 175 175 0 1 2 - 177: 75(fvec3) ExtInst 1(GLSL.std.450) 0(Unknown) 176 - 178: 64(ptr) AccessChain 51(data) 173 53 - 179: 44(fvec4) Load 178 - 180: 44(fvec4) VectorShuffle 179 177 4 5 6 3 - Store 178 180 - 181: 6(int) Load 8(invocation) - 182: 64(ptr) AccessChain 51(data) 85 53 - 183: 44(fvec4) Load 182 - 184: 44(fvec4) ExtInst 1(GLSL.std.450) 0(Unknown) 183 - 185: 64(ptr) AccessChain 51(data) 181 53 - Store 185 184 - 186: 6(int) Load 8(invocation) - 187: 92(ptr) AccessChain 51(data) 53 62 54 - 188: 45(int) Load 187 - 189: 45(int) ExtInst 1(GLSL.std.450) 0(Unknown) 188 - 190: 92(ptr) AccessChain 51(data) 186 62 54 - Store 190 189 - 191: 6(int) Load 8(invocation) - 192: 100(ptr) AccessChain 51(data) 62 62 - 193: 46(ivec4) Load 192 - 194: 99(ivec2) VectorShuffle 193 193 0 1 - 195: 99(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 194 - 196: 100(ptr) AccessChain 51(data) 191 62 - 197: 46(ivec4) Load 196 - 198: 46(ivec4) VectorShuffle 197 195 4 5 2 3 - Store 196 198 - 199: 6(int) Load 8(invocation) - 200: 100(ptr) AccessChain 51(data) 74 62 - 201: 46(ivec4) Load 200 - 202: 110(ivec3) VectorShuffle 201 201 0 1 2 - 203: 110(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 202 - 204: 100(ptr) AccessChain 51(data) 199 62 - 205: 46(ivec4) Load 204 - 206: 46(ivec4) VectorShuffle 205 203 4 5 6 3 - Store 204 206 - 207: 6(int) Load 8(invocation) - 208: 100(ptr) AccessChain 51(data) 85 62 - 209: 46(ivec4) Load 208 - 210: 46(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 209 - 211: 100(ptr) AccessChain 51(data) 207 62 - Store 211 210 - 212: 6(int) Load 8(invocation) - 213: 126(ptr) AccessChain 51(data) 53 74 54 - 214: 6(int) Load 213 - 215: 6(int) ExtInst 1(GLSL.std.450) 0(Unknown) 214 - 216: 126(ptr) AccessChain 51(data) 212 74 54 + 175: 174(ptr) AccessChain 55(data) 67 83 + 176: 38(ivec4) Load 175 + 177: 42(ivec2) VectorShuffle 176 176 0 1 + 178: 6(int) Load 8(invocation) + 179: 6(int) CompositeExtract 177 0 + 180: 6(int) GroupBroadcast 63 179 178 + 181: 6(int) CompositeExtract 177 1 + 182: 6(int) GroupBroadcast 63 181 178 + 183: 42(ivec2) CompositeConstruct 180 182 + 184: 174(ptr) AccessChain 55(data) 173 83 + 185: 38(ivec4) Load 184 + 186: 38(ivec4) VectorShuffle 185 183 4 5 2 3 + Store 184 186 + 187: 6(int) Load 8(invocation) + 189: 174(ptr) AccessChain 55(data) 83 83 + 190: 38(ivec4) Load 189 + 191: 188(ivec3) VectorShuffle 190 190 0 1 2 + 192: 6(int) Load 8(invocation) + 193: 6(int) CompositeExtract 191 0 + 194: 6(int) GroupBroadcast 63 193 192 + 195: 6(int) CompositeExtract 191 1 + 196: 6(int) GroupBroadcast 63 195 192 + 197: 6(int) CompositeExtract 191 2 + 198: 6(int) GroupBroadcast 63 197 192 + 199: 188(ivec3) CompositeConstruct 194 196 198 + 200: 174(ptr) AccessChain 55(data) 187 83 + 201: 38(ivec4) Load 200 + 202: 38(ivec4) VectorShuffle 201 199 4 5 6 3 + Store 200 202 + 203: 6(int) Load 8(invocation) + 204: 174(ptr) AccessChain 55(data) 100 83 + 205: 38(ivec4) Load 204 + 206: 6(int) Load 8(invocation) + 207: 6(int) CompositeExtract 205 0 + 208: 6(int) GroupBroadcast 63 207 206 + 209: 6(int) CompositeExtract 205 1 + 210: 6(int) GroupBroadcast 63 209 206 + 211: 6(int) CompositeExtract 205 2 + 212: 6(int) GroupBroadcast 63 211 206 + 213: 6(int) CompositeExtract 205 3 + 214: 6(int) GroupBroadcast 63 213 206 + 215: 38(ivec4) CompositeConstruct 208 210 212 214 + 216: 174(ptr) AccessChain 55(data) 203 83 Store 216 215 - 217: 6(int) Load 8(invocation) - 218: 134(ptr) AccessChain 51(data) 62 74 - 219: 47(ivec4) Load 218 - 220: 133(ivec2) VectorShuffle 219 219 0 1 - 221: 133(ivec2) ExtInst 1(GLSL.std.450) 0(Unknown) 220 - 222: 134(ptr) AccessChain 51(data) 217 74 - 223: 47(ivec4) Load 222 - 224: 47(ivec4) VectorShuffle 223 221 4 5 2 3 - Store 222 224 - 225: 6(int) Load 8(invocation) - 226: 134(ptr) AccessChain 51(data) 74 74 - 227: 47(ivec4) Load 226 - 228: 144(ivec3) VectorShuffle 227 227 0 1 2 - 229: 144(ivec3) ExtInst 1(GLSL.std.450) 0(Unknown) 228 - 230: 134(ptr) AccessChain 51(data) 225 74 - 231: 47(ivec4) Load 230 - 232: 47(ivec4) VectorShuffle 231 229 4 5 6 3 - Store 230 232 - 233: 6(int) Load 8(invocation) - 234: 134(ptr) AccessChain 51(data) 85 74 - 235: 47(ivec4) Load 234 - 236: 47(ivec4) ExtInst 1(GLSL.std.450) 0(Unknown) 235 - 237: 134(ptr) AccessChain 51(data) 233 74 - Store 237 236 - Branch 42 - 42: Label + Branch 47 + 217: Label + 218: 6(int) Load 8(invocation) + 219: 59(ptr) AccessChain 55(data) 57 57 58 + 220: 48(float) Load 219 + 221: 48(float) SubgroupFirstInvocationKHR 220 + 222: 59(ptr) AccessChain 55(data) 218 57 58 + Store 222 221 + 223: 6(int) Load 8(invocation) + 224: 69(ptr) AccessChain 55(data) 67 57 + 225: 49(fvec4) Load 224 + 226: 68(fvec2) VectorShuffle 225 225 0 1 + 227: 68(fvec2) SubgroupFirstInvocationKHR 226 + 228: 69(ptr) AccessChain 55(data) 223 57 + 229: 49(fvec4) Load 228 + 230: 49(fvec4) VectorShuffle 229 227 4 5 2 3 + Store 228 230 + 231: 6(int) Load 8(invocation) + 232: 69(ptr) AccessChain 55(data) 83 57 + 233: 49(fvec4) Load 232 + 234: 84(fvec3) VectorShuffle 233 233 0 1 2 + 235: 84(fvec3) SubgroupFirstInvocationKHR 234 + 236: 69(ptr) AccessChain 55(data) 231 57 + 237: 49(fvec4) Load 236 + 238: 49(fvec4) VectorShuffle 237 235 4 5 6 3 + Store 236 238 + 239: 6(int) Load 8(invocation) + 240: 69(ptr) AccessChain 55(data) 100 57 + 241: 49(fvec4) Load 240 + 242: 49(fvec4) SubgroupFirstInvocationKHR 241 + 243: 69(ptr) AccessChain 55(data) 239 57 + Store 243 242 + 244: 6(int) Load 8(invocation) + 245: 115(ptr) AccessChain 55(data) 57 67 58 + 246: 50(int) Load 245 + 247: 50(int) SubgroupFirstInvocationKHR 246 + 248: 115(ptr) AccessChain 55(data) 244 67 58 + Store 248 247 + 249: 6(int) Load 8(invocation) + 250: 123(ptr) AccessChain 55(data) 67 67 + 251: 51(ivec4) Load 250 + 252: 122(ivec2) VectorShuffle 251 251 0 1 + 253: 122(ivec2) SubgroupFirstInvocationKHR 252 + 254: 123(ptr) AccessChain 55(data) 249 67 + 255: 51(ivec4) Load 254 + 256: 51(ivec4) VectorShuffle 255 253 4 5 2 3 + Store 254 256 + 257: 6(int) Load 8(invocation) + 258: 123(ptr) AccessChain 55(data) 83 67 + 259: 51(ivec4) Load 258 + 260: 137(ivec3) VectorShuffle 259 259 0 1 2 + 261: 137(ivec3) SubgroupFirstInvocationKHR 260 + 262: 123(ptr) AccessChain 55(data) 257 67 + 263: 51(ivec4) Load 262 + 264: 51(ivec4) VectorShuffle 263 261 4 5 6 3 + Store 262 264 + 265: 6(int) Load 8(invocation) + 266: 123(ptr) AccessChain 55(data) 100 67 + 267: 51(ivec4) Load 266 + 268: 51(ivec4) SubgroupFirstInvocationKHR 267 + 269: 123(ptr) AccessChain 55(data) 265 67 + Store 269 268 + 270: 6(int) Load 8(invocation) + 271: 167(ptr) AccessChain 55(data) 57 83 58 + 272: 6(int) Load 271 + 273: 6(int) SubgroupFirstInvocationKHR 272 + 274: 167(ptr) AccessChain 55(data) 270 83 58 + Store 274 273 + 275: 6(int) Load 8(invocation) + 276: 174(ptr) AccessChain 55(data) 67 83 + 277: 38(ivec4) Load 276 + 278: 42(ivec2) VectorShuffle 277 277 0 1 + 279: 42(ivec2) SubgroupFirstInvocationKHR 278 + 280: 174(ptr) AccessChain 55(data) 275 83 + 281: 38(ivec4) Load 280 + 282: 38(ivec4) VectorShuffle 281 279 4 5 2 3 + Store 280 282 + 283: 6(int) Load 8(invocation) + 284: 174(ptr) AccessChain 55(data) 83 83 + 285: 38(ivec4) Load 284 + 286: 188(ivec3) VectorShuffle 285 285 0 1 2 + 287: 188(ivec3) SubgroupFirstInvocationKHR 286 + 288: 174(ptr) AccessChain 55(data) 283 83 + 289: 38(ivec4) Load 288 + 290: 38(ivec4) VectorShuffle 289 287 4 5 6 3 + Store 288 290 + 291: 6(int) Load 8(invocation) + 292: 174(ptr) AccessChain 55(data) 100 83 + 293: 38(ivec4) Load 292 + 294: 38(ivec4) SubgroupFirstInvocationKHR 293 + 295: 174(ptr) AccessChain 55(data) 291 83 + Store 295 294 + Branch 47 + 47: Label Return FunctionEnd diff --git a/Test/baseResults/spv.shaderDrawParams.vert.out b/Test/baseResults/spv.shaderDrawParams.vert.out new file mode 100644 index 00000000..ad538107 --- /dev/null +++ b/Test/baseResults/spv.shaderDrawParams.vert.out @@ -0,0 +1,108 @@ +spv.shaderDrawParams.vert +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + + +Linked vertex stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 53 + + Capability Shader + Capability DrawParameters + Extension "SPV_KHR_shader_draw_parameters" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 9 16 29 37 + Source GLSL 450 + SourceExtension "GL_ARB_shader_draw_parameters" + Name 4 "main" + Name 9 "gl_BaseVertexARB" + Name 16 "gl_BaseInstanceARB" + Name 27 "gl_PerVertex" + MemberName 27(gl_PerVertex) 0 "gl_Position" + MemberName 27(gl_PerVertex) 1 "gl_PointSize" + MemberName 27(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 27(gl_PerVertex) 3 "gl_CullDistance" + Name 29 "" + Name 34 "Block" + MemberName 34(Block) 0 "pos" + Name 36 "block" + Name 37 "gl_DrawIDARB" + Decorate 9(gl_BaseVertexARB) BuiltIn BaseVertex + Decorate 16(gl_BaseInstanceARB) BuiltIn BaseInstance + MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 27(gl_PerVertex) Block + Decorate 31 ArrayStride 16 + Decorate 33 ArrayStride 64 + MemberDecorate 34(Block) 0 Offset 0 + Decorate 34(Block) Block + Decorate 36(block) DescriptorSet 0 + Decorate 36(block) Binding 0 + Decorate 37(gl_DrawIDARB) BuiltIn DrawIndex + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeBool + 7: TypeInt 32 1 + 8: TypePointer Input 7(int) +9(gl_BaseVertexARB): 8(ptr) Variable Input + 11: 7(int) Constant 0 +16(gl_BaseInstanceARB): 8(ptr) Variable Input + 22: TypeFloat 32 + 23: TypeVector 22(float) 4 + 24: TypeInt 32 0 + 25: 24(int) Constant 1 + 26: TypeArray 22(float) 25 +27(gl_PerVertex): TypeStruct 23(fvec4) 22(float) 26 26 + 28: TypePointer Output 27(gl_PerVertex) + 29: 28(ptr) Variable Output + 30: 24(int) Constant 4 + 31: TypeArray 23(fvec4) 30 + 32: 24(int) Constant 2 + 33: TypeArray 31 32 + 34(Block): TypeStruct 33 + 35: TypePointer Uniform 34(Block) + 36(block): 35(ptr) Variable Uniform +37(gl_DrawIDARB): 8(ptr) Variable Input + 39: 7(int) Constant 4 + 41: TypePointer Uniform 23(fvec4) + 44: TypePointer Output 23(fvec4) + 47: 7(int) Constant 1 + 4(main): 2 Function None 3 + 5: Label + 10: 7(int) Load 9(gl_BaseVertexARB) + 12: 6(bool) SGreaterThan 10 11 + 13: 6(bool) LogicalNot 12 + SelectionMerge 15 None + BranchConditional 13 14 15 + 14: Label + 17: 7(int) Load 16(gl_BaseInstanceARB) + 18: 6(bool) SGreaterThan 17 11 + Branch 15 + 15: Label + 19: 6(bool) Phi 12 5 18 14 + SelectionMerge 21 None + BranchConditional 19 20 46 + 20: Label + 38: 7(int) Load 37(gl_DrawIDARB) + 40: 7(int) SMod 38 39 + 42: 41(ptr) AccessChain 36(block) 11 11 40 + 43: 23(fvec4) Load 42 + 45: 44(ptr) AccessChain 29 11 + Store 45 43 + Branch 21 + 46: Label + 48: 7(int) Load 37(gl_DrawIDARB) + 49: 7(int) SMod 48 39 + 50: 41(ptr) AccessChain 36(block) 11 47 49 + 51: 23(fvec4) Load 50 + 52: 44(ptr) AccessChain 29 11 + Store 52 51 + Branch 21 + 21: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out index fb7c70a7..edda4a7b 100644 --- a/Test/baseResults/spv.specConstant.vert.out +++ b/Test/baseResults/spv.specConstant.vert.out @@ -61,6 +61,7 @@ Linked vertex stage: 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 @@ Linked vertex stage: 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 @@ Linked vertex stage: 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 @@ Linked vertex stage: 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 ea4c69a2..ab425583 100644 --- a/Test/baseResults/spv.specConstantOperations.vert.out +++ b/Test/baseResults/spv.specConstantOperations.vert.out @@ -7,9 +7,10 @@ Linked vertex stage: // 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 @@ Linked vertex stage: 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 @@ Linked vertex stage: 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 7c28e103..abff6834 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 @@ Linked fragment stage: 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.swizzleInversion.frag.out b/Test/baseResults/spv.swizzleInversion.frag.out new file mode 100755 index 00000000..6b922065 --- /dev/null +++ b/Test/baseResults/spv.swizzleInversion.frag.out @@ -0,0 +1,81 @@ +spv.swizzleInversion.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 46 + + Capability Shader + Capability InterpolationFunction + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 12 37 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + Name 4 "main" + Name 9 "v43" + Name 12 "in4" + Name 17 "v42" + Name 23 "v44" + Name 29 "v41" + Name 35 "v33" + Name 37 "in3" + Name 40 "v32" + Name 43 "v31" + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 3 + 8: TypePointer Function 7(fvec3) + 10: TypeVector 6(float) 4 + 11: TypePointer Input 10(fvec4) + 12(in4): 11(ptr) Variable Input + 15: TypeVector 6(float) 2 + 16: TypePointer Function 15(fvec2) + 18: TypeInt 32 1 + 19: 18(int) Constant 1 + 22: TypePointer Function 10(fvec4) + 24: 6(float) Constant 1073741824 + 25: 15(fvec2) ConstantComposite 24 24 + 28: TypePointer Function 6(float) + 30: TypeInt 32 0 + 31: 30(int) Constant 1 + 32: TypePointer Input 6(float) + 36: TypePointer Input 7(fvec3) + 37(in3): 36(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 9(v43): 8(ptr) Variable Function + 17(v42): 16(ptr) Variable Function + 23(v44): 22(ptr) Variable Function + 29(v41): 28(ptr) Variable Function + 35(v33): 8(ptr) Variable Function + 40(v32): 16(ptr) Variable Function + 43(v31): 28(ptr) Variable Function + 13: 10(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 12(in4) + 14: 7(fvec3) VectorShuffle 13 13 3 2 0 + Store 9(v43) 14 + 20: 10(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 12(in4) 19 + 21: 15(fvec2) VectorShuffle 20 20 2 0 + Store 17(v42) 21 + 26: 10(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 12(in4) 25 + 27: 10(fvec4) VectorShuffle 26 26 2 1 0 3 + Store 23(v44) 27 + 33: 32(ptr) AccessChain 12(in4) 31 + 34: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 33 25 + Store 29(v41) 34 + 38: 7(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 37(in3) + 39: 7(fvec3) VectorShuffle 38 38 1 2 0 + Store 35(v33) 39 + 41: 7(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 37(in3) 19 + 42: 15(fvec2) VectorShuffle 41 41 2 0 + Store 40(v32) 42 + 44: 32(ptr) AccessChain 12(in4) 31 + 45: 6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 44 25 + Store 43(v31) 45 + Return + FunctionEnd diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out index 7d934ff1..6682e7c2 100755 --- a/Test/baseResults/spv.uint.frag.out +++ b/Test/baseResults/spv.uint.frag.out @@ -7,12 +7,12 @@ Linked fragment stage: // 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 @@ Linked fragment stage: 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 @@ Linked fragment stage: 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 @@ Linked fragment stage: 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 @@ Linked fragment stage: 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/tokenLength.vert.out b/Test/baseResults/tokenLength.vert.out index 26dabf0c..11bdd4b5 100644 --- a/Test/baseResults/tokenLength.vert.out +++ b/Test/baseResults/tokenLength.vert.out @@ -2,10 +2,10 @@ tokenLength.vert ERROR: 0:9: '' : numeric literal too big ERROR: 0:10: '' : numeric literal too big ERROR: 0:13: '' : octal literal too big -ERROR: 0:14: '' : hexidecimal literal too big +ERROR: 0:14: '' : hexadecimal literal too big ERROR: 0:23: '' : float literal too long ERROR: 0:32: '' : name too long -ERROR: 0:33: '' : hexidecimal literal too big +ERROR: 0:33: '' : hexadecimal literal too big ERROR: 0:34: '' : numeric literal too long ERROR: 0:34: '' : octal literal too big ERROR: 0:35: '' : numeric literal too long diff --git a/Test/baseResults/uint.frag.out b/Test/baseResults/uint.frag.out index dbe9578d..1ee28254 100644 --- a/Test/baseResults/uint.frag.out +++ b/Test/baseResults/uint.frag.out @@ -113,7 +113,7 @@ ERROR: node is still EOpNull! 0:55 true case 0:56 move second child to first child (temp mediump 4-component vector of uint) 0:56 'c' (out mediump 4-component vector of uint) -0:56 texture (global lowp 4-component vector of uint) +0:56 texture (global lowp 4-component vector of uint, operation at highp) 0:56 'usampler' (uniform lowp usampler2D) 0:56 'tc' (smooth in highp 2-component vector of float) 0:57 Test condition and select (temp void) @@ -124,7 +124,7 @@ ERROR: node is still EOpNull! 0:57 true case 0:58 move second child to first child (temp mediump 4-component vector of uint) 0:58 'c' (out mediump 4-component vector of uint) -0:58 texture (global lowp 4-component vector of uint) +0:58 texture (global lowp 4-component vector of uint, operation at highp) 0:58 'usampler' (uniform lowp usampler2D) 0:58 add (temp highp 2-component vector of float) 0:58 'tc' (smooth in highp 2-component vector of float) @@ -139,7 +139,7 @@ ERROR: node is still EOpNull! 0:59 true case 0:60 move second child to first child (temp mediump 4-component vector of uint) 0:60 'c' (out mediump 4-component vector of uint) -0:60 texture (global lowp 4-component vector of uint) +0:60 texture (global lowp 4-component vector of uint, operation at highp) 0:60 'usampler' (uniform lowp usampler2D) 0:60 subtract (temp highp 2-component vector of float) 0:60 'tc' (smooth in highp 2-component vector of float) @@ -412,7 +412,7 @@ ERROR: node is still EOpNull! 0:55 true case 0:56 move second child to first child (temp mediump 4-component vector of uint) 0:56 'c' (out mediump 4-component vector of uint) -0:56 texture (global lowp 4-component vector of uint) +0:56 texture (global lowp 4-component vector of uint, operation at highp) 0:56 'usampler' (uniform lowp usampler2D) 0:56 'tc' (smooth in highp 2-component vector of float) 0:57 Test condition and select (temp void) @@ -423,7 +423,7 @@ ERROR: node is still EOpNull! 0:57 true case 0:58 move second child to first child (temp mediump 4-component vector of uint) 0:58 'c' (out mediump 4-component vector of uint) -0:58 texture (global lowp 4-component vector of uint) +0:58 texture (global lowp 4-component vector of uint, operation at highp) 0:58 'usampler' (uniform lowp usampler2D) 0:58 add (temp highp 2-component vector of float) 0:58 'tc' (smooth in highp 2-component vector of float) @@ -438,7 +438,7 @@ ERROR: node is still EOpNull! 0:59 true case 0:60 move second child to first child (temp mediump 4-component vector of uint) 0:60 'c' (out mediump 4-component vector of uint) -0:60 texture (global lowp 4-component vector of uint) +0:60 texture (global lowp 4-component vector of uint, operation at highp) 0:60 'usampler' (uniform lowp usampler2D) 0:60 subtract (temp highp 2-component vector of float) 0:60 'tc' (smooth in highp 2-component vector of float) diff --git a/Test/baseResults/vulkan.ast.vert.out b/Test/baseResults/vulkan.ast.vert.out index 31ac4940..f245585a 100755 --- a/Test/baseResults/vulkan.ast.vert.out +++ b/Test/baseResults/vulkan.ast.vert.out @@ -7,76 +7,76 @@ Shader version: 450 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 @@ Shader version: 450 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 @@ Shader version: 450 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 @@ Shader version: 450 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 fe8b045b..d4da9190 100644 --- a/Test/baseResults/vulkan.frag.out +++ b/Test/baseResults/vulkan.frag.out @@ -14,7 +14,7 @@ ERROR: 0:25: 'sampler2DShadow' : sampler-constructor second argument presence of 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,7 +33,14 @@ ERROR: 0:67: 'uniform' : no qualifiers allowed for function return 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 -ERROR: 33 compilation errors. No code generated. +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 +ERROR: 0:94: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type 'temp sampler2D' and a right operand of type 'temp sampler2D' (or there is no acceptable conversion) +ERROR: 0:94: 'call argument' : sampler constructor must appear at point of use +ERROR: 38 compilation errors. No code generated. diff --git a/Test/baseResults/vulkan.vert.out b/Test/baseResults/vulkan.vert.out index 351e6f1b..5aeaa74c 100644 --- a/Test/baseResults/vulkan.vert.out +++ b/Test/baseResults/vulkan.vert.out @@ -15,7 +15,7 @@ ERROR: 0:15: 'constant_id' : can only be applied to a scalar 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/cppBad.vert b/Test/cppBad.vert new file mode 100644 index 00000000..49600f91 --- /dev/null +++ b/Test/cppBad.vert @@ -0,0 +1,5 @@ +#define m#0# +#if m + +#define n() +int n" \ No newline at end of file diff --git a/Test/cppIndent.vert b/Test/cppIndent.vert index 49ec8ba3..41bb12e4 100644 --- a/Test/cppIndent.vert +++ b/Test/cppIndent.vert @@ -58,4 +58,4 @@ sum += 900000000.0; #define FUNC(a,b) a+b // needs to be last test in file due to syntax error -void foo986(){ FUNC( (((2)))), 4); } // ERROR, too many ) +void foo986(){ FUNC( (((2)))), 4); } // ERROR, too few arguments ) diff --git a/Test/hlsl.amend.frag b/Test/hlsl.amend.frag new file mode 100755 index 00000000..c9fd69bd --- /dev/null +++ b/Test/hlsl.amend.frag @@ -0,0 +1,28 @@ +float4 a; +float b; + +void f1() +{ + a * b; +} + +float3 c; + +void f2() +{ + a.x + b + c.x; +} + +void f3() +{ + c; +} + +int d; + +void f4() +{ + d * a; +} + +int e; \ No newline at end of file diff --git a/Test/hlsl.array.flatten.frag b/Test/hlsl.array.flatten.frag new file mode 100644 index 00000000..987ce1bf --- /dev/null +++ b/Test/hlsl.array.flatten.frag @@ -0,0 +1,38 @@ + +// uniform Texture1D g_tex3[3][2]; // TODO: legal in HLSL, but we don't handle it yet. + +uniform Texture1D g_tex[3]; +uniform Texture1D g_tex_explicit[3] : register(t1); + +SamplerState g_samp[3]; +SamplerState g_samp_explicit[3] : register(s5); + +uniform float3x3 g_mats[4]; +uniform float3x3 g_mats_explicit[4] : register(b10); +uniform float g_floats[4]; + +// uniform float g_floats[4] = { 10, 11, 12, 13 }; // TODO: ... add when initializer lists can be flattened. + +float4 TestFn1() +{ + return g_tex[1].Sample(g_samp[1], 0.2); +} + +float4 TestFn2(Texture1D l_tex[3], SamplerState l_samp[3]) +{ + return l_tex[2].Sample(l_samp[2], 0.2); +} + +static int not_flattened_a[5] = { 1, 2, 3, 4, 5 }; + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +void main(out PS_OUTPUT ps_output) +{ + // test flattening for local assignment initialization + SamplerState local_sampler_array[3] = g_samp; + Texture1D local_texture_array[3] = g_tex; + float local_float_array[4] = g_floats; + + ps_output.color = TestFn1() + TestFn2(g_tex, g_samp); +} diff --git a/Test/hlsl.array.implicit-size.frag b/Test/hlsl.array.implicit-size.frag new file mode 100644 index 00000000..78a9283d --- /dev/null +++ b/Test/hlsl.array.implicit-size.frag @@ -0,0 +1,31 @@ + +// array size from initializer +static float g_array [ ] = { 1, 2, 3, 4, 5 }; + +// Unused: array size from initializer +static float g_array_unused [ ] = { 1, 2, 3, 4, 5, 6, 7 }; + +// Test initializer sizing for arrayed structs +static struct mystruct { + int i; + float f; +} g_mystruct[] = { + { 1, 2.0 }, + { 3, 4.0 }, +}; + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +// INVALID: implicit size requires an initializer expression. +// uniform float bad[]; + +// INVALID: function parameters cannot be implicitly sized +// void BadFunction(int a[]) { } + +void main(out PS_OUTPUT ps_output) +{ + // local array sized from initializers + float l_array[] = { 1, 2, 3 }; + + ps_output.color = g_array[0] + g_array[4] + l_array[1] + g_mystruct[0].f + g_array[idx]; +} diff --git a/Test/hlsl.array.multidim.frag b/Test/hlsl.array.multidim.frag new file mode 100644 index 00000000..524a8896 --- /dev/null +++ b/Test/hlsl.array.multidim.frag @@ -0,0 +1,20 @@ + +float float_array[5][4][3]; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +PS_OUTPUT main() +{ + float4 float4_array_1[2][3]; + float4 float4_array_2[5][3]; + + float4_array_1[1][2] = float_array[2][3][1]; + float4_array_2[1] = float4_array_1[0]; + + PS_OUTPUT psout; + psout.Color = float4_array_1[1][2]; + return psout; +} diff --git a/Test/hlsl.attribute.frag b/Test/hlsl.attribute.frag index 25c72d46..9ff8541c 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.basic.comp b/Test/hlsl.basic.comp new file mode 100644 index 00000000..8a65a596 --- /dev/null +++ b/Test/hlsl.basic.comp @@ -0,0 +1,6 @@ +groupshared float4 a[100]; + +void main(int dti : SV_DispatchThreadID) +{ + dti; +} diff --git a/Test/hlsl.buffer.frag b/Test/hlsl.buffer.frag new file mode 100644 index 00000000..b93dcd31 --- /dev/null +++ b/Test/hlsl.buffer.frag @@ -0,0 +1,32 @@ +cbuffer { + float4 v1; +}; + +tbuffer { + float4 v2; +}; + +cbuffer cbufName : register(b2, space10) { + float4 v3; + int i3 : packoffset(c1.y); +}; + +tbuffer tbufName : register(b8) { + float4 v4 : packoffset(c1); + int i4 : packoffset(c3); + float f1 : packoffset(c3.w); + float f3 : packoffset(c4.x); + float f4 : packoffset(c4.y); + float f5 : packoffset(c4.z); + float f6 : packoffset(c); + float f7; + float3x4 m1; + row_major float3x4 m2; + column_major float3x4 m3; + float3x4 m4; +}; + +float4 PixelShaderFunction(float4 input) : COLOR0 +{ + return input + v1 + v2 + v3 + v4; +} diff --git a/Test/hlsl.calculatelod.dx10.frag b/Test/hlsl.calculatelod.dx10.frag new file mode 100644 index 00000000..0fb76072 --- /dev/null +++ b/Test/hlsl.calculatelod.dx10.frag @@ -0,0 +1,44 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // LOD queries do not pass array level in coordinate. + float txval10 = g_tTex1df4a . CalculateLevelOfDetail(g_sSamp, 0.1); + float txval11 = g_tTex1di4a . CalculateLevelOfDetail(g_sSamp, 0.2); + float txval12 = g_tTex1du4a . CalculateLevelOfDetail(g_sSamp, 0.3); + + float txval20 = g_tTex2df4a . CalculateLevelOfDetail(g_sSamp, float2(0.1, 0.2)); + float txval21 = g_tTex2di4a . CalculateLevelOfDetail(g_sSamp, float2(0.3, 0.4)); + float txval22 = g_tTex2du4a . CalculateLevelOfDetail(g_sSamp, float2(0.5, 0.6)); + + float txval40 = g_tTexcdf4a . CalculateLevelOfDetail(g_sSamp, float3(0.1, 0.2, 0.3)); + float txval41 = g_tTexcdi4a . CalculateLevelOfDetail(g_sSamp, float3(0.4, 0.5, 0.6)); + float txval42 = g_tTexcdu4a . CalculateLevelOfDetail(g_sSamp, float3(0.7, 0.8, 0.9)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.calculatelodunclamped.dx10.frag b/Test/hlsl.calculatelodunclamped.dx10.frag new file mode 100644 index 00000000..4c79aed8 --- /dev/null +++ b/Test/hlsl.calculatelodunclamped.dx10.frag @@ -0,0 +1,44 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // LOD queries do not pass array level in coordinate. + float txval10 = g_tTex1df4a . CalculateLevelOfDetailUnclamped(g_sSamp, 0.1); + float txval11 = g_tTex1di4a . CalculateLevelOfDetailUnclamped(g_sSamp, 0.2); + float txval12 = g_tTex1du4a . CalculateLevelOfDetailUnclamped(g_sSamp, 0.3); + + float txval20 = g_tTex2df4a . CalculateLevelOfDetailUnclamped(g_sSamp, float2(0.1, 0.2)); + float txval21 = g_tTex2di4a . CalculateLevelOfDetailUnclamped(g_sSamp, float2(0.3, 0.4)); + float txval22 = g_tTex2du4a . CalculateLevelOfDetailUnclamped(g_sSamp, float2(0.5, 0.6)); + + float txval40 = g_tTexcdf4a . CalculateLevelOfDetailUnclamped(g_sSamp, float3(0.1, 0.2, 0.3)); + float txval41 = g_tTexcdi4a . CalculateLevelOfDetailUnclamped(g_sSamp, float3(0.4, 0.5, 0.6)); + float txval42 = g_tTexcdu4a . CalculateLevelOfDetailUnclamped(g_sSamp, float3(0.7, 0.8, 0.9)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.conditional.frag b/Test/hlsl.conditional.frag new file mode 100644 index 00000000..128c5931 --- /dev/null +++ b/Test/hlsl.conditional.frag @@ -0,0 +1,16 @@ +float4 PixelShaderFunction(float4 input) : COLOR0 +{ + int a = 1 < 2 ? 3 < 4 ? 5 : 6 : 7; + int b = 1 < 2 ? 3 > 4 ? 5 : 6 : 7; + int c = 1 > 2 ? 3 > 4 ? 5 : 6 : 7; + int d = 1 > 2 ? 3 < 4 ? 5 : 6 : 7; + float4 ret = a * input + + b * input + + c * input + + d * input; + int e; + e = a = b ? c = d : 10, b = a ? d = c : 11; + float4 f; + f = ret.x < input.y ? c * input : d * input; + return e * ret + f; +} diff --git a/Test/hlsl.constructexpr.frag b/Test/hlsl.constructexpr.frag new file mode 100644 index 00000000..7048f62c --- /dev/null +++ b/Test/hlsl.constructexpr.frag @@ -0,0 +1,17 @@ +struct PS_OUTPUT { float4 color : SV_Target0; }; + +PS_OUTPUT main() +{ + // Evaluates to a sequence: 3, 4, 5, 6, 7, 8, and a float2(9,10), float2(11,12) sequence + (int(3)); + (int(3) + int(1)); + (int(3) + int(1) + int(1)); + (((int(6)))); + (int(7.0)); + ((int((2)) ? 8 : 8)); + (float2(9, 10), float2(11, 12)); + + PS_OUTPUT ps_output; + ps_output.color = 1.0; + return ps_output; +} diff --git a/Test/hlsl.depthGreater.frag b/Test/hlsl.depthGreater.frag new file mode 100644 index 00000000..ca41f089 --- /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 00000000..aca7dbb8 --- /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 e8b52679..7d9271c9 100644 --- a/Test/hlsl.discard.frag +++ b/Test/hlsl.discard.frag @@ -4,7 +4,7 @@ void foo(float f) 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 00000000..e15955dd --- /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 00000000..27b4dd64 --- /dev/null +++ b/Test/hlsl.entry-out.frag @@ -0,0 +1,23 @@ +struct OutParam { + float2 v; + int2 i; +}; + +void fun(out OutParam op) +{ + op.v = float2(0.4); + op.i = int2(7); +} + +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; + fun(out3); + + return out1; +} diff --git a/Test/hlsl.flatten.return.frag b/Test/hlsl.flatten.return.frag new file mode 100644 index 00000000..c633e679 --- /dev/null +++ b/Test/hlsl.flatten.return.frag @@ -0,0 +1,18 @@ + +struct PS_OUTPUT +{ + float4 color : SV_Target0; + float other_struct_member1; + float other_struct_member2; + float other_struct_member3; +}; + +PS_OUTPUT Func1() +{ + return PS_OUTPUT(float4(1), 2, 3, 4); +} + +PS_OUTPUT main() +{ + return Func1(); +} diff --git a/Test/hlsl.float1.frag b/Test/hlsl.float1.frag index 6247e77b..f9c0a6e0 100644 --- a/Test/hlsl.float1.frag +++ b/Test/hlsl.float1.frag @@ -1,5 +1,5 @@ -float1 f1 = float1(1.0); -float scalar = 2.0; +static float1 f1 = float1(1.0); +static float scalar = 2.0; float1 ShaderFunction(float1 inFloat1 : COLOR, float inScalar) : COLOR0 { diff --git a/Test/hlsl.float4.frag b/Test/hlsl.float4.frag index df871225..b541f5d3 100644 --- a/Test/hlsl.float4.frag +++ b/Test/hlsl.float4.frag @@ -1,9 +1,9 @@ float4 AmbientColor = float4(1, 0.5, 0, 1); bool ff1 : SV_IsFrontFace; -float4 ff2 : packoffset(c0.y); -float4 ff3 : packoffset(c0.y) : register(ps_5_0, s[0]) ; -float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s[0]) ; +float ff2 : packoffset(c1.y); +float4 ff3 : packoffset(c2) : register(ps_5_0, s0) ; +float4 ff4 : VPOS : packoffset(c3) : register(ps_5_0, s1) ; float4 ShaderFunction(float4 input) : COLOR0 { diff --git a/Test/hlsl.gather.array.dx10.frag b/Test/hlsl.gather.array.dx10.frag new file mode 100644 index 00000000..788c333b --- /dev/null +++ b/Test/hlsl.gather.array.dx10.frag @@ -0,0 +1,43 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // No 1D gathers + + float4 txval20 = g_tTex2df4a . Gather(g_sSamp, float3(0.1, 0.2, 0.3)); + int4 txval21 = g_tTex2di4a . Gather(g_sSamp, float3(0.3, 0.4, 0.5)); + uint4 txval22 = g_tTex2du4a . Gather(g_sSamp, float3(0.5, 0.6, 0.7)); + + // no 3D gathers + + float4 txval40 = g_tTexcdf4a . Gather(g_sSamp, float4(0.1, 0.2, 0.3, 0.4)); + int4 txval41 = g_tTexcdi4a . Gather(g_sSamp, float4(0.4, 0.5, 0.6, 0.7)); + uint4 txval42 = g_tTexcdu4a . Gather(g_sSamp, float4(0.7, 0.8, 0.9, 1.0)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.gather.basic.dx10.frag b/Test/hlsl.gather.basic.dx10.frag new file mode 100644 index 00000000..be0cd31f --- /dev/null +++ b/Test/hlsl.gather.basic.dx10.frag @@ -0,0 +1,48 @@ +SamplerState g_sSamp : register(s0); +uniform sampler2D g_sSamp2d; + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // no 1D gathers + + float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float2(0.1, 0.2)); + int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float2(0.3, 0.4)); + uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float2(0.5, 0.6)); + + // no 3D gathers + + float4 txval40 = g_tTexcdf4 . Gather(g_sSamp, float3(0.1, 0.2, 0.3)); + int4 txval41 = g_tTexcdi4 . Gather(g_sSamp, float3(0.4, 0.5, 0.6)); + uint4 txval42 = g_tTexcdu4 . Gather(g_sSamp, float3(0.7, 0.8, 0.9)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.gather.basic.dx10.vert b/Test/hlsl.gather.basic.dx10.vert new file mode 100644 index 00000000..4996f18c --- /dev/null +++ b/Test/hlsl.gather.basic.dx10.vert @@ -0,0 +1,46 @@ +SamplerState g_sSamp : register(s0); +uniform sampler2D g_sSamp2d; + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct VS_OUTPUT +{ + float4 Pos : SV_Position; +}; + +VS_OUTPUT main() +{ + VS_OUTPUT vsout; + + // no 1D gathers + + float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float2(0.1, 0.2)); + int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float2(0.3, 0.4)); + uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float2(0.5, 0.6)); + + // no 3D gathers + + float4 txval40 = g_tTexcdf4 . Gather(g_sSamp, float3(0.1, 0.2, 0.3)); + int4 txval41 = g_tTexcdi4 . Gather(g_sSamp, float3(0.4, 0.5, 0.6)); + uint4 txval42 = g_tTexcdu4 . Gather(g_sSamp, float3(0.7, 0.8, 0.9)); + + vsout.Pos = float4(0,0,0,0); + + return vsout; +} diff --git a/Test/hlsl.gather.offset.dx10.frag b/Test/hlsl.gather.offset.dx10.frag new file mode 100644 index 00000000..4d095c0e --- /dev/null +++ b/Test/hlsl.gather.offset.dx10.frag @@ -0,0 +1,44 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // no 1D Gathers + + float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float2(0.1, 0.2), int2(1,0)); + int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float2(0.3, 0.4), int2(1,1)); + uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float2(0.5, 0.6), int2(1,-1)); + + // no 3D gathers + // No Cube offset gathers + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.gather.offsetarray.dx10.frag b/Test/hlsl.gather.offsetarray.dx10.frag new file mode 100644 index 00000000..5cc92525 --- /dev/null +++ b/Test/hlsl.gather.offsetarray.dx10.frag @@ -0,0 +1,36 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4; +Texture1DArray g_tTex1du4; + +Texture2DArray g_tTex2df4; +Texture2DArray g_tTex2di4; +Texture2DArray g_tTex2du4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // No 1D gathers + + float4 txval20 = g_tTex2df4 . Gather(g_sSamp, float3(0.1, 0.2, 0.3), int2(1,0)); + int4 txval21 = g_tTex2di4 . Gather(g_sSamp, float3(0.3, 0.4, 0.4), int2(1,1)); + uint4 txval22 = g_tTex2du4 . Gather(g_sSamp, float3(0.5, 0.6, 0.7), int2(1,-1)); + + // No 3D gathers + // No Cube offset gathers + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.gatherRGBA.array.dx10.frag b/Test/hlsl.gatherRGBA.array.dx10.frag new file mode 100644 index 00000000..279b6d60 --- /dev/null +++ b/Test/hlsl.gatherRGBA.array.dx10.frag @@ -0,0 +1,71 @@ +SamplerState g_sSamp : register(s0); +uniform sampler2D g_sSamp2d; + +uniform Texture1DArray g_tTex1df4a : register(t0); +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform float c1; +uniform float2 c2; +uniform float3 c3; +uniform float4 c4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // no 1D gathers + + float4 txval00 = g_tTex2df4a . GatherRed(g_sSamp, c3); + int4 txval01 = g_tTex2di4a . GatherRed(g_sSamp, c3); + uint4 txval02 = g_tTex2du4a . GatherRed(g_sSamp, c3); + + float4 txval10 = g_tTex2df4a . GatherGreen(g_sSamp, c3); + int4 txval11 = g_tTex2di4a . GatherGreen(g_sSamp, c3); + uint4 txval12 = g_tTex2du4a . GatherGreen(g_sSamp, c3); + + float4 txval20 = g_tTex2df4a . GatherBlue(g_sSamp, c3); + int4 txval21 = g_tTex2di4a . GatherBlue(g_sSamp, c3); + uint4 txval22 = g_tTex2du4a . GatherBlue(g_sSamp, c3); + + float4 txval30 = g_tTex2df4a . GatherAlpha(g_sSamp, c3); + int4 txval31 = g_tTex2di4a . GatherAlpha(g_sSamp, c3); + uint4 txval32 = g_tTex2du4a . GatherAlpha(g_sSamp, c3); + + // no 3D gathers + + float4 txval40 = g_tTexcdf4a . GatherRed(g_sSamp, c4); + int4 txval41 = g_tTexcdi4a . GatherRed(g_sSamp, c4); + uint4 txval42 = g_tTexcdu4a . GatherRed(g_sSamp, c4); + + float4 txval50 = g_tTexcdf4a . GatherGreen(g_sSamp, c4); + int4 txval51 = g_tTexcdi4a . GatherGreen(g_sSamp, c4); + uint4 txval52 = g_tTexcdu4a . GatherGreen(g_sSamp, c4); + + float4 txval60 = g_tTexcdf4a . GatherBlue(g_sSamp, c4); + int4 txval61 = g_tTexcdi4a . GatherBlue(g_sSamp, c4); + uint4 txval62 = g_tTexcdu4a . GatherBlue(g_sSamp, c4); + + float4 txval70 = g_tTexcdf4a . GatherAlpha(g_sSamp, c4); + int4 txval71 = g_tTexcdi4a . GatherAlpha(g_sSamp, c4); + uint4 txval72 = g_tTexcdu4a . GatherAlpha(g_sSamp, c4); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.gatherRGBA.basic.dx10.frag b/Test/hlsl.gatherRGBA.basic.dx10.frag new file mode 100644 index 00000000..17fae193 --- /dev/null +++ b/Test/hlsl.gatherRGBA.basic.dx10.frag @@ -0,0 +1,77 @@ +SamplerState g_sSamp : register(s0); +uniform sampler2D g_sSamp2d; + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform float c1; +uniform float2 c2; +uniform float3 c3; +uniform float4 c4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // no 1D gathers + + float4 txval00 = g_tTex2df4 . GatherRed(g_sSamp, c2); + int4 txval01 = g_tTex2di4 . GatherRed(g_sSamp, c2); + uint4 txval02 = g_tTex2du4 . GatherRed(g_sSamp, c2); + + float4 txval10 = g_tTex2df4 . GatherGreen(g_sSamp, c2); + int4 txval11 = g_tTex2di4 . GatherGreen(g_sSamp, c2); + uint4 txval12 = g_tTex2du4 . GatherGreen(g_sSamp, c2); + + float4 txval20 = g_tTex2df4 . GatherBlue(g_sSamp, c2); + int4 txval21 = g_tTex2di4 . GatherBlue(g_sSamp, c2); + uint4 txval22 = g_tTex2du4 . GatherBlue(g_sSamp, c2); + + float4 txval30 = g_tTex2df4 . GatherAlpha(g_sSamp, c2); + int4 txval31 = g_tTex2di4 . GatherAlpha(g_sSamp, c2); + uint4 txval32 = g_tTex2du4 . GatherAlpha(g_sSamp, c2); + + // no 3D gathers + + float4 txval40 = g_tTexcdf4 . GatherRed(g_sSamp, c3); + int4 txval41 = g_tTexcdi4 . GatherRed(g_sSamp, c3); + uint4 txval42 = g_tTexcdu4 . GatherRed(g_sSamp, c3); + + float4 txval50 = g_tTexcdf4 . GatherGreen(g_sSamp, c3); + int4 txval51 = g_tTexcdi4 . GatherGreen(g_sSamp, c3); + uint4 txval52 = g_tTexcdu4 . GatherGreen(g_sSamp, c3); + + float4 txval60 = g_tTexcdf4 . GatherBlue(g_sSamp, c3); + int4 txval61 = g_tTexcdi4 . GatherBlue(g_sSamp, c3); + uint4 txval62 = g_tTexcdu4 . GatherBlue(g_sSamp, c3); + + float4 txval70 = g_tTexcdf4 . GatherAlpha(g_sSamp, c3); + int4 txval71 = g_tTexcdi4 . GatherAlpha(g_sSamp, c3); + uint4 txval72 = g_tTexcdu4 . GatherAlpha(g_sSamp, c3); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.gatherRGBA.offset.dx10.frag b/Test/hlsl.gatherRGBA.offset.dx10.frag new file mode 100644 index 00000000..a8909b4a --- /dev/null +++ b/Test/hlsl.gatherRGBA.offset.dx10.frag @@ -0,0 +1,116 @@ +SamplerState g_sSamp : register(s0); +uniform sampler2D g_sSamp2d; + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform float c1; +uniform float2 c2; +uniform float3 c3; +uniform float4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + uint status; + + // no 1D gathers + + float4 txval001 = g_tTex2df4 . GatherRed(g_sSamp, c2, o2); + int4 txval011 = g_tTex2di4 . GatherRed(g_sSamp, c2, o2); + uint4 txval021 = g_tTex2du4 . GatherRed(g_sSamp, c2, o2); + + float4 txval004 = g_tTex2df4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2); + int4 txval014 = g_tTex2di4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2); + uint4 txval024 = g_tTex2du4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2); + + // float4 txval00s = g_tTex2df4 . GatherRed(g_sSamp, c2, o2, status); + // int4 txval01s = g_tTex2di4 . GatherRed(g_sSamp, c2, o2, status); + // uint4 txval02s = g_tTex2du4 . GatherRed(g_sSamp, c2, o2, status); + + // float4 txval004s = g_tTex2df4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2, status); + // int4 txval014s = g_tTex2di4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2, status); + // uint4 txval024s = g_tTex2du4 . GatherRed(g_sSamp, c2, o2, o2, o2, o2, status); + + float4 txval101 = g_tTex2df4 . GatherGreen(g_sSamp, c2, o2); + int4 txval111 = g_tTex2di4 . GatherGreen(g_sSamp, c2, o2); + uint4 txval121 = g_tTex2du4 . GatherGreen(g_sSamp, c2, o2); + + float4 txval104 = g_tTex2df4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2); + int4 txval114 = g_tTex2di4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2); + uint4 txval124 = g_tTex2du4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2); + + // float4 txval10s = g_tTex2df4 . GatherGreen(g_sSamp, c2, o2, status); + // int4 txval11s = g_tTex2di4 . GatherGreen(g_sSamp, c2, o2, status); + // uint4 txval12s = g_tTex2du4 . GatherGreen(g_sSamp, c2, o2, status); + + // float4 txval104 = g_tTex2df4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2, status); + // int4 txval114 = g_tTex2di4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2, status); + // uint4 txval124 = g_tTex2du4 . GatherGreen(g_sSamp, c2, o2, o2, o2, o2, status); + + float4 txval201 = g_tTex2df4 . GatherBlue(g_sSamp, c2, o2); + int4 txval211 = g_tTex2di4 . GatherBlue(g_sSamp, c2, o2); + uint4 txval221 = g_tTex2du4 . GatherBlue(g_sSamp, c2, o2); + + float4 txval204 = g_tTex2df4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2); + int4 txval214 = g_tTex2di4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2); + uint4 txval224 = g_tTex2du4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2); + + // float4 txval204s = g_tTex2df4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2, status); + // int4 txval214s = g_tTex2di4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2, status); + // uint4 txval224s = g_tTex2du4 . GatherBlue(g_sSamp, c2, o2, o2, o2, o2, status); + + // float4 txval20s = g_tTex2df4 . GatherBlue(g_sSamp, c2, o2, status); + // int4 txval21s = g_tTex2di4 . GatherBlue(g_sSamp, c2, o2, status); + // uint4 txval22s = g_tTex2du4 . GatherBlue(g_sSamp, c2, o2, status); + + float4 txval301 = g_tTex2df4 . GatherAlpha(g_sSamp, c2, o2); + int4 txval311 = g_tTex2di4 . GatherAlpha(g_sSamp, c2, o2); + uint4 txval321 = g_tTex2du4 . GatherAlpha(g_sSamp, c2, o2); + + float4 txval304 = g_tTex2df4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2); + int4 txval314 = g_tTex2di4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2); + uint4 txval324 = g_tTex2du4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2); + + // float4 txval304s = g_tTex2df4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2, status); + // int4 txval314s = g_tTex2di4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2, status); + // uint4 txval324s = g_tTex2du4 . GatherAlpha(g_sSamp, c2, o2, o2, o2, o2, status); + + // float4 txval30s = g_tTex2df4 . GatherAlpha(g_sSamp, c2, o2, status); + // int4 txval31s = g_tTex2di4 . GatherAlpha(g_sSamp, c2, o2, status); + // uint4 txval32s = g_tTex2du4 . GatherAlpha(g_sSamp, c2, o2, status); + + // no 3D gathers with offset + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.gatherRGBA.offsetarray.dx10.frag b/Test/hlsl.gatherRGBA.offsetarray.dx10.frag new file mode 100644 index 00000000..ca32f56b --- /dev/null +++ b/Test/hlsl.gatherRGBA.offsetarray.dx10.frag @@ -0,0 +1,110 @@ +SamplerState g_sSamp : register(s0); +uniform sampler2D g_sSamp2d; + +uniform Texture1DArray g_tTex1df4a : register(t0); +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform float c1; +uniform float2 c2; +uniform float3 c3; +uniform float4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + uint status; + + // no 1D gathers + + float4 txval001 = g_tTex2df4a . GatherRed(g_sSamp, c3, o2); + int4 txval011 = g_tTex2di4a . GatherRed(g_sSamp, c3, o2); + uint4 txval021 = g_tTex2du4a . GatherRed(g_sSamp, c3, o2); + + float4 txval004 = g_tTex2df4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2); + int4 txval014 = g_tTex2di4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2); + uint4 txval024 = g_tTex2du4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2); + + // float4 txval00s = g_tTex2df4a . GatherRed(g_sSamp, c3, o2, status); + // int4 txval01s = g_tTex2di4a . GatherRed(g_sSamp, c3, o2, status); + // uint4 txval02s = g_tTex2du4a . GatherRed(g_sSamp, c3, o2, status); + + // float4 txval004s = g_tTex2df4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2, status); + // int4 txval014s = g_tTex2di4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2, status); + // uint4 txval024s = g_tTex2du4a . GatherRed(g_sSamp, c3, o2, o2, o2, o2, status); + + float4 txval101 = g_tTex2df4a . GatherGreen(g_sSamp, c3, o2); + int4 txval111 = g_tTex2di4a . GatherGreen(g_sSamp, c3, o2); + uint4 txval121 = g_tTex2du4a . GatherGreen(g_sSamp, c3, o2); + + float4 txval104 = g_tTex2df4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2); + int4 txval114 = g_tTex2di4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2); + uint4 txval124 = g_tTex2du4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2); + + // float4 txval10s = g_tTex2df4a . GatherGreen(g_sSamp, c3, o2, status); + // int4 txval11s = g_tTex2di4a . GatherGreen(g_sSamp, c3, o2, status); + // uint4 txval12s = g_tTex2du4a . GatherGreen(g_sSamp, c3, o2, status); + + // float4 txval104 = g_tTex2df4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2, status); + // int4 txval114 = g_tTex2di4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2, status); + // uint4 txval124 = g_tTex2du4a . GatherGreen(g_sSamp, c3, o2, o2, o2, o2, status); + + float4 txval201 = g_tTex2df4a . GatherBlue(g_sSamp, c3, o2); + int4 txval211 = g_tTex2di4a . GatherBlue(g_sSamp, c3, o2); + uint4 txval221 = g_tTex2du4a . GatherBlue(g_sSamp, c3, o2); + + float4 txval204 = g_tTex2df4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2); + int4 txval214 = g_tTex2di4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2); + uint4 txval224 = g_tTex2du4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2); + + // float4 txval204s = g_tTex2df4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2, status); + // int4 txval214s = g_tTex2di4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2, status); + // uint4 txval224s = g_tTex2du4a . GatherBlue(g_sSamp, c3, o2, o2, o2, o2, status); + + // float4 txval20s = g_tTex2df4a . GatherBlue(g_sSamp, c3, o2, status); + // int4 txval21s = g_tTex2di4a . GatherBlue(g_sSamp, c3, o2, status); + // uint4 txval22s = g_tTex2du4a . GatherBlue(g_sSamp, c3, o2, status); + + float4 txval301 = g_tTex2df4a . GatherAlpha(g_sSamp, c3, o2); + int4 txval311 = g_tTex2di4a . GatherAlpha(g_sSamp, c3, o2); + uint4 txval321 = g_tTex2du4a . GatherAlpha(g_sSamp, c3, o2); + + float4 txval304 = g_tTex2df4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2); + int4 txval314 = g_tTex2di4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2); + uint4 txval324 = g_tTex2du4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2); + + // float4 txval304s = g_tTex2df4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2, status); + // int4 txval314s = g_tTex2di4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2, status); + // uint4 txval324s = g_tTex2du4a . GatherAlpha(g_sSamp, c3, o2, o2, o2, o2, status); + + // float4 txval30s = g_tTex2df4a . GatherAlpha(g_sSamp, c3, o2, status); + // int4 txval31s = g_tTex2di4a . GatherAlpha(g_sSamp, c3, o2, status); + // uint4 txval32s = g_tTex2du4a . GatherAlpha(g_sSamp, c3, o2, status); + + // no 3D gathers with offset + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.gathercmpRGBA.array.dx10.frag b/Test/hlsl.gathercmpRGBA.array.dx10.frag new file mode 100644 index 00000000..4ed7f4b4 --- /dev/null +++ b/Test/hlsl.gathercmpRGBA.array.dx10.frag @@ -0,0 +1,70 @@ +SamplerComparisonState g_sSampCmp : register(s0); + +uniform Texture1DArray g_tTex1df4a : register(t0); +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform float c1; +uniform float2 c2; +uniform float3 c3; +uniform float4 c4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // no 1D gathers + + float4 txval00 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, .75); + int4 txval01 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, .75); + uint4 txval02 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, .75); + + float4 txval10 = g_tTex2df4a . GatherCmpGreen(g_sSampCmp, c3, .75); + int4 txval11 = g_tTex2di4a . GatherCmpGreen(g_sSampCmp, c3, .75); + uint4 txval12 = g_tTex2du4a . GatherCmpGreen(g_sSampCmp, c3, .75); + + float4 txval20 = g_tTex2df4a . GatherCmpBlue(g_sSampCmp, c3, .75); + int4 txval21 = g_tTex2di4a . GatherCmpBlue(g_sSampCmp, c3, .75); + uint4 txval22 = g_tTex2du4a . GatherCmpBlue(g_sSampCmp, c3, .75); + + float4 txval30 = g_tTex2df4a . GatherCmpAlpha(g_sSampCmp, c3, .75); + int4 txval31 = g_tTex2di4a . GatherCmpAlpha(g_sSampCmp, c3, .75); + uint4 txval32 = g_tTex2du4a . GatherCmpAlpha(g_sSampCmp, c3, .75); + + // no 3D gathers + + float4 txval40 = g_tTexcdf4a . GatherCmpRed(g_sSampCmp, c4, .75); + int4 txval41 = g_tTexcdi4a . GatherCmpRed(g_sSampCmp, c4, .75); + uint4 txval42 = g_tTexcdu4a . GatherCmpRed(g_sSampCmp, c4, .75); + + float4 txval50 = g_tTexcdf4a . GatherCmpGreen(g_sSampCmp, c4, .75); + int4 txval51 = g_tTexcdi4a . GatherCmpGreen(g_sSampCmp, c4, .75); + uint4 txval52 = g_tTexcdu4a . GatherCmpGreen(g_sSampCmp, c4, .75); + + float4 txval60 = g_tTexcdf4a . GatherCmpBlue(g_sSampCmp, c4, .75); + int4 txval61 = g_tTexcdi4a . GatherCmpBlue(g_sSampCmp, c4, .75); + uint4 txval62 = g_tTexcdu4a . GatherCmpBlue(g_sSampCmp, c4, .75); + + float4 txval70 = g_tTexcdf4a . GatherCmpAlpha(g_sSampCmp, c4, .75); + int4 txval71 = g_tTexcdi4a . GatherCmpAlpha(g_sSampCmp, c4, .75); + uint4 txval72 = g_tTexcdu4a . GatherCmpAlpha(g_sSampCmp, c4, .75); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.gathercmpRGBA.basic.dx10.frag b/Test/hlsl.gathercmpRGBA.basic.dx10.frag new file mode 100644 index 00000000..9dc16315 --- /dev/null +++ b/Test/hlsl.gathercmpRGBA.basic.dx10.frag @@ -0,0 +1,76 @@ +SamplerComparisonState g_sSampCmp : register(s0); + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform float c1; +uniform float2 c2; +uniform float3 c3; +uniform float4 c4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // no 1D gathers + + float4 txval00 = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75); + int4 txval01 = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75); + uint4 txval02 = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75); + + float4 txval10 = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75); + int4 txval11 = g_tTex2di4 . GatherCmpGreen(g_sSampCmp, c2, 0.75); + uint4 txval12 = g_tTex2du4 . GatherCmpGreen(g_sSampCmp, c2, 0.75); + + float4 txval20 = g_tTex2df4 . GatherCmpBlue(g_sSampCmp, c2, 0.75); + int4 txval21 = g_tTex2di4 . GatherCmpBlue(g_sSampCmp, c2, 0.75); + uint4 txval22 = g_tTex2du4 . GatherCmpBlue(g_sSampCmp, c2, 0.75); + + float4 txval30 = g_tTex2df4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75); + int4 txval31 = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75); + uint4 txval32 = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75); + + // no 3D gathers + + float4 txval40 = g_tTexcdf4 . GatherCmpRed(g_sSampCmp, c3, 0.75); + int4 txval41 = g_tTexcdi4 . GatherCmpRed(g_sSampCmp, c3, 0.75); + uint4 txval42 = g_tTexcdu4 . GatherCmpRed(g_sSampCmp, c3, 0.75); + + float4 txval50 = g_tTexcdf4 . GatherCmpGreen(g_sSampCmp, c3, 0.75); + int4 txval51 = g_tTexcdi4 . GatherCmpGreen(g_sSampCmp, c3, 0.75); + uint4 txval52 = g_tTexcdu4 . GatherCmpGreen(g_sSampCmp, c3, 0.75); + + float4 txval60 = g_tTexcdf4 . GatherCmpBlue(g_sSampCmp, c3, 0.75); + int4 txval61 = g_tTexcdi4 . GatherCmpBlue(g_sSampCmp, c3, 0.75); + uint4 txval62 = g_tTexcdu4 . GatherCmpBlue(g_sSampCmp, c3, 0.75); + + float4 txval70 = g_tTexcdf4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75); + int4 txval71 = g_tTexcdi4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75); + uint4 txval72 = g_tTexcdu4 . GatherCmpAlpha(g_sSampCmp, c3, 0.75); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.gathercmpRGBA.offset.dx10.frag b/Test/hlsl.gathercmpRGBA.offset.dx10.frag new file mode 100644 index 00000000..3a6fbb74 --- /dev/null +++ b/Test/hlsl.gathercmpRGBA.offset.dx10.frag @@ -0,0 +1,115 @@ +SamplerComparisonState g_sSampCmp : register(s0); + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform float c1; +uniform float2 c2; +uniform float3 c3; +uniform float4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + uint status; + + // no 1D gathers + + float4 txval001 = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2); + int4 txval011 = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2); + uint4 txval021 = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2); + + float4 txval004 = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + int4 txval014 = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + uint4 txval024 = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + + // float4 txval00s = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2, status); + // int4 txval01s = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2, status); + // uint4 txval02s = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2, status); + + // float4 txval004s = g_tTex2df4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + // int4 txval014s = g_tTex2di4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + // uint4 txval024s = g_tTex2du4 . GatherCmpRed(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + + float4 txval101 = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2); + int4 txval111 = g_tTex2di4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2); + uint4 txval121 = g_tTex2du4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2); + + float4 txval104 = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + int4 txval114 = g_tTex2di4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + uint4 txval124 = g_tTex2du4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + + // float4 txval10s = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2, status); + // int4 txval11s = g_tTex2di4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2, status); + // uint4 txval12s = g_tTex2du4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2, status); + + // float4 txval104 = g_tTex2df4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + // int4 txval114 = g_tTex2di4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + // uint4 txval124 = g_tTex2du4 . GatherCmpGreen(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + + float4 txval201 = g_tTex2df4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2); + int4 txval211 = g_tTex2di4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2); + uint4 txval221 = g_tTex2du4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2); + + float4 txval204 = g_tTex2df4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + int4 txval214 = g_tTex2di4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + uint4 txval224 = g_tTex2du4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + + // float4 txval204s = g_tTex2df4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + // int4 txval214s = g_tTex2di4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + // uint4 txval224s = g_tTex2du4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + + // float4 txval20s = g_tTex2df4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2, status); + // int4 txval21s = g_tTex2di4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2, status); + // uint4 txval22s = g_tTex2du4 . GatherCmpBlue(g_sSampCmp, c2, 0.75, o2, status); + + float4 txval301 = g_tTex2df4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2); + int4 txval311 = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2); + uint4 txval321 = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2); + + float4 txval304 = g_tTex2df4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + int4 txval314 = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + uint4 txval324 = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2, o2, o2, o2); + + // float4 txval304s = g_tTex2df4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + // int4 txval314s = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + // uint4 txval324s = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2, o2, o2, o2, status); + + // float4 txval30s = g_tTex2df4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2, status); + // int4 txval31s = g_tTex2di4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2, status); + // uint4 txval32s = g_tTex2du4 . GatherCmpAlpha(g_sSampCmp, c2, 0.75, o2, status); + + // no 3D gathers with offset + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.gathercmpRGBA.offsetarray.dx10.frag b/Test/hlsl.gathercmpRGBA.offsetarray.dx10.frag new file mode 100644 index 00000000..11131bcb --- /dev/null +++ b/Test/hlsl.gathercmpRGBA.offsetarray.dx10.frag @@ -0,0 +1,109 @@ +SamplerComparisonState g_sSampCmp : register(s0); + +uniform Texture1DArray g_tTex1df4a : register(t0); +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform float c1; +uniform float2 c2; +uniform float3 c3; +uniform float4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + uint status; + + // no 1D gathers + + float4 txval001 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2); + int4 txval011 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2); + uint4 txval021 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2); + + float4 txval004 = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + int4 txval014 = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + uint4 txval024 = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + + // float4 txval00s = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, status); + // int4 txval01s = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, status); + // uint4 txval02s = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, status); + + // float4 txval004s = g_tTex2df4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + // int4 txval014s = g_tTex2di4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + // uint4 txval024s = g_tTex2du4a . GatherCmpRed(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + + float4 txval101 = g_tTex2df4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2); + int4 txval111 = g_tTex2di4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2); + uint4 txval121 = g_tTex2du4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2); + + float4 txval104 = g_tTex2df4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + int4 txval114 = g_tTex2di4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + uint4 txval124 = g_tTex2du4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + + // float4 txval10s = g_tTex2df4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, status); + // int4 txval11s = g_tTex2di4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, status); + // uint4 txval12s = g_tTex2du4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, status); + + // float4 txval104 = g_tTex2df4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + // int4 txval114 = g_tTex2di4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + // uint4 txval124 = g_tTex2du4a . GatherCmpGreen(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + + float4 txval201 = g_tTex2df4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2); + int4 txval211 = g_tTex2di4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2); + uint4 txval221 = g_tTex2du4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2); + + float4 txval204 = g_tTex2df4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + int4 txval214 = g_tTex2di4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + uint4 txval224 = g_tTex2du4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + + // float4 txval204s = g_tTex2df4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + // int4 txval214s = g_tTex2di4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + // uint4 txval224s = g_tTex2du4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + + // float4 txval20s = g_tTex2df4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, status); + // int4 txval21s = g_tTex2di4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, status); + // uint4 txval22s = g_tTex2du4a . GatherCmpBlue(g_sSampCmp, c3, 0.75, o2, status); + + float4 txval301 = g_tTex2df4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2); + int4 txval311 = g_tTex2di4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2); + uint4 txval321 = g_tTex2du4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2); + + float4 txval304 = g_tTex2df4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + int4 txval314 = g_tTex2di4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + uint4 txval324 = g_tTex2du4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2); + + // float4 txval304s = g_tTex2df4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + // int4 txval314s = g_tTex2di4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + // uint4 txval324s = g_tTex2du4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, o2, o2, o2, status); + + // float4 txval30s = g_tTex2df4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, status); + // int4 txval31s = g_tTex2di4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, status); + // uint4 txval32s = g_tTex2du4a . GatherCmpAlpha(g_sSampCmp, c3, 0.75, o2, status); + + // no 3D gathers with offset + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.getdimensions.dx10.frag b/Test/hlsl.getdimensions.dx10.frag new file mode 100644 index 00000000..bd9cc3b9 --- /dev/null +++ b/Test/hlsl.getdimensions.dx10.frag @@ -0,0 +1,280 @@ +SamplerState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +Texture2DMS g_tTex2dmsf4; +Texture2DMS g_tTex2dmsi4; +Texture2DMS g_tTex2dmsu4; + +Texture2DMSArray g_tTex2dmsf4a; +Texture2DMSArray g_tTex2dmsi4a; +Texture2DMSArray g_tTex2dmsu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + uint MipLevel; + uint WidthU; + uint HeightU; + uint ElementsU; + uint DepthU; + uint NumberOfLevelsU; + uint NumberOfSamplesU; + + float WidthF; + float HeightF; + float ElementsF; + float DepthF; + float NumberOfLevelsF; + float NumberOfSamplesF; + + // 1D, float tx, uint params + g_tTex1df4 . GetDimensions(WidthU); + g_tTex1df4 . GetDimensions(6, WidthU, NumberOfLevelsU); + + // 1D, int, uint params + g_tTex1di4 . GetDimensions(WidthU); + g_tTex1di4 . GetDimensions(6, WidthU, NumberOfLevelsU); + + // 1D, uint, uint params + g_tTex1du4 . GetDimensions(WidthU); + g_tTex1du4 . GetDimensions(6, WidthU, NumberOfLevelsU); + + // 1DArray, float tx, uint params + g_tTex1df4a . GetDimensions(WidthU, ElementsU); + g_tTex1df4a . GetDimensions(6, WidthU, ElementsU, NumberOfLevelsU); + + // 1DArray, int, uint params + g_tTex1di4a . GetDimensions(WidthU, ElementsU); + g_tTex1di4a . GetDimensions(6, WidthU, ElementsU, NumberOfLevelsU); + + // 1DArray, uint, uint params + g_tTex1du4a . GetDimensions(WidthU, ElementsU); + g_tTex1du4a . GetDimensions(6, WidthU, ElementsU, NumberOfLevelsU); + + // 2D, float tx, uint params + g_tTex2df4 . GetDimensions(WidthU, HeightU); + g_tTex2df4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); + + // 2D, int, uint params + g_tTex2di4 . GetDimensions(WidthU, HeightU); + g_tTex2di4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); + + // 2D, uint, uint params + g_tTex2du4 . GetDimensions(WidthU, HeightU); + g_tTex2du4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); + + // 2Darray, float tx, uint params + g_tTex2df4a . GetDimensions(WidthU, HeightU, ElementsU); + g_tTex2df4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); + + // 2Darray, int, uint params + g_tTex2di4a . GetDimensions(WidthU, HeightU, ElementsU); + g_tTex2di4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); + + // 2Darray, uint, uint params + g_tTex2du4a . GetDimensions(WidthU, HeightU, ElementsU); + g_tTex2du4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); + + // 3D, float tx, uint params + g_tTex3df4 . GetDimensions(WidthU, HeightU, DepthU); + g_tTex3df4 . GetDimensions(6, WidthU, HeightU, DepthU, NumberOfLevelsU); + + // 3D, int, uint params + g_tTex3di4 . GetDimensions(WidthU, HeightU, DepthU); + g_tTex3di4 . GetDimensions(6, WidthU, HeightU, DepthU, NumberOfLevelsU); + + // 3D, uint, uint params + g_tTex3du4 . GetDimensions(WidthU, HeightU, DepthU); + g_tTex3du4 . GetDimensions(6, WidthU, HeightU, DepthU, NumberOfLevelsU); + + // Cube, float tx, uint params + g_tTexcdf4 . GetDimensions(WidthU, HeightU); + g_tTexcdf4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); + + // Cube, int, uint params + g_tTexcdi4 . GetDimensions(WidthU, HeightU); + g_tTexcdi4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); + + // Cube, uint, uint params + g_tTexcdu4 . GetDimensions(WidthU, HeightU); + g_tTexcdu4 . GetDimensions(6, WidthU, HeightU, NumberOfLevelsU); + + // Cubearray, float tx, uint params + g_tTexcdf4a . GetDimensions(WidthU, HeightU, ElementsU); + g_tTexcdf4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); + + // Cubearray, int, uint params + g_tTexcdi4a . GetDimensions(WidthU, HeightU, ElementsU); + g_tTexcdi4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); + + // Cubearray, uint, uint params + g_tTexcdu4a . GetDimensions(WidthU, HeightU, ElementsU); + g_tTexcdu4a . GetDimensions(6, WidthU, HeightU, ElementsU, NumberOfLevelsU); + + // 2DMS, float tx, uint params + g_tTex2dmsf4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); + + // 2DMS, int tx, uint params + g_tTex2dmsi4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); + + // 2DMS, uint tx, uint params + g_tTex2dmsu4 . GetDimensions(WidthU, HeightU, NumberOfSamplesU); + + // 2DMSArray, float tx, uint params + g_tTex2dmsf4a . GetDimensions(WidthU, HeightU, ElementsU, NumberOfSamplesU); + + // 2DMSArray, int tx, uint params + g_tTex2dmsi4a . GetDimensions(WidthU, HeightU, ElementsU, NumberOfSamplesU); + + // 2DMSArray, uint tx, uint params + g_tTex2dmsu4a . GetDimensions(WidthU, HeightU, ElementsU, NumberOfSamplesU); + + // TODO: *************************************************** + // Change this to 1 to enable float overloads when the HLSL + // function overload resolution is fixed. +#define OVERLOAD_FIX 0 + + // TODO: enable when function overload resolution rules are fixed +#if OVERLOAD_FIX + // 1D, float tx, float params + g_tTex1df4 . GetDimensions(WidthF); + g_tTex1df4 . GetDimensions(6, WidthF, NumberOfLevelsF); + + // 1D, int, float params + g_tTex1di4 . GetDimensions(WidthF); + g_tTex1di4 . GetDimensions(6, WidthF, NumberOfLevelsF); + + // 1D, uint, float params + g_tTex1du4 . GetDimensions(WidthF); + g_tTex1du4 . GetDimensions(6, WidthF, NumberOfLevelsF); + + // 1DArray, float tx, float params + g_tTex1df4a . GetDimensions(WidthF, ElementsF); + g_tTex1df4a . GetDimensions(6, WidthF, ElementsF, NumberOfLevelsF); + + // 1DArray, int, float params + g_tTex1di4a . GetDimensions(WidthF, ElementsF); + g_tTex1di4a . GetDimensions(6, WidthF, ElementsF, NumberOfLevelsF); + + // 1DArray, uint, float params + g_tTex1du4a . GetDimensions(WidthF, ElementsF); + g_tTex1du4a . GetDimensions(6, WidthF, ElementsF, NumberOfLevelsF); + + // 2D, float tx, float params + g_tTex2df4 . GetDimensions(WidthF, HeightF); + g_tTex2df4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); + + // 2D, int, float params + g_tTex2di4 . GetDimensions(WidthF, HeightF); + g_tTex2di4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); + + // 2D, uint, float params + g_tTex2du4 . GetDimensions(WidthF, HeightF); + g_tTex2du4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); + + // 2Darray, float tx, float params + g_tTex2df4a . GetDimensions(WidthF, HeightF, ElementsF); + g_tTex2df4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); + + // 2Darray, int, float params + g_tTex2di4a . GetDimensions(WidthF, HeightF, ElementsF); + g_tTex2di4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); + + // 2Darray, uint, float params + g_tTex2du4a . GetDimensions(WidthF, HeightF, ElementsF); + g_tTex2du4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); + + // 3D, float tx, float params + g_tTex3df4 . GetDimensions(WidthF, HeightF, DepthF); + g_tTex3df4 . GetDimensions(6, WidthF, HeightF, DepthF, NumberOfLevelsF); + + // 3D, int, float params + g_tTex3di4 . GetDimensions(WidthF, HeightF, DepthF); + g_tTex3di4 . GetDimensions(6, WidthF, HeightF, DepthF, NumberOfLevelsF); + + // 3D, uint, float params + g_tTex3du4 . GetDimensions(WidthF, HeightF, DepthF); + g_tTex3du4 . GetDimensions(6, WidthF, HeightF, DepthF, NumberOfLevelsF); + + // Cube, float tx, float params + g_tTexcdf4 . GetDimensions(WidthF, HeightF); + g_tTexcdf4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); + + // Cube, int, float params + g_tTexcdi4 . GetDimensions(WidthF, HeightF); + g_tTexcdi4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); + + // Cube, uint, float params + g_tTexcdu4 . GetDimensions(WidthF, HeightF); + g_tTexcdu4 . GetDimensions(6, WidthF, HeightF, NumberOfLevelsF); + + // Cubearray, float tx, float params + g_tTexcdf4a . GetDimensions(WidthF, HeightF, ElementsF); + g_tTexcdf4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); + + // Cubearray, int, float params + g_tTexcdi4a . GetDimensions(WidthF, HeightF, ElementsF); + g_tTexcdi4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); + + // Cubearray, uint, float params + g_tTexcdu4a . GetDimensions(WidthF, HeightF, ElementsF); + g_tTexcdu4a . GetDimensions(6, WidthF, HeightF, ElementsF, NumberOfLevelsF); + + // 2DMS, float tx, uint params + g_tTex2dmsf4 . GetDimensions(WidthF, HeightF, NumberOfSamplesF); + + // 2DMS, int tx, uint params + g_tTex2dmsi4 . GetDimensions(WidthF, HeightF, NumberOfSamplesF); + + // 2DMS, uint tx, uint params + g_tTex2dmsu4 . GetDimensions(WidthF, HeightF, NumberOfSamplesF); + + // 2DMSArray, float tx, uint params + g_tTex2dmsf4a . GetDimensions(WidthF, HeightF, ElementsF, NumberOfSamplesF); + + // 2DMSArray, int tx, uint params + g_tTex2dmsi4a . GetDimensions(WidthF, HeightF, ElementsF, NumberOfSamplesF); + + // 2DMSArray, uint tx, uint params + g_tTex2dmsu4a . GetDimensions(WidthF, HeightF, ElementsF, NumberOfSamplesF); +#endif // OVERLOAD_FIX + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.getdimensions.dx10.vert b/Test/hlsl.getdimensions.dx10.vert new file mode 100644 index 00000000..0249b1c2 --- /dev/null +++ b/Test/hlsl.getdimensions.dx10.vert @@ -0,0 +1,27 @@ +SamplerState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); + +struct VS_OUTPUT +{ + float4 Pos : SV_Position; +}; + +VS_OUTPUT main() +{ + VS_OUTPUT vsout; + + uint WidthU; + uint NumberOfLevelsU; + + // Most of the tests are in the hlsl.getdimensions.dx10.frag on the fragment side. + // This is just to establish that GetDimensions appears in the vertex stage. + + // 1D, float tx, uint params + g_tTex1df4 . GetDimensions(WidthU); + g_tTex1df4 . GetDimensions(6, WidthU, NumberOfLevelsU); + + vsout.Pos = float4(0,0,0,0); + + return vsout; +} diff --git a/Test/hlsl.getdimensions.rw.dx10.frag b/Test/hlsl.getdimensions.rw.dx10.frag new file mode 100644 index 00000000..957a8082 --- /dev/null +++ b/Test/hlsl.getdimensions.rw.dx10.frag @@ -0,0 +1,96 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df4 : register(t0); +RWTexture1D g_tTex1di4; +RWTexture1D g_tTex1du4; + +RWTexture2D g_tTex2df4; +RWTexture2D g_tTex2di4; +RWTexture2D g_tTex2du4; + +RWTexture3D g_tTex3df4; +RWTexture3D g_tTex3di4; +RWTexture3D g_tTex3du4; + +RWTexture1DArray g_tTex1df4a; +RWTexture1DArray g_tTex1di4a; +RWTexture1DArray g_tTex1du4a; + +RWTexture2DArray g_tTex2df4a; +RWTexture2DArray g_tTex2di4a; +RWTexture2DArray g_tTex2du4a; + +RWBuffer g_tBuffF; +RWBuffer g_tBuffI; +RWBuffer g_tBuffU; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + uint MipLevel; + uint WidthU; + uint HeightU; + uint ElementsU; + uint DepthU; + uint NumberOfLevelsU; + uint NumberOfSamplesU; + + float WidthF; + float HeightF; + float ElementsF; + float DepthF; + float NumberOfLevelsF; + float NumberOfSamplesF; + + // 1D, float/int/uint, uint params + g_tTex1df4.GetDimensions(WidthU); + g_tTex1di4.GetDimensions(WidthU); + g_tTex1du4.GetDimensions(WidthU); + + // buffer, float/int/uint, uint params + g_tBuffF.GetDimensions(WidthU); + g_tBuffI.GetDimensions(WidthU); + g_tBuffU.GetDimensions(WidthU); + + // 1DArray, float/int/uint, uint params + g_tTex1df4a.GetDimensions(WidthU, ElementsU); + g_tTex1di4a.GetDimensions(WidthU, ElementsU); + g_tTex1du4a.GetDimensions(WidthU, ElementsU); + + // 2D, float/int/uint, uint params + g_tTex2df4.GetDimensions(WidthU, HeightU); + g_tTex2di4.GetDimensions(WidthU, HeightU); + g_tTex2du4.GetDimensions(WidthU, HeightU); + + // 2DArray, float/int/uint, uint params + g_tTex2df4a.GetDimensions(WidthU, HeightU, ElementsU); + g_tTex2di4a.GetDimensions(WidthU, HeightU, ElementsU); + g_tTex2du4a.GetDimensions(WidthU, HeightU, ElementsU); + + // 3D, float/int/uint, uint params + g_tTex3df4.GetDimensions(WidthU, HeightU, DepthU); + g_tTex3di4.GetDimensions(WidthU, HeightU, DepthU); + g_tTex3du4.GetDimensions(WidthU, HeightU, DepthU); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.getsampleposition.dx10.frag b/Test/hlsl.getsampleposition.dx10.frag new file mode 100644 index 00000000..a7a93b37 --- /dev/null +++ b/Test/hlsl.getsampleposition.dx10.frag @@ -0,0 +1,23 @@ +SamplerState g_sSamp : register(s0); + +Texture2DMS g_tTex2dmsf4; +Texture2DMSArray g_tTex2dmsf4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float2 r00 = g_tTex2dmsf4.GetSamplePosition(1); + float2 r01 = g_tTex2dmsf4a.GetSamplePosition(2); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.init.frag b/Test/hlsl.init.frag index 5acf55df..a3f6f0e7 100644 --- a/Test/hlsl.init.frag +++ b/Test/hlsl.init.frag @@ -1,9 +1,21 @@ -float4 a1 = float4(1, 0.5, 0, 1), b1 = float4(2.0, 2.5, 2.1, 2.2); -float4 a1i = {1, 0.5, 0, 1}, b1i = {2.0, 2.5, 2.1, 2.2}; -float a2 = 0.2, b2; -float a3, b3 = 0.3; -float a4, b4 = 0.4, c4; -float a5 = 0.5, b5, c5 = 1.5; +static float4 a1 = float4(1, 0.5, 0, 1), b1 = float4(2.0, 2.5, 2.1, 2.2); +static float4 a1i = {1, 0.5, 0, 1}, b1i = {2.0, 2.5, 2.1, 2.2}; +static float a2 = 0.2, b2; +static float a3, b3 = 0.3; +static float a4, b4 = 0.4, c4; +static float a5 = 0.5, b5, c5 = 1.5; + +struct Single1 { int f; }; +static Single1 single1 = { 10 }; + +struct Single2 { uint2 v; }; +static Single2 single2 = { { 1, 2 } }; + +struct Single3 { Single1 s1; }; +static Single3 single3 = { { 3 } }; + +struct Single4 { Single2 s1; }; +static Single4 single4 = { { { 4u, 5u } } }; float4 ShaderFunction(float4 input) : COLOR0 { diff --git a/Test/hlsl.init2.frag b/Test/hlsl.init2.frag new file mode 100644 index 00000000..789f1a06 --- /dev/null +++ b/Test/hlsl.init2.frag @@ -0,0 +1,32 @@ + +void Test1() +{ + struct mystruct { float2 a; }; + mystruct test1 = { + { 1, 2, }, // test trailing commas in list + }; + + mystruct test2 = { + float2(3, 4), + }; + + // mystruct test3 = { + // { { 5, 6, } }, // TODO: test unneeded levels + // }; + + float test4 = { 7, } ; // test scalar initialization + + struct mystruct2 { float a; float b; float c; }; + mystruct2 test5 = { {8,}, {9,}, {10}, }; +} + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +PS_OUTPUT main() +{ + Test1(); + + PS_OUTPUT ps_output; + ps_output.color = 1.0; + return ps_output; +} diff --git a/Test/hlsl.inoutquals.frag b/Test/hlsl.inoutquals.frag new file mode 100644 index 00000000..32346882 --- /dev/null +++ b/Test/hlsl.inoutquals.frag @@ -0,0 +1,25 @@ +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +void MyFunc(in float x, out float y, inout float z) +{ + y = x; + z = y; + x = -1; // no effect since x = in param +} + +PS_OUTPUT main(noperspective in float4 inpos : SV_Position, out int sampleMask : SV_Coverage) +{ + PS_OUTPUT psout; + + float x = 7, y, z = 3; + MyFunc(x, y, z); + + psout.Color = float4(x, y, z, 1); + psout.Depth = inpos.w; + + return psout; +} diff --git a/Test/hlsl.intrinsics.comp b/Test/hlsl.intrinsics.comp index 642a0fc6..bce2d27d 100644 --- a/Test/hlsl.intrinsics.comp +++ b/Test/hlsl.intrinsics.comp @@ -1,17 +1,17 @@ -#define gs // TODO: define as groupshared when available in the grammar -gs uint gs_ua; -gs uint gs_ub; -gs uint gs_uc; -gs uint2 gs_ua2; -gs uint2 gs_ub2; -gs uint2 gs_uc2; -gs uint3 gs_ua3; -gs uint3 gs_ub3; -gs uint3 gs_uc3; -gs uint4 gs_ua4; -gs uint4 gs_ub4; -gs uint4 gs_uc4; + +groupshared uint gs_ua; +groupshared uint gs_ub; +groupshared uint gs_uc; +groupshared uint2 gs_ua2; +groupshared uint2 gs_ub2; +groupshared uint2 gs_uc2; +groupshared uint3 gs_ua3; +groupshared uint3 gs_ub3; +groupshared uint3 gs_uc3; +groupshared uint4 gs_ua4; +groupshared uint4 gs_ub4; +groupshared uint4 gs_uc4; float ComputeShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1) { diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag index dd417a10..03e7ed38 100644 --- a/Test/hlsl.intrinsics.frag +++ b/Test/hlsl.intrinsics.frag @@ -1,17 +1,17 @@ -#define gs // TODO: define as groupshared when available in the grammar -gs uint gs_ua; -gs uint gs_ub; -gs uint gs_uc; -gs uint2 gs_ua2; -gs uint2 gs_ub2; -gs uint2 gs_uc2; -gs uint3 gs_ua3; -gs uint3 gs_ub3; -gs uint3 gs_uc3; -gs uint4 gs_ua4; -gs uint4 gs_ub4; -gs uint4 gs_uc4; + +groupshared uint gs_ua; +groupshared uint gs_ub; +groupshared uint gs_uc; +groupshared uint2 gs_ua2; +groupshared uint2 gs_ub2; +groupshared uint2 gs_uc2; +groupshared uint3 gs_ua3; +groupshared uint3 gs_ub3; +groupshared uint3 gs_uc3; +groupshared uint4 gs_ua4; +groupshared uint4 gs_ub4; +groupshared uint4 gs_uc4; float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1) { @@ -223,6 +223,7 @@ float3 PixelShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, u bool3 r041 = isnan(inF0); float3 r042 = ldexp(inF0, inF1); float3 r039a = lerp(inF0, inF1, inF2); + float3 r039b = lerp(inF0, inF1, 0.3); // test vec,vec,scalar lerp float r043 = length(inF0); float3 r044 = log(inF0); float3 r045 = log10(inF0); @@ -481,3 +482,12 @@ void TestGenMulNxM(float inF0, float inF1, 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 c89d04bc..fe612d6e 100644 --- a/Test/hlsl.intrinsics.negative.comp +++ b/Test/hlsl.intrinsics.negative.comp @@ -4,49 +4,49 @@ float ComputeShaderFunctionS(float inF0, float inF1, float inF2, int inI0) // 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 @@ float1 ComputeShaderFunction1(float1 inF0, float1 inF1, float1 inF2, int1 inI0) { // 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 @@ float2 ComputeShaderFunction2(float2 inF0, float2 inF1, float2 inF2, int2 inI0) { 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 @@ float3 ComputeShaderFunction3(float3 inF0, float3 inF1, float3 inF2, int3 inI0) { 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 @@ float4 ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0) { 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 a5030cf1..6224b25e 100644 --- a/Test/hlsl.intrinsics.negative.vert +++ b/Test/hlsl.intrinsics.negative.vert @@ -1,70 +1,70 @@ -uint gs_ua; -uint gs_ub; -uint gs_uc; -uint2 gs_ua2; -uint2 gs_ub2; -uint2 gs_uc2; -uint3 gs_ua3; -uint3 gs_ub3; -uint3 gs_uc3; -uint4 gs_ua4; -uint4 gs_ub4; -uint4 gs_uc4; +static uint gs_ua; +static uint gs_ub; +static uint gs_uc; +static uint2 gs_ua2; +static uint2 gs_ub2; +static uint2 gs_uc2; +static uint3 gs_ua3; +static uint3 gs_ub3; +static uint3 gs_uc3; +static uint4 gs_ua4; +static uint4 gs_ub4; +static uint4 gs_uc4; float VertexShaderFunctionS(float inF0, float inF1, float inF2, int inI0) { 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 @@ float1 VertexShaderFunction1(float1 inF0, float1 inF1, float1 inF2, int1 inI0) { // 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 @@ float2 VertexShaderFunction2(float2 inF0, float2 inF1, float2 inF2, int2 inI0) { 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 @@ float3 VertexShaderFunction3(float3 inF0, float3 inF1, float3 inF2, int3 inI0) { 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 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0) { 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 @@ float4 VertexShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0) } // 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 00000000..4c2f7cef --- /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.load.2dms.dx10.frag b/Test/hlsl.load.2dms.dx10.frag new file mode 100644 index 00000000..29974f58 --- /dev/null +++ b/Test/hlsl.load.2dms.dx10.frag @@ -0,0 +1,56 @@ +SamplerState g_sSamp : register(s0); + +Texture2DMS g_tTex2dmsf4; +Texture2DMS g_tTex2dmsi4; +Texture2DMS g_tTex2dmsu4; + +Texture2DMSArray g_tTex2dmsf4a; +Texture2DMSArray g_tTex2dmsi4a; +Texture2DMSArray g_tTex2dmsu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 2DMS, no offset + g_tTex2dmsf4.Load(c2, 3); + g_tTex2dmsi4.Load(c2, 3); + g_tTex2dmsu4.Load(c2, 3); + + // 2DMS, offset + g_tTex2dmsf4.Load(c2, 3, o2); + g_tTex2dmsi4.Load(c2, 3, o2); + g_tTex2dmsu4.Load(c2, 3, o2); + + // 2DMSArray, no offset + g_tTex2dmsf4a.Load(c3, 3); + g_tTex2dmsi4a.Load(c3, 3); + g_tTex2dmsu4a.Load(c3, 3); + + // 2DMSArray, offset + g_tTex2dmsf4a.Load(c3, 3, o2); + g_tTex2dmsi4a.Load(c3, 3, o2); + g_tTex2dmsu4a.Load(c3, 3, o2); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} + diff --git a/Test/hlsl.load.array.dx10.frag b/Test/hlsl.load.array.dx10.frag new file mode 100644 index 00000000..253de3e2 --- /dev/null +++ b/Test/hlsl.load.array.dx10.frag @@ -0,0 +1,71 @@ +SamplerState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1DArray + g_tTex1df4a.Load(c3); + g_tTex1di4a.Load(c3); + g_tTex1du4a.Load(c3); + + // 2DArray + g_tTex2df4a.Load(c4); + g_tTex2di4a.Load(c4); + g_tTex2du4a.Load(c4); + + // Offset has no Cube or CubeArray forms + + // TODO: + // Load, SampleIndex + // Load, SampleIndex, Offset + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.load.basic.dx10.frag b/Test/hlsl.load.basic.dx10.frag new file mode 100644 index 00000000..abb594e3 --- /dev/null +++ b/Test/hlsl.load.basic.dx10.frag @@ -0,0 +1,76 @@ +SamplerState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df4.Load(c2); + g_tTex1di4.Load(c2); + g_tTex1du4.Load(c2); + + // 2D + g_tTex2df4.Load(c3); + g_tTex2di4.Load(c3); + g_tTex2du4.Load(c3); + + // 3D + g_tTex3df4.Load(c4); + g_tTex3di4.Load(c4); + g_tTex3du4.Load(c4); + + // Offset has no Cube or CubeArray forms + + // TODO: + // Load, SampleIndex + // Load, SampleIndex, Offset + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.load.basic.dx10.vert b/Test/hlsl.load.basic.dx10.vert new file mode 100644 index 00000000..750b9840 --- /dev/null +++ b/Test/hlsl.load.basic.dx10.vert @@ -0,0 +1,70 @@ +SamplerState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct VS_OUTPUT +{ + float4 Pos : SV_Position; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +VS_OUTPUT main() +{ + VS_OUTPUT vsout; + + // 1D + g_tTex1df4.Load(c2); + g_tTex1di4.Load(c2); + g_tTex1du4.Load(c2); + + // 2D + g_tTex2df4.Load(c3); + g_tTex2di4.Load(c3); + g_tTex2du4.Load(c3); + + // 3D + g_tTex3df4.Load(c4); + g_tTex3di4.Load(c4); + g_tTex3du4.Load(c4); + + // Offset has no Cube or CubeArray forms + + vsout.Pos = float4(0,0,0,0); + + return vsout; +} diff --git a/Test/hlsl.load.buffer.dx10.frag b/Test/hlsl.load.buffer.dx10.frag new file mode 100644 index 00000000..60a61df6 --- /dev/null +++ b/Test/hlsl.load.buffer.dx10.frag @@ -0,0 +1,38 @@ +uniform Buffer g_tTexbf4_test : register(t0); + +Buffer g_tTexbf4; // default is float4 +Buffer g_tTexbi4; +Buffer g_tTexbu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // Buffer + float4 r00 = g_tTexbf4.Load(c1); + int4 r01 = g_tTexbi4.Load(c1); + uint4 r02 = g_tTexbu4.Load(c1); + + // TODO: other types that can be put in sampler buffers, like float2x2, and float3. + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.load.buffer.float.dx10.frag b/Test/hlsl.load.buffer.float.dx10.frag new file mode 100644 index 00000000..eeea9a63 --- /dev/null +++ b/Test/hlsl.load.buffer.float.dx10.frag @@ -0,0 +1,38 @@ +uniform Buffer g_tTexbfs_test : register(t0); + +Buffer g_tTexbfs; +Buffer g_tTexbis; +Buffer g_tTexbus; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // Buffer + float r00 = g_tTexbfs.Load(c1); + int r01 = g_tTexbis.Load(c1); + uint r02 = g_tTexbus.Load(c1); + + // TODO: other types that can be put in sampler buffers, like float2x2, and float3. + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.load.offset.dx10.frag b/Test/hlsl.load.offset.dx10.frag new file mode 100644 index 00000000..bc946eea --- /dev/null +++ b/Test/hlsl.load.offset.dx10.frag @@ -0,0 +1,76 @@ +SamplerState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df4.Load(c2, o1); + g_tTex1di4.Load(c2, o1); + g_tTex1du4.Load(c2, o1); + + // 2D + g_tTex2df4.Load(c3, o2); + g_tTex2di4.Load(c3, o2); + g_tTex2du4.Load(c3, o2); + + // 3D + g_tTex3df4.Load(c4, o3); + g_tTex3di4.Load(c4, o3); + g_tTex3du4.Load(c4, o3); + + // Offset has no Cube or CubeArray forms + + // TODO: + // Load, SampleIndex + // Load, SampleIndex, Offset + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.load.offsetarray.dx10.frag b/Test/hlsl.load.offsetarray.dx10.frag new file mode 100644 index 00000000..12b6a9e5 --- /dev/null +++ b/Test/hlsl.load.offsetarray.dx10.frag @@ -0,0 +1,69 @@ +SamplerState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1DArray + g_tTex1df4a.Load(c3, o1); + g_tTex1di4a.Load(c3, o1); + g_tTex1du4a.Load(c3, o1); + + // 2DArray + g_tTex2df4a.Load(c4, o2); + g_tTex2di4a.Load(c4, o2); + g_tTex2du4a.Load(c4, o2); + + // TODO: + // Load, SampleIndex + // Load, SampleIndex, Offset + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.load.rwbuffer.dx10.frag b/Test/hlsl.load.rwbuffer.dx10.frag new file mode 100644 index 00000000..accd5f0c --- /dev/null +++ b/Test/hlsl.load.rwbuffer.dx10.frag @@ -0,0 +1,32 @@ + +RWBuffer g_tBuffF; +RWBuffer g_tBuffI; +RWBuffer g_tBuffU; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + g_tBuffF.Load(c1); + g_tBuffU.Load(c1); + g_tBuffI.Load(c1); + + psout.Color = 1.0; + + return psout; +} diff --git a/Test/hlsl.load.rwtexture.array.dx10.frag b/Test/hlsl.load.rwtexture.array.dx10.frag new file mode 100644 index 00000000..38e29096 --- /dev/null +++ b/Test/hlsl.load.rwtexture.array.dx10.frag @@ -0,0 +1,57 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df4 : register(t0); +RWTexture1D g_tTex1di4; +RWTexture1D g_tTex1du4; + +RWTexture2D g_tTex2df4; +RWTexture2D g_tTex2di4; +RWTexture2D g_tTex2du4; + +RWTexture3D g_tTex3df4; +RWTexture3D g_tTex3di4; +RWTexture3D g_tTex3du4; + +RWTexture1DArray g_tTex1df4a; +RWTexture1DArray g_tTex1di4a; +RWTexture1DArray g_tTex1du4a; + +RWTexture2DArray g_tTex2df4a; +RWTexture2DArray g_tTex2di4a; +RWTexture2DArray g_tTex2du4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df4a.Load(c2); + g_tTex1di4a.Load(c2); + g_tTex1du4a.Load(c2); + + // 2D + g_tTex2df4a.Load(c3); + g_tTex2di4a.Load(c3); + g_tTex2du4a.Load(c3); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.load.rwtexture.dx10.frag b/Test/hlsl.load.rwtexture.dx10.frag new file mode 100644 index 00000000..c0950776 --- /dev/null +++ b/Test/hlsl.load.rwtexture.dx10.frag @@ -0,0 +1,62 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df4 : register(t0); +RWTexture1D g_tTex1di4; +RWTexture1D g_tTex1du4; + +RWTexture2D g_tTex2df4; +RWTexture2D g_tTex2di4; +RWTexture2D g_tTex2du4; + +RWTexture3D g_tTex3df4; +RWTexture3D g_tTex3di4; +RWTexture3D g_tTex3du4; + +RWTexture1DArray g_tTex1df4a; +RWTexture1DArray g_tTex1di4a; +RWTexture1DArray g_tTex1du4a; + +RWTexture2DArray g_tTex2df4a; +RWTexture2DArray g_tTex2di4a; +RWTexture2DArray g_tTex2du4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df4.Load(c1); + g_tTex1di4.Load(c1); + g_tTex1du4.Load(c1); + + // 2D + g_tTex2df4.Load(c2); + g_tTex2di4.Load(c2); + g_tTex2du4.Load(c2); + + // 3D + g_tTex3df4.Load(c3); + g_tTex3di4.Load(c3); + g_tTex3du4.Load(c3); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.logical.binary.frag b/Test/hlsl.logical.binary.frag new file mode 100644 index 00000000..06bc9f2f --- /dev/null +++ b/Test/hlsl.logical.binary.frag @@ -0,0 +1,21 @@ +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int ival; +uniform int4 ival4; +uniform float fval; +uniform float4 fval4; + +PS_OUTPUT main() +{ + if (ival && fval); + if (ival || fval); + + PS_OUTPUT psout; + psout.Color = 1.0; + return psout; +} + + diff --git a/Test/hlsl.logical.unary.frag b/Test/hlsl.logical.unary.frag new file mode 100644 index 00000000..cbcb3bfc --- /dev/null +++ b/Test/hlsl.logical.unary.frag @@ -0,0 +1,29 @@ +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int ival; +uniform int4 ival4; +uniform float fval; +uniform float4 fval4; + +PS_OUTPUT main() +{ + !ival; // scalar int + !ival4; // vector int + + !fval; // scalar float + !fval4; // vector float + + if (ival); + if (fval); + if (!ival); + if (!fval); + + PS_OUTPUT psout; + psout.Color = 1.0; + return psout; +} + + diff --git a/Test/hlsl.matType.frag b/Test/hlsl.matType.frag index 36d71e3b..ee7c0476 100644 --- a/Test/hlsl.matType.frag +++ b/Test/hlsl.matType.frag @@ -7,4 +7,5 @@ int4x4 int44; 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 00000000..f352c0e5 --- /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 00000000..d155c26d --- /dev/null +++ b/Test/hlsl.multiEntry.vert @@ -0,0 +1,11 @@ +Buffer 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.multiReturn.frag b/Test/hlsl.multiReturn.frag new file mode 100755 index 00000000..fdab7721 --- /dev/null +++ b/Test/hlsl.multiReturn.frag @@ -0,0 +1,19 @@ +struct S { + float f; + float3 v; + float3x3 m; +}; + +cbuffer bufName { + S s; +}; + +S foo() +{ + return s; +} + +void main() +{ + foo(); +} diff --git a/Test/hlsl.numericsuffixes.frag b/Test/hlsl.numericsuffixes.frag new file mode 100644 index 00000000..60b2572f --- /dev/null +++ b/Test/hlsl.numericsuffixes.frag @@ -0,0 +1,20 @@ + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +PS_OUTPUT main() +{ + // Test numeric suffixes + float r00 = 1.0f; // float + uint r01 = 1u; // lower uint + uint r02 = 2U; // upper uint + uint r03 = 0xabcu; // lower hex uint + uint r04 = 0xABCU; // upper hex uint (upper 0X is not accepted) + int r05 = 5l; // lower long int + int r06 = 6L; // upper long int + int r07 = 071; // octal + uint r08 = 072u; // unsigned octal + + PS_OUTPUT ps_output; + ps_output.color = r07; // gets 71 octal = 57 decimal + return ps_output; +} diff --git a/Test/hlsl.overload.frag b/Test/hlsl.overload.frag new file mode 100644 index 00000000..b5ddf493 --- /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.pp.line.frag b/Test/hlsl.pp.line.frag new file mode 100644 index 00000000..6f0273dc --- /dev/null +++ b/Test/hlsl.pp.line.frag @@ -0,0 +1,24 @@ + +#line 1 + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +#line 2 + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + +#line 123 "SomeFile.frag" + + int thisLineIs = __LINE__; // gets 124 + + psout.Color = float4(thisLineIs, 0, 0, 1); + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.precedence.frag b/Test/hlsl.precedence.frag index eae0435e..6ed71739 100644 --- a/Test/hlsl.precedence.frag +++ b/Test/hlsl.precedence.frag @@ -5,5 +5,5 @@ float4 PixelShaderFunction( float4 a4 ) : COLOR0 { - return a1 + a2 * a3 + a4; + return a1 + a2 * a3 + a4 + float4(a1.rgb * a2.rgb, a3.a); } diff --git a/Test/hlsl.precise.frag b/Test/hlsl.precise.frag new file mode 100644 index 00000000..77454e07 --- /dev/null +++ b/Test/hlsl.precise.frag @@ -0,0 +1,14 @@ + +struct PS_OUTPUT { precise float4 color : SV_Target0; }; + +static 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.promote.binary.frag b/Test/hlsl.promote.binary.frag new file mode 100644 index 00000000..0203bed9 --- /dev/null +++ b/Test/hlsl.promote.binary.frag @@ -0,0 +1,28 @@ +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform bool bval; +uniform bool4 bval4; +uniform int ival; +uniform int4 ival4; +uniform float fval; +uniform float4 fval4; + +PS_OUTPUT main() +{ + ival % fval; + ival4 % fval4; + + bval % fval; + bval4 % fval4; + + int l_int = 1; + l_int %= fval; + + PS_OUTPUT psout; + psout.Color = 0; + return psout; +} + diff --git a/Test/hlsl.promotions.frag b/Test/hlsl.promotions.frag new file mode 100644 index 00000000..647096d4 --- /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.binding.frag b/Test/hlsl.reflection.binding.frag new file mode 100644 index 00000000..25b22c97 --- /dev/null +++ b/Test/hlsl.reflection.binding.frag @@ -0,0 +1,34 @@ + +uniform float u1 : register(b2); + +uniform SamplerState s1 : register(s5); +uniform SamplerState s1a[3] : register(s6); + +uniform Texture1D t1 : register(t15); +uniform Texture1D t1a[3] : register(t16); + +cbuffer cbuff1 : register(b2) { + float4 c1_a; + int c1_b; + float c1_c; +}; + +cbuffer cbuff2 : register(b3) { + float4 c2_a; + int c2_b; + float c2_c; +}; + +struct PS_OUTPUT +{ + float4 Color : Sv_Target0; +}; + +void main(out PS_OUTPUT psout) +{ + psout.Color = + t1.Sample(s1, 0.3) + + t1a[0].Sample(s1a[0], 0.3) + + c1_a + c1_b + c1_c + + c2_a + c2_b + c2_c; +} diff --git a/Test/hlsl.reflection.vert b/Test/hlsl.reflection.vert new file mode 100644 index 00000000..21cc8109 --- /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.rw.atomics.frag b/Test/hlsl.rw.atomics.frag new file mode 100644 index 00000000..930d6501 --- /dev/null +++ b/Test/hlsl.rw.atomics.frag @@ -0,0 +1,244 @@ +SamplerState g_sSamp; + +RWTexture1D g_tTex1df1; +RWTexture1D g_tTex1di1; +RWTexture1D g_tTex1du1; + +RWTexture2D g_tTex2df1; +RWTexture2D g_tTex2di1; +RWTexture2D g_tTex2du1; + +RWTexture3D g_tTex3df1; +RWTexture3D g_tTex3di1; +RWTexture3D g_tTex3du1; + +RWTexture1DArray g_tTex1df1a; +RWTexture1DArray g_tTex1di1a; +RWTexture1DArray g_tTex1du1a; + +RWTexture2DArray g_tTex2df1a; +RWTexture2DArray g_tTex2di1a; +RWTexture2DArray g_tTex2du1a; + +RWBuffer g_tBuffF; +RWBuffer g_tBuffI; +RWBuffer g_tBuffU; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform uint u1; +uniform uint2 u2; +uniform uint3 u3; +uniform uint u1b; +uniform uint u1c; + +uniform int i1; +uniform int2 i2; +uniform int3 i3; +uniform int i1b; +uniform int i1c; + +PS_OUTPUT main() +{ + uint out_u1; + int out_i1; + + // 1D int + InterlockedAdd(g_tTex1di1[i1], i1b); + InterlockedAdd(g_tTex1di1[i1], i1, out_i1); + InterlockedAnd(g_tTex1di1[i1], i1b); + InterlockedAnd(g_tTex1di1[i1], i1, out_i1); + InterlockedCompareExchange(g_tTex1di1[i1], i1b, i1c, out_i1); + InterlockedExchange(g_tTex1di1[i1], i1, out_i1); + InterlockedMax(g_tTex1di1[i1], i1b); + InterlockedMax(g_tTex1di1[i1], i1, out_i1); + InterlockedMin(g_tTex1di1[i1], i1b); + InterlockedMin(g_tTex1di1[i1], i1, out_i1); + InterlockedOr(g_tTex1di1[i1], i1b); + InterlockedOr(g_tTex1di1[i1], i1, out_i1); + InterlockedXor(g_tTex1di1[i1], i1b); + InterlockedXor(g_tTex1di1[i1], i1, out_i1); + + // 1D uint + InterlockedAdd(g_tTex1du1[u1], u1); + InterlockedAdd(g_tTex1du1[u1], u1, out_u1); + InterlockedAnd(g_tTex1du1[u1], u1); + InterlockedAnd(g_tTex1du1[u1], u1, out_u1); + InterlockedCompareExchange(g_tTex1du1[u1], u1b, u1c, out_u1); + InterlockedExchange(g_tTex1du1[u1], u1, out_u1); + InterlockedMax(g_tTex1du1[u1], u1); + InterlockedMax(g_tTex1du1[u1], u1, out_u1); + InterlockedMin(g_tTex1du1[u1], u1); + InterlockedMin(g_tTex1du1[u1], u1, out_u1); + InterlockedOr(g_tTex1du1[u1], u1); + InterlockedOr(g_tTex1du1[u1], u1, out_u1); + InterlockedXor(g_tTex1du1[u1], u1); + InterlockedXor(g_tTex1du1[u1], u1, out_u1); + + // 2D int + InterlockedAdd(g_tTex2di1[i2], i1b); + InterlockedAdd(g_tTex2di1[i2], i1, out_i1); + InterlockedAnd(g_tTex2di1[i2], i1b); + InterlockedAnd(g_tTex2di1[i2], i1, out_i1); + InterlockedCompareExchange(g_tTex2di1[i2], i1b, i1c, out_i1); + InterlockedExchange(g_tTex2di1[i2], i1, out_i1); + InterlockedMax(g_tTex2di1[i2], i1b); + InterlockedMax(g_tTex2di1[i2], i1, out_i1); + InterlockedMin(g_tTex2di1[i2], i1b); + InterlockedMin(g_tTex2di1[i2], i1, out_i1); + InterlockedOr(g_tTex2di1[i2], i1b); + InterlockedOr(g_tTex2di1[i2], i1, out_i1); + InterlockedXor(g_tTex2di1[i2], i1b); + InterlockedXor(g_tTex2di1[i2], i1, out_i1); + + // 2D uint + InterlockedAdd(g_tTex2du1[u2], u1); + InterlockedAdd(g_tTex2du1[u2], u1, out_u1); + InterlockedAnd(g_tTex2du1[u2], u1); + InterlockedAnd(g_tTex2du1[u2], u1, out_u1); + InterlockedCompareExchange(g_tTex2du1[u2], u1b, u1c, out_u1); + InterlockedExchange(g_tTex2du1[u2], u1, out_u1); + InterlockedMax(g_tTex2du1[u2], u1); + InterlockedMax(g_tTex2du1[u2], u1, out_u1); + InterlockedMin(g_tTex2du1[u2], u1); + InterlockedMin(g_tTex2du1[u2], u1, out_u1); + InterlockedOr(g_tTex2du1[u2], u1); + InterlockedOr(g_tTex2du1[u2], u1, out_u1); + InterlockedXor(g_tTex2du1[u2], u1); + InterlockedXor(g_tTex2du1[u2], u1, out_u1); + + // 3D int + InterlockedAdd(g_tTex3di1[i3], i1b); + InterlockedAdd(g_tTex3di1[i3], i1, out_i1); + InterlockedAnd(g_tTex3di1[i3], i1b); + InterlockedAnd(g_tTex3di1[i3], i1, out_i1); + InterlockedCompareExchange(g_tTex3di1[i3], i1b, i1c, out_i1); + InterlockedExchange(g_tTex3di1[i3], i1, out_i1); + InterlockedMax(g_tTex3di1[i3], i1b); + InterlockedMax(g_tTex3di1[i3], i1, out_i1); + InterlockedMin(g_tTex3di1[i3], i1b); + InterlockedMin(g_tTex3di1[i3], i1, out_i1); + InterlockedOr(g_tTex3di1[i3], i1b); + InterlockedOr(g_tTex3di1[i3], i1, out_i1); + InterlockedXor(g_tTex3di1[i3], i1b); + InterlockedXor(g_tTex3di1[i3], i1, out_i1); + + // 3D uint + InterlockedAdd(g_tTex3du1[u3], u1); + InterlockedAdd(g_tTex3du1[u3], u1, out_u1); + InterlockedAnd(g_tTex3du1[u3], u1); + InterlockedAnd(g_tTex3du1[u3], u1, out_u1); + InterlockedCompareExchange(g_tTex3du1[u3], u1b, u1c, out_u1); + InterlockedExchange(g_tTex3du1[u3], u1, out_u1); + InterlockedMax(g_tTex3du1[u3], u1); + InterlockedMax(g_tTex3du1[u3], u1, out_u1); + InterlockedMin(g_tTex3du1[u3], u1); + InterlockedMin(g_tTex3du1[u3], u1, out_u1); + InterlockedOr(g_tTex3du1[u3], u1); + InterlockedOr(g_tTex3du1[u3], u1, out_u1); + InterlockedXor(g_tTex3du1[u3], u1); + InterlockedXor(g_tTex3du1[u3], u1, out_u1); + + // 1D array int + InterlockedAdd(g_tTex1di1a[i2], i1b); + InterlockedAdd(g_tTex1di1a[i2], i1, out_i1); + InterlockedAnd(g_tTex1di1a[i2], i1b); + InterlockedAnd(g_tTex1di1a[i2], i1, out_i1); + InterlockedCompareExchange(g_tTex1di1a[i2], i1b, i1c, out_i1); + InterlockedExchange(g_tTex1di1a[i2], i1, out_i1); + InterlockedMax(g_tTex1di1a[i2], i1b); + InterlockedMax(g_tTex1di1a[i2], i1, out_i1); + InterlockedMin(g_tTex1di1a[i2], i1b); + InterlockedMin(g_tTex1di1a[i2], i1, out_i1); + InterlockedOr(g_tTex1di1a[i2], i1b); + InterlockedOr(g_tTex1di1a[i2], i1, out_i1); + InterlockedXor(g_tTex1di1a[i2], i1b); + InterlockedXor(g_tTex1di1a[i2], i1, out_i1); + + // 1D array uint + InterlockedAdd(g_tTex1du1a[u2], u1); + InterlockedAdd(g_tTex1du1a[u2], u1, out_u1); + InterlockedAnd(g_tTex1du1a[u2], u1); + InterlockedAnd(g_tTex1du1a[u2], u1, out_u1); + InterlockedCompareExchange(g_tTex1du1a[u2], u1b, u1c, out_u1); + InterlockedExchange(g_tTex1du1a[u2], u1, out_u1); + InterlockedMax(g_tTex1du1a[u2], u1); + InterlockedMax(g_tTex1du1a[u2], u1, out_u1); + InterlockedMin(g_tTex1du1a[u2], u1); + InterlockedMin(g_tTex1du1a[u2], u1, out_u1); + InterlockedOr(g_tTex1du1a[u2], u1); + InterlockedOr(g_tTex1du1a[u2], u1, out_u1); + InterlockedXor(g_tTex1du1a[u2], u1); + InterlockedXor(g_tTex1du1a[u2], u1, out_u1); + + // 2D array int + InterlockedAdd(g_tTex1di1a[i2], i1b); + InterlockedAdd(g_tTex1di1a[i2], i1, out_i1); + InterlockedAnd(g_tTex1di1a[i2], i1b); + InterlockedAnd(g_tTex1di1a[i2], i1, out_i1); + InterlockedCompareExchange(g_tTex1di1a[i2], i1b, i1c, out_i1); + InterlockedExchange(g_tTex1di1a[i2], i1, out_i1); + InterlockedMax(g_tTex1di1a[i2], i1b); + InterlockedMax(g_tTex1di1a[i2], i1, out_i1); + InterlockedMin(g_tTex1di1a[i2], i1b); + InterlockedMin(g_tTex1di1a[i2], i1, out_i1); + InterlockedOr(g_tTex1di1a[i2], i1b); + InterlockedOr(g_tTex1di1a[i2], i1, out_i1); + InterlockedXor(g_tTex1di1a[i2], i1b); + InterlockedXor(g_tTex1di1a[i2], i1, out_i1); + + // 2D array uint + InterlockedAdd(g_tTex1du1a[u2], u1); + InterlockedAdd(g_tTex1du1a[u2], u1, out_u1); + InterlockedAnd(g_tTex1du1a[u2], u1); + InterlockedAnd(g_tTex1du1a[u2], u1, out_u1); + InterlockedCompareExchange(g_tTex1du1a[u2], u1b, u1c, out_u1); + InterlockedExchange(g_tTex1du1a[u2], u1, out_u1); + InterlockedMax(g_tTex1du1a[u2], u1); + InterlockedMax(g_tTex1du1a[u2], u1, out_u1); + InterlockedMin(g_tTex1du1a[u2], u1); + InterlockedMin(g_tTex1du1a[u2], u1, out_u1); + InterlockedOr(g_tTex1du1a[u2], u1); + InterlockedOr(g_tTex1du1a[u2], u1, out_u1); + InterlockedXor(g_tTex1du1a[u2], u1); + InterlockedXor(g_tTex1du1a[u2], u1, out_u1); + + // buffer int + InterlockedAdd(g_tBuffI[i1], i1b); + InterlockedAdd(g_tBuffI[i1], i1, out_i1); + InterlockedAnd(g_tBuffI[i1], i1b); + InterlockedAnd(g_tBuffI[i1], i1, out_i1); + InterlockedCompareExchange(g_tBuffI[i1], i1b, i1c, out_i1); + InterlockedExchange(g_tBuffI[i1], i1, out_i1); + InterlockedMax(g_tBuffI[i1], i1b); + InterlockedMax(g_tBuffI[i1], i1, out_i1); + InterlockedMin(g_tBuffI[i1], i1b); + InterlockedMin(g_tBuffI[i1], i1, out_i1); + InterlockedOr(g_tBuffI[i1], i1b); + InterlockedOr(g_tBuffI[i1], i1, out_i1); + InterlockedXor(g_tBuffI[i1], i1b); + InterlockedXor(g_tBuffI[i1], i1, out_i1); + + // buffer uint + InterlockedAdd(g_tBuffU[u1], u1); + InterlockedAdd(g_tBuffU[u1], u1, out_u1); + InterlockedAnd(g_tBuffU[u1], u1); + InterlockedAnd(g_tBuffU[u1], u1, out_u1); + InterlockedCompareExchange(g_tBuffU[u1], u1b, u1c, out_u1); + InterlockedExchange(g_tBuffU[u1], u1, out_u1); + InterlockedMax(g_tBuffU[u1], u1); + InterlockedMax(g_tBuffU[u1], u1, out_u1); + InterlockedMin(g_tBuffU[u1], u1); + InterlockedMin(g_tBuffU[u1], u1, out_u1); + InterlockedOr(g_tBuffU[u1], u1); + InterlockedOr(g_tBuffU[u1], u1, out_u1); + InterlockedXor(g_tBuffU[u1], u1); + InterlockedXor(g_tBuffU[u1], u1, out_u1); + + PS_OUTPUT psout; + psout.Color = 1.0; + return psout; +} diff --git a/Test/hlsl.rw.bracket.frag b/Test/hlsl.rw.bracket.frag new file mode 100644 index 00000000..9390e8de --- /dev/null +++ b/Test/hlsl.rw.bracket.frag @@ -0,0 +1,140 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df4 : register(t0); +RWTexture1D g_tTex1di4; +RWTexture1D g_tTex1du4; + +RWTexture2D g_tTex2df4; +RWTexture2D g_tTex2di4; +RWTexture2D g_tTex2du4; + +RWTexture3D g_tTex3df4; +RWTexture3D g_tTex3di4; +RWTexture3D g_tTex3du4; + +RWTexture1DArray g_tTex1df4a; +RWTexture1DArray g_tTex1di4a; +RWTexture1DArray g_tTex1du4a; + +RWTexture2DArray g_tTex2df4a; +RWTexture2DArray g_tTex2di4a; +RWTexture2DArray g_tTex2du4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +uniform float4 uf4; +uniform int4 ui4; +uniform uint4 uu4; + +int4 Fn1(in int4 x) { return x; } +uint4 Fn1(in uint4 x) { return x; } +float4 Fn1(in float4 x) { return x; } + +void Fn2(out int4 x) { x = int4(0); } +void Fn2(out uint4 x) { x = uint4(0); } +void Fn2(out float4 x) { x = float4(0); } + +float4 SomeValue() { return c4; } + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df4[c1]; + + float4 r00 = g_tTex1df4[c1]; + int4 r01 = g_tTex1di4[c1]; + uint4 r02 = g_tTex1du4[c1]; + + // 2D + float4 r10 = g_tTex2df4[c2]; + int4 r11 = g_tTex2di4[c2]; + uint4 r12 = g_tTex2du4[c2]; + + // 3D + float4 r20 = g_tTex3df4[c3]; + int4 r21 = g_tTex3di4[c3]; + uint4 r22 = g_tTex3du4[c3]; + + float4 lf4 = uf4; + + // Test as L-values + // 1D + g_tTex1df4[c1] = SomeValue(); // complex R-value + g_tTex1df4[c1] = lf4; + g_tTex1di4[c1] = int4(2,2,3,4); + g_tTex1du4[c1] = uint4(3,2,3,4); + + // Test some operator= things, which need to do both a load and a store. + float4 val1 = (g_tTex1df4[c1] *= 2.0); + g_tTex1df4[c1] -= 3.0; + g_tTex1df4[c1] += 4.0; + + g_tTex1di4[c1] /= 2; + g_tTex1di4[c1] %= 2; + g_tTex1di4[c1] &= 0xffff; + g_tTex1di4[c1] |= 0xf0f0; + g_tTex1di4[c1] <<= 2; + g_tTex1di4[c1] >>= 2; + + // 2D + g_tTex2df4[c2] = SomeValue(); // complex L-value + g_tTex2df4[c2] = lf4; + g_tTex2di4[c2] = int4(5,2,3,4); + g_tTex2du4[c2] = uint4(6,2,3,4); + + // 3D + g_tTex3df4[c3] = SomeValue(); // complex L-value + g_tTex3df4[c3] = lf4; + g_tTex3di4[c3] = int4(8,6,7,8); + g_tTex3du4[c3] = uint4(9,2,3,4); + + // Test function calling + Fn1(g_tTex1df4[c1]); // in + Fn1(g_tTex1di4[c1]); // in + Fn1(g_tTex1du4[c1]); // in + + Fn2(g_tTex1df4[c1]); // out + Fn2(g_tTex1di4[c1]); // out + Fn2(g_tTex1du4[c1]); // out + + // Test increment operators + // pre-ops + ++g_tTex1df4[c1]; + ++g_tTex1di4[c1]; + ++g_tTex1du4[c1]; + + --g_tTex1df4[c1]; + --g_tTex1di4[c1]; + --g_tTex1du4[c1]; + + // post-ops + g_tTex1df4[c1]++; + g_tTex1du4[c1]--; + g_tTex1di4[c1]++; + + g_tTex1df4[c1]--; + g_tTex1di4[c1]++; + g_tTex1du4[c1]--; + + // read and write + g_tTex1df4[1] = g_tTex2df4[int2(2,3)]; + + psout.Color = 1.0; + + return psout; +} diff --git a/Test/hlsl.rw.scalar.bracket.frag b/Test/hlsl.rw.scalar.bracket.frag new file mode 100644 index 00000000..e185f05d --- /dev/null +++ b/Test/hlsl.rw.scalar.bracket.frag @@ -0,0 +1,140 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df1; +RWTexture1D g_tTex1di1; +RWTexture1D g_tTex1du1; + +RWTexture2D g_tTex2df1; +RWTexture2D g_tTex2di1; +RWTexture2D g_tTex2du1; + +RWTexture3D g_tTex3df1; +RWTexture3D g_tTex3di1; +RWTexture3D g_tTex3du1; + +RWTexture1DArray g_tTex1df1a; +RWTexture1DArray g_tTex1di1a; +RWTexture1DArray g_tTex1du1a; + +RWTexture2DArray g_tTex2df1a; +RWTexture2DArray g_tTex2di1a; +RWTexture2DArray g_tTex2du1a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +uniform float uf1; +uniform int ui1; +uniform uint uu1; + +int Fn1(in int x) { return x; } +uint Fn1(in uint x) { return x; } +float Fn1(in float x) { return x; } + +void Fn2(out int x) { x = int(0); } +void Fn2(out uint x) { x = uint(0); } +void Fn2(out float x) { x = float(0); } + +float SomeValue() { return c1; } + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df1[c1]; + + float r00 = g_tTex1df1[c1]; + int r01 = g_tTex1di1[c1]; + uint r02 = g_tTex1du1[c1]; + + // 2D + float r10 = g_tTex2df1[c2]; + int r11 = g_tTex2di1[c2]; + uint r12 = g_tTex2du1[c2]; + + // 3D + float r20 = g_tTex3df1[c3]; + int r21 = g_tTex3di1[c3]; + uint r22 = g_tTex3du1[c3]; + + float lf1 = uf1; + + // Test as L-values + // 1D + g_tTex1df1[c1] = SomeValue(); // complex R-value + g_tTex1df1[c1] = lf1; + g_tTex1di1[c1] = int(2); + g_tTex1du1[c1] = uint(3); + + // Test some operator= things, which need to do both a load and a store. + float val1 = (g_tTex1df1[c1] *= 2.0); + g_tTex1df1[c1] -= 3.0; + g_tTex1df1[c1] += 4.0; + + g_tTex1di1[c1] /= 2; + g_tTex1di1[c1] %= 2; + g_tTex1di1[c1] &= 0xffff; + g_tTex1di1[c1] |= 0xf0f0; + g_tTex1di1[c1] <<= 2; + g_tTex1di1[c1] >>= 2; + + // 2D + g_tTex2df1[c2] = SomeValue(); // complex L-value + g_tTex2df1[c2] = lf1; + g_tTex2di1[c2] = int(5); + g_tTex2du1[c2] = uint(6); + + // 3D + g_tTex3df1[c3] = SomeValue(); // complex L-value + g_tTex3df1[c3] = lf1; + g_tTex3di1[c3] = int(8); + g_tTex3du1[c3] = uint(9); + + // Test function calling + Fn1(g_tTex1df1[c1]); // in + Fn1(g_tTex1di1[c1]); // in + Fn1(g_tTex1du1[c1]); // in + + Fn2(g_tTex1df1[c1]); // out + Fn2(g_tTex1di1[c1]); // out + Fn2(g_tTex1du1[c1]); // out + + // Test increment operators + // pre-ops + ++g_tTex1df1[c1]; + ++g_tTex1di1[c1]; + ++g_tTex1du1[c1]; + + --g_tTex1df1[c1]; + --g_tTex1di1[c1]; + --g_tTex1du1[c1]; + + // post-ops + g_tTex1df1[c1]++; + g_tTex1du1[c1]--; + g_tTex1di1[c1]++; + + g_tTex1df1[c1]--; + g_tTex1di1[c1]++; + g_tTex1du1[c1]--; + + // read and write + g_tTex1df1[1] = g_tTex2df1[int2(2, 3)]; + + psout.Color = 1.0; + + return psout; +} diff --git a/Test/hlsl.rw.vec2.bracket.frag b/Test/hlsl.rw.vec2.bracket.frag new file mode 100644 index 00000000..7b4a10a8 --- /dev/null +++ b/Test/hlsl.rw.vec2.bracket.frag @@ -0,0 +1,140 @@ +SamplerState g_sSamp : register(s0); + +RWTexture1D g_tTex1df2; +RWTexture1D g_tTex1di2; +RWTexture1D g_tTex1du2; + +RWTexture2D g_tTex2df2; +RWTexture2D g_tTex2di2; +RWTexture2D g_tTex2du2; + +RWTexture3D g_tTex3df2; +RWTexture3D g_tTex3di2; +RWTexture3D g_tTex3du2; + +RWTexture1DArray g_tTex1df2a; +RWTexture1DArray g_tTex1di2a; +RWTexture1DArray g_tTex1du2a; + +RWTexture2DArray g_tTex2df2a; +RWTexture2DArray g_tTex2di2a; +RWTexture2DArray g_tTex2du2a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +uniform float2 uf2; +uniform int2 ui2; +uniform uint2 uu2; + +int2 Fn1(in int2 x) { return x; } +uint2 Fn1(in uint2 x) { return x; } +float2 Fn1(in float2 x) { return x; } + +void Fn2(out int2 x) { x = int2(0,0); } +void Fn2(out uint2 x) { x = uint2(0,0); } +void Fn2(out float2 x) { x = float2(0,0); } + +float2 SomeValue() { return c2; } + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df2[c1]; + + float2 r00 = g_tTex1df2[c1]; + int2 r01 = g_tTex1di2[c1]; + uint2 r02 = g_tTex1du2[c1]; + + // 2D + float2 r10 = g_tTex2df2[c2]; + int2 r11 = g_tTex2di2[c2]; + uint2 r12 = g_tTex2du2[c2]; + + // 3D + float2 r20 = g_tTex3df2[c3]; + int2 r21 = g_tTex3di2[c3]; + uint2 r22 = g_tTex3du2[c3]; + + float2 lf2 = uf2; + + // Test as L-values + // 1D + g_tTex1df2[c1] = SomeValue(); // complex R-value + g_tTex1df2[c1] = lf2; + g_tTex1di2[c1] = int2(2,2); + g_tTex1du2[c1] = uint2(3,2); + + // Test some operator= things, which need to do both a load and a store. + float2 val1 = (g_tTex1df2[c1] *= 2.0); + g_tTex1df2[c1] -= 3.0; + g_tTex1df2[c1] += 4.0; + + g_tTex1di2[c1] /= 2; + g_tTex1di2[c1] %= 2; + g_tTex1di2[c1] &= 0xffff; + g_tTex1di2[c1] |= 0xf0f0; + g_tTex1di2[c1] <<= 2; + g_tTex1di2[c1] >>= 2; + + // 2D + g_tTex2df2[c2] = SomeValue(); // complex L-value + g_tTex2df2[c2] = lf2; + g_tTex2di2[c2] = int2(5,2); + g_tTex2du2[c2] = uint2(6,2); + + // 3D + g_tTex3df2[c3] = SomeValue(); // complex L-value + g_tTex3df2[c3] = lf2; + g_tTex3di2[c3] = int2(8,6); + g_tTex3du2[c3] = uint2(9,2); + + // Test function calling + Fn1(g_tTex1df2[c1]); // in + Fn1(g_tTex1di2[c1]); // in + Fn1(g_tTex1du2[c1]); // in + + Fn2(g_tTex1df2[c1]); // out + Fn2(g_tTex1di2[c1]); // out + Fn2(g_tTex1du2[c1]); // out + + // Test increment operators + // pre-ops + ++g_tTex1df2[c1]; + ++g_tTex1di2[c1]; + ++g_tTex1du2[c1]; + + --g_tTex1df2[c1]; + --g_tTex1di2[c1]; + --g_tTex1du2[c1]; + + // post-ops + g_tTex1df2[c1]++; + g_tTex1du2[c1]--; + g_tTex1di2[c1]++; + + g_tTex1df2[c1]--; + g_tTex1di2[c1]++; + g_tTex1du2[c1]--; + + // read and write + g_tTex1df2[1] = g_tTex2df2[int2(2,3)]; + + psout.Color = 1.0; + + return psout; +} diff --git a/Test/hlsl.sample.array.dx10.frag b/Test/hlsl.sample.array.dx10.frag new file mode 100644 index 00000000..2c680045 --- /dev/null +++ b/Test/hlsl.sample.array.dx10.frag @@ -0,0 +1,43 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4; +Texture1DArray g_tTex1du4; + +Texture2DArray g_tTex2df4; +Texture2DArray g_tTex2di4; +Texture2DArray g_tTex2du4; + +TextureCubeArray g_tTexcdf4; +TextureCubeArray g_tTexcdi4; +TextureCubeArray g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . Sample(g_sSamp, float2(0.1, 0.2)); + int4 txval11 = g_tTex1di4 . Sample(g_sSamp, float2(0.2, 0.3)); + uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, float2(0.3, 0.4)); + + float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3)); + int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float3(0.3, 0.4, 0.5)); + uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float3(0.5, 0.6, 0.7)); + + float4 txval40 = g_tTexcdf4 . Sample(g_sSamp, float4(0.1, 0.2, 0.3, 0.4)); + int4 txval41 = g_tTexcdi4 . Sample(g_sSamp, float4(0.4, 0.5, 0.6, 0.7)); + uint4 txval42 = g_tTexcdu4 . Sample(g_sSamp, float4(0.7, 0.8, 0.9, 1.0)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.sample.basic.dx10.frag b/Test/hlsl.sample.basic.dx10.frag new file mode 100644 index 00000000..03e83ef9 --- /dev/null +++ b/Test/hlsl.sample.basic.dx10.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 g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube 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/hlsl.sample.offset.dx10.frag b/Test/hlsl.sample.offset.dx10.frag new file mode 100644 index 00000000..65ce7e48 --- /dev/null +++ b/Test/hlsl.sample.offset.dx10.frag @@ -0,0 +1,49 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . Sample(g_sSamp, 0.1, 1); + int4 txval11 = g_tTex1di4 . Sample(g_sSamp, 0.2, 1); + uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, 0.3, 1); + + float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float2(0.1, 0.2), int2(1,0)); + int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float2(0.3, 0.4), int2(1,1)); + uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float2(0.5, 0.6), int2(1,-1)); + + float4 txval30 = g_tTex3df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3), int3(1,0,1)); + int4 txval31 = g_tTex3di4 . Sample(g_sSamp, float3(0.4, 0.5, 0.6), int3(1,1,1)); + uint4 txval32 = g_tTex3du4 . Sample(g_sSamp, float3(0.7, 0.8, 0.9), int3(1,0,-1)); + + // There are no offset forms of cube textures, so we do not test them. + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.sample.offsetarray.dx10.frag b/Test/hlsl.sample.offsetarray.dx10.frag new file mode 100644 index 00000000..616c8ddd --- /dev/null +++ b/Test/hlsl.sample.offsetarray.dx10.frag @@ -0,0 +1,37 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4; +Texture1DArray g_tTex1du4; + +Texture2DArray g_tTex2df4; +Texture2DArray g_tTex2di4; +Texture2DArray g_tTex2du4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . Sample(g_sSamp, float2(0.1, 0.2), 0); + int4 txval11 = g_tTex1di4 . Sample(g_sSamp, float2(0.2, 0.3), 1); + uint4 txval12 = g_tTex1du4 . Sample(g_sSamp, float2(0.3, 0.4), 2); + + float4 txval20 = g_tTex2df4 . Sample(g_sSamp, float3(0.1, 0.2, 0.3), int2(0,0)); + int4 txval21 = g_tTex2di4 . Sample(g_sSamp, float3(0.3, 0.4, 0.5), int2(0,0)); + uint4 txval22 = g_tTex2du4 . Sample(g_sSamp, float3(0.5, 0.6, 0.7), int2(0,1)); + + // No offset array forms for 3D or cube + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.sample.sub-vec4.dx10.frag b/Test/hlsl.sample.sub-vec4.dx10.frag new file mode 100644 index 00000000..991d976a --- /dev/null +++ b/Test/hlsl.sample.sub-vec4.dx10.frag @@ -0,0 +1,24 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df1; +Texture1D g_tTex1df2; +Texture1D g_tTex1df3; +Texture1D g_tTex1df4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float txval10 = g_tTex1df1 . Sample(g_sSamp, 0.1); + float2 txval11 = g_tTex1df2 . Sample(g_sSamp, 0.2); + float3 txval12 = g_tTex1df3 . Sample(g_sSamp, 0.2); + float4 txval13 = g_tTex1df4 . Sample(g_sSamp, 0.2); + + psout.Color = 1.0; + return psout; +} diff --git a/Test/hlsl.samplebias.array.dx10.frag b/Test/hlsl.samplebias.array.dx10.frag new file mode 100644 index 00000000..ba4e197f --- /dev/null +++ b/Test/hlsl.samplebias.array.dx10.frag @@ -0,0 +1,43 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4; +Texture1DArray g_tTex1du4; + +Texture2DArray g_tTex2df4; +Texture2DArray g_tTex2di4; +Texture2DArray g_tTex2du4; + +TextureCubeArray g_tTexcdf4; +TextureCubeArray g_tTexcdi4; +TextureCubeArray g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . SampleBias(g_sSamp, float2(0.1, 0.2), 0.5); + int4 txval11 = g_tTex1di4 . SampleBias(g_sSamp, float2(0.2, 0.3), 0.5); + uint4 txval12 = g_tTex1du4 . SampleBias(g_sSamp, float2(0.3, 0.4), 0.5); + + float4 txval20 = g_tTex2df4 . SampleBias(g_sSamp, float3(0.1, 0.2, 0.3), 0.5); + int4 txval21 = g_tTex2di4 . SampleBias(g_sSamp, float3(0.3, 0.4, 0.5), 0.5); + uint4 txval22 = g_tTex2du4 . SampleBias(g_sSamp, float3(0.5, 0.6, 0.7), 0.5); + + float4 txval40 = g_tTexcdf4 . SampleBias(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.5); + int4 txval41 = g_tTexcdi4 . SampleBias(g_sSamp, float4(0.4, 0.5, 0.6, 0.7), 0.5); + uint4 txval42 = g_tTexcdu4 . SampleBias(g_sSamp, float4(0.7, 0.8, 0.9, 1.0), 0.5); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplebias.basic.dx10.frag b/Test/hlsl.samplebias.basic.dx10.frag new file mode 100644 index 00000000..09138616 --- /dev/null +++ b/Test/hlsl.samplebias.basic.dx10.frag @@ -0,0 +1,51 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . SampleBias(g_sSamp, 0.1, 0.5); + int4 txval11 = g_tTex1di4 . SampleBias(g_sSamp, 0.2, 0.5); + uint4 txval12 = g_tTex1du4 . SampleBias(g_sSamp, 0.3, 0.5); + + float4 txval20 = g_tTex2df4 . SampleBias(g_sSamp, float2(0.1, 0.2), 0.5); + int4 txval21 = g_tTex2di4 . SampleBias(g_sSamp, float2(0.3, 0.4), 0.5); + uint4 txval22 = g_tTex2du4 . SampleBias(g_sSamp, float2(0.5, 0.6), 0.5); + + float4 txval30 = g_tTex3df4 . SampleBias(g_sSamp, float3(0.1, 0.2, 0.3), 0.5); + int4 txval31 = g_tTex3di4 . SampleBias(g_sSamp, float3(0.4, 0.5, 0.6), 0.5); + uint4 txval32 = g_tTex3du4 . SampleBias(g_sSamp, float3(0.7, 0.8, 0.9), 0.5); + + float4 txval40 = g_tTexcdf4 . SampleBias(g_sSamp, float3(0.1, 0.2, 0.3), 0.5); + int4 txval41 = g_tTexcdi4 . SampleBias(g_sSamp, float3(0.4, 0.5, 0.6), 0.5); + uint4 txval42 = g_tTexcdu4 . SampleBias(g_sSamp, float3(0.7, 0.8, 0.9), 0.5); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplebias.offset.dx10.frag b/Test/hlsl.samplebias.offset.dx10.frag new file mode 100644 index 00000000..6f2f94c8 --- /dev/null +++ b/Test/hlsl.samplebias.offset.dx10.frag @@ -0,0 +1,49 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . SampleBias(g_sSamp, 0.1, 0.5, 1); + int4 txval11 = g_tTex1di4 . SampleBias(g_sSamp, 0.2, 0.5, 1); + uint4 txval12 = g_tTex1du4 . SampleBias(g_sSamp, 0.3, 0.5, 1); + + float4 txval20 = g_tTex2df4 . SampleBias(g_sSamp, float2(0.1, 0.2), 0.5, int2(1,0)); + int4 txval21 = g_tTex2di4 . SampleBias(g_sSamp, float2(0.3, 0.4), 0.5, int2(1,1)); + uint4 txval22 = g_tTex2du4 . SampleBias(g_sSamp, float2(0.5, 0.6), 0.5, int2(1,-1)); + + float4 txval30 = g_tTex3df4 . SampleBias(g_sSamp, float3(0.1, 0.2, 0.3), 0.5, int3(1,0,1)); + int4 txval31 = g_tTex3di4 . SampleBias(g_sSamp, float3(0.4, 0.5, 0.6), 0.5, int3(1,1,1)); + uint4 txval32 = g_tTex3du4 . SampleBias(g_sSamp, float3(0.7, 0.8, 0.9), 0.5, int3(1,0,-1)); + + // There are no offset forms of cube textures, so we do not test them. + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplebias.offsetarray.dx10.frag b/Test/hlsl.samplebias.offsetarray.dx10.frag new file mode 100644 index 00000000..b5f62968 --- /dev/null +++ b/Test/hlsl.samplebias.offsetarray.dx10.frag @@ -0,0 +1,37 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4; +Texture1DArray g_tTex1du4; + +Texture2DArray g_tTex2df4; +Texture2DArray g_tTex2di4; +Texture2DArray g_tTex2du4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . SampleBias(g_sSamp, float2(0.1, 0.2), 0.5, 0); + int4 txval11 = g_tTex1di4 . SampleBias(g_sSamp, float2(0.2, 0.3), 0.5, 1); + uint4 txval12 = g_tTex1du4 . SampleBias(g_sSamp, float2(0.3, 0.4), 0.5, 2); + + float4 txval20 = g_tTex2df4 . SampleBias(g_sSamp, float3(0.1, 0.2, 0.3), 0.5, int2(0,0)); + int4 txval21 = g_tTex2di4 . SampleBias(g_sSamp, float3(0.3, 0.4, 0.5), 0.5, int2(0,0)); + uint4 txval22 = g_tTex2du4 . SampleBias(g_sSamp, float3(0.5, 0.6, 0.7), 0.5, int2(0,1)); + + // No offset array forms for 3D or cube + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplecmp.array.dx10.frag b/Test/hlsl.samplecmp.array.dx10.frag new file mode 100644 index 00000000..f0e0a3dc --- /dev/null +++ b/Test/hlsl.samplecmp.array.dx10.frag @@ -0,0 +1,60 @@ +SamplerComparisonState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1DArray + float r10 = g_tTex1df4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); + float r12 = g_tTex1di4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); + float r14 = g_tTex1du4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); + + // 2DArray + float r30 = g_tTex2df4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + float r32 = g_tTex2di4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + float r34 = g_tTex2du4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + + // CubeArray + float r60 = g_tTexcdf4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); + float r62 = g_tTexcdi4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); + float r64 = g_tTexcdu4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplecmp.basic.dx10.frag b/Test/hlsl.samplecmp.basic.dx10.frag new file mode 100644 index 00000000..cb73e14f --- /dev/null +++ b/Test/hlsl.samplecmp.basic.dx10.frag @@ -0,0 +1,61 @@ +SamplerComparisonState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + float r00 = g_tTex1df4 . SampleCmp(g_sSamp, 0.1, 0.75); + float r02 = g_tTex1di4 . SampleCmp(g_sSamp, 0.1, 0.75); + float r04 = g_tTex1du4 . SampleCmp(g_sSamp, 0.1, 0.75); + + // 2D + float r20 = g_tTex2df4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); + float r22 = g_tTex2di4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); + float r24 = g_tTex2du4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75); + + // *** There's no SampleCmp on 3D textures + + float r50 = g_tTexcdf4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + float r52 = g_tTexcdi4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + float r54 = g_tTexcdu4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplecmp.offset.dx10.frag b/Test/hlsl.samplecmp.offset.dx10.frag new file mode 100644 index 00000000..444dac8e --- /dev/null +++ b/Test/hlsl.samplecmp.offset.dx10.frag @@ -0,0 +1,66 @@ +SamplerComparisonState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + float r01 = g_tTex1df4 . SampleCmp(g_sSamp, 0.1, 0.75, 2); + float r03 = g_tTex1di4 . SampleCmp(g_sSamp, 0.1, 0.75, 2); + float r05 = g_tTex1du4 . SampleCmp(g_sSamp, 0.1, 0.75, 2); + + // 2D + float r21 = g_tTex2df4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); + float r23 = g_tTex2di4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); + float r25 = g_tTex2du4 . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); + + // *** There's no SampleCmp on 3D textures + + // This page: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509696(v=vs.85).aspx + // claims offset is supported for cube textures, but FXC does not accept it, and that does + // not match other methods, so it may be a documentation bug. Those lines are commented + // out below. + // Cube + // float r51 = g_tTexcdf4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int3(2,3,4)); + // float r53 = g_tTexcdi4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int3(2,3,4)); + // float r55 = g_tTexcdu4 . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int3(2,3,4)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplecmp.offsetarray.dx10.frag b/Test/hlsl.samplecmp.offsetarray.dx10.frag new file mode 100644 index 00000000..319d5cdd --- /dev/null +++ b/Test/hlsl.samplecmp.offsetarray.dx10.frag @@ -0,0 +1,67 @@ +SamplerComparisonState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1DArray + float r11 = g_tTex1df4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, 2); + float r13 = g_tTex1di4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, 2); + float r15 = g_tTex1du4a . SampleCmp(g_sSamp, float2(0.1, 0.2), 0.75, 2); + + // 2DArray + float r31 = g_tTex2df4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); + float r33 = g_tTex2di4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); + float r35 = g_tTex2du4a . SampleCmp(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); + + // *** There's no SampleCmp on 3D textures + + // This page: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509696(v=vs.85).aspx + // claims offset is supported for cube textures, but FXC does not accept it, and that does + // not match other methods, so it may be a documentation bug. Those lines are commented + // out below. + + // CubeArray + // float r61 = g_tTexcdf4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); + // float r63 = g_tTexcdi4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); + // float r65 = g_tTexcdu4a . SampleCmp(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplecmplevelzero.array.dx10.frag b/Test/hlsl.samplecmplevelzero.array.dx10.frag new file mode 100644 index 00000000..41b6a793 --- /dev/null +++ b/Test/hlsl.samplecmplevelzero.array.dx10.frag @@ -0,0 +1,60 @@ +SamplerComparisonState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1DArray + float r10 = g_tTex1df4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); + float r12 = g_tTex1di4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); + float r14 = g_tTex1du4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); + + // 2DArray + float r30 = g_tTex2df4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + float r32 = g_tTex2di4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + float r34 = g_tTex2du4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + + // CubeArray + float r60 = g_tTexcdf4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); + float r62 = g_tTexcdi4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); + float r64 = g_tTexcdu4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplecmplevelzero.basic.dx10.frag b/Test/hlsl.samplecmplevelzero.basic.dx10.frag new file mode 100644 index 00000000..841530a1 --- /dev/null +++ b/Test/hlsl.samplecmplevelzero.basic.dx10.frag @@ -0,0 +1,61 @@ +SamplerComparisonState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + float r00 = g_tTex1df4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75); + float r02 = g_tTex1di4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75); + float r04 = g_tTex1du4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75); + + // 2D + float r20 = g_tTex2df4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); + float r22 = g_tTex2di4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); + float r24 = g_tTex2du4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75); + + // *** There's no SampleCmpLevelZero on 3D textures + + float r50 = g_tTexcdf4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + float r52 = g_tTexcdi4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + float r54 = g_tTexcdu4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplecmplevelzero.offset.dx10.frag b/Test/hlsl.samplecmplevelzero.offset.dx10.frag new file mode 100644 index 00000000..290774e2 --- /dev/null +++ b/Test/hlsl.samplecmplevelzero.offset.dx10.frag @@ -0,0 +1,66 @@ +SamplerComparisonState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + float r01 = g_tTex1df4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75, 2); + float r03 = g_tTex1di4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75, 2); + float r05 = g_tTex1du4 . SampleCmpLevelZero(g_sSamp, 0.1, 0.75, 2); + + // 2D + float r21 = g_tTex2df4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); + float r23 = g_tTex2di4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); + float r25 = g_tTex2du4 . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, int2(2,3)); + + // *** There's no SampleCmpLevelZero on 3D textures + + // This page: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509696(v=vs.85).aspx + // claims offset is supported for cube textures, but FXC does not accept it, and that does + // not match other methods, so it may be a documentation bug. Those lines are commented + // out below. + // Cube + // float r51 = g_tTexcdf4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); + // float r53 = g_tTexcdi4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); + // float r55 = g_tTexcdu4 . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplecmplevelzero.offsetarray.dx10.frag b/Test/hlsl.samplecmplevelzero.offsetarray.dx10.frag new file mode 100644 index 00000000..b57502ea --- /dev/null +++ b/Test/hlsl.samplecmplevelzero.offsetarray.dx10.frag @@ -0,0 +1,67 @@ +SamplerComparisonState g_sSamp : register(s0); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1DArray + float r11 = g_tTex1df4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, 2); + float r13 = g_tTex1di4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, 2); + float r15 = g_tTex1du4a . SampleCmpLevelZero(g_sSamp, float2(0.1, 0.2), 0.75, 2); + + // 2DArray + float r31 = g_tTex2df4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); + float r33 = g_tTex2di4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); + float r35 = g_tTex2du4a . SampleCmpLevelZero(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(2,3)); + + // *** There's no SampleCmpLevelZero on 3D textures + + // This page: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509696(v=vs.85).aspx + // claims offset is supported for cube textures, but FXC does not accept it, and that does + // not match other methods, so it may be a documentation bug. Those lines are commented + // out below. + + // CubeArray + // float r61 = g_tTexcdf4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); + // float r63 = g_tTexcdi4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); + // float r65 = g_tTexcdu4a . SampleCmpLevelZero(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75, int3(2,3,4)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplegrad.array.dx10.frag b/Test/hlsl.samplegrad.array.dx10.frag new file mode 100644 index 00000000..c442b7f8 --- /dev/null +++ b/Test/hlsl.samplegrad.array.dx10.frag @@ -0,0 +1,43 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4; +Texture1DArray g_tTex1du4; + +Texture2DArray g_tTex2df4; +Texture2DArray g_tTex2di4; +Texture2DArray g_tTex2du4; + +TextureCubeArray g_tTexcdf4; +TextureCubeArray g_tTexcdi4; +TextureCubeArray g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2); + int4 txval11 = g_tTex1di4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2); + uint4 txval12 = g_tTex1du4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2); + + float4 txval20 = g_tTex2df4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2)); + int4 txval21 = g_tTex2di4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2)); + uint4 txval22 = g_tTex2du4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2)); + + float4 txval40 = g_tTexcdf4 . SampleGrad(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + int4 txval41 = g_tTexcdi4 . SampleGrad(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + uint4 txval42 = g_tTexcdu4 . SampleGrad(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplegrad.basic.dx10.frag b/Test/hlsl.samplegrad.basic.dx10.frag new file mode 100644 index 00000000..84236f2a --- /dev/null +++ b/Test/hlsl.samplegrad.basic.dx10.frag @@ -0,0 +1,51 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . SampleGrad(g_sSamp, 0.1, 1.1, 1.2); + int4 txval11 = g_tTex1di4 . SampleGrad(g_sSamp, 0.2, 1.1, 1.2); + uint4 txval12 = g_tTex1du4 . SampleGrad(g_sSamp, 0.3, 1.1, 1.2); + + float4 txval20 = g_tTex2df4 . SampleGrad(g_sSamp, float2(0.1, 0.2), float2(1.1, 1.2), float2(1.1, 1.2)); + int4 txval21 = g_tTex2di4 . SampleGrad(g_sSamp, float2(0.3, 0.4), float2(1.1, 1.2), float2(1.1, 1.2)); + uint4 txval22 = g_tTex2du4 . SampleGrad(g_sSamp, float2(0.5, 0.6), float2(1.1, 1.2), float2(1.1, 1.2)); + + float4 txval30 = g_tTex3df4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + int4 txval31 = g_tTex3di4 . SampleGrad(g_sSamp, float3(0.4, 0.5, 0.6), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + uint4 txval32 = g_tTex3du4 . SampleGrad(g_sSamp, float3(0.7, 0.8, 0.9), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + + float4 txval40 = g_tTexcdf4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + int4 txval41 = g_tTexcdi4 . SampleGrad(g_sSamp, float3(0.4, 0.5, 0.6), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + uint4 txval42 = g_tTexcdu4 . SampleGrad(g_sSamp, float3(0.7, 0.8, 0.9), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplegrad.basic.dx10.vert b/Test/hlsl.samplegrad.basic.dx10.vert new file mode 100644 index 00000000..43ec6213 --- /dev/null +++ b/Test/hlsl.samplegrad.basic.dx10.vert @@ -0,0 +1,49 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct VS_OUTPUT +{ + float4 Pos : SV_Position; +}; + +VS_OUTPUT main() +{ + VS_OUTPUT vsout; + + float4 txval10 = g_tTex1df4 . SampleGrad(g_sSamp, 0.1, 1.1, 1.2); + int4 txval11 = g_tTex1di4 . SampleGrad(g_sSamp, 0.2, 1.1, 1.2); + uint4 txval12 = g_tTex1du4 . SampleGrad(g_sSamp, 0.3, 1.1, 1.2); + + float4 txval20 = g_tTex2df4 . SampleGrad(g_sSamp, float2(0.1, 0.2), float2(1.1, 1.2), float2(1.1, 1.2)); + int4 txval21 = g_tTex2di4 . SampleGrad(g_sSamp, float2(0.3, 0.4), float2(1.1, 1.2), float2(1.1, 1.2)); + uint4 txval22 = g_tTex2du4 . SampleGrad(g_sSamp, float2(0.5, 0.6), float2(1.1, 1.2), float2(1.1, 1.2)); + + float4 txval30 = g_tTex3df4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + int4 txval31 = g_tTex3di4 . SampleGrad(g_sSamp, float3(0.4, 0.5, 0.6), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + uint4 txval32 = g_tTex3du4 . SampleGrad(g_sSamp, float3(0.7, 0.8, 0.9), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + + float4 txval40 = g_tTexcdf4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + int4 txval41 = g_tTexcdi4 . SampleGrad(g_sSamp, float3(0.4, 0.5, 0.6), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + uint4 txval42 = g_tTexcdu4 . SampleGrad(g_sSamp, float3(0.7, 0.8, 0.9), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3)); + + vsout.Pos = float4(0,0,0,0); + + return vsout; +} diff --git a/Test/hlsl.samplegrad.offset.dx10.frag b/Test/hlsl.samplegrad.offset.dx10.frag new file mode 100644 index 00000000..c643be25 --- /dev/null +++ b/Test/hlsl.samplegrad.offset.dx10.frag @@ -0,0 +1,49 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . SampleGrad(g_sSamp, 0.1, 1.1, 1.2, 1); + int4 txval11 = g_tTex1di4 . SampleGrad(g_sSamp, 0.2, 1.1, 1.2, 1); + uint4 txval12 = g_tTex1du4 . SampleGrad(g_sSamp, 0.3, 1.1, 1.2, 1); + + float4 txval20 = g_tTex2df4 . SampleGrad(g_sSamp, float2(0.1, 0.2), float2(0.1, 0.2), float2(1.1, 1.2), int2(1,0)); + int4 txval21 = g_tTex2di4 . SampleGrad(g_sSamp, float2(0.3, 0.4), float2(0.1, 0.2), float2(1.1, 1.2), int2(1,1)); + uint4 txval22 = g_tTex2du4 . SampleGrad(g_sSamp, float2(0.5, 0.6), float2(0.1, 0.2), float2(1.1, 1.2), int2(1,-1)); + + float4 txval30 = g_tTex3df4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3), int3(1,0,1)); + int4 txval31 = g_tTex3di4 . SampleGrad(g_sSamp, float3(0.4, 0.5, 0.6), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3), int3(1,1,1)); + uint4 txval32 = g_tTex3du4 . SampleGrad(g_sSamp, float3(0.7, 0.8, 0.9), float3(1.1, 1.2, 1.3), float3(1.1, 1.2, 1.3), int3(1,0,-1)); + + // There are no offset forms of cube textures, so we do not test them. + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplegrad.offsetarray.dx10.frag b/Test/hlsl.samplegrad.offsetarray.dx10.frag new file mode 100644 index 00000000..3adcd184 --- /dev/null +++ b/Test/hlsl.samplegrad.offsetarray.dx10.frag @@ -0,0 +1,39 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4; +Texture1DArray g_tTex1du4; + +Texture2DArray g_tTex2df4; +Texture2DArray g_tTex2di4; +Texture2DArray g_tTex2du4; + +TextureCubeArray g_tTexcdf4; +TextureCubeArray g_tTexcdi4; +TextureCubeArray g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2, 1); + int4 txval11 = g_tTex1di4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2, 1); + uint4 txval12 = g_tTex1du4 . SampleGrad(g_sSamp, float2(0.1, 0.2), 1.1, 1.2, 1); + + float4 txval20 = g_tTex2df4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2), int2(1,0)); + int4 txval21 = g_tTex2di4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2), int2(1,0)); + uint4 txval22 = g_tTex2du4 . SampleGrad(g_sSamp, float3(0.1, 0.2, 0.3), float2(1.1, 1.2), float2(1.1, 1.2), int2(1,0)); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplelevel.array.dx10.frag b/Test/hlsl.samplelevel.array.dx10.frag new file mode 100644 index 00000000..c52aeb29 --- /dev/null +++ b/Test/hlsl.samplelevel.array.dx10.frag @@ -0,0 +1,43 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +TextureCubeArray g_tTexcdf4a; +TextureCubeArray g_tTexcdi4a; +TextureCubeArray g_tTexcdu4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4a . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75); + int4 txval11 = g_tTex1di4a . SampleLevel(g_sSamp, float2(0.2, 0.3), 0.75); + uint4 txval12 = g_tTex1du4a . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75); + + float4 txval20 = g_tTex2df4a . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + int4 txval21 = g_tTex2di4a . SampleLevel(g_sSamp, float3(0.3, 0.4, 0.5), 0.75); + uint4 txval22 = g_tTex2du4a . SampleLevel(g_sSamp, float3(0.5, 0.6, 0.7), 0.75); + + float4 txval40 = g_tTexcdf4a . SampleLevel(g_sSamp, float4(0.1, 0.2, 0.3, 0.4), 0.75); + int4 txval41 = g_tTexcdi4a . SampleLevel(g_sSamp, float4(0.4, 0.5, 0.6, 0.7), 0.75); + uint4 txval42 = g_tTexcdu4a . SampleLevel(g_sSamp, float4(0.7, 0.8, 0.9, 1.0), 0.75); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplelevel.basic.dx10.frag b/Test/hlsl.samplelevel.basic.dx10.frag new file mode 100644 index 00000000..fb363ae8 --- /dev/null +++ b/Test/hlsl.samplelevel.basic.dx10.frag @@ -0,0 +1,52 @@ +SamplerState g_sSamp : register(s0); +uniform sampler2D g_sSamp2d; + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, 0.1, 0.75); + int4 txval11 = g_tTex1di4 . SampleLevel(g_sSamp, 0.2, 0.75); + uint4 txval12 = g_tTex1du4 . SampleLevel(g_sSamp, 0.3, 0.75); + + float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75); + int4 txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75); + uint4 txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float2(0.5, 0.6), 0.75); + + float4 txval30 = g_tTex3df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + int4 txval31 = g_tTex3di4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75); + uint4 txval32 = g_tTex3du4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75); + + float4 txval40 = g_tTexcdf4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + int4 txval41 = g_tTexcdi4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75); + uint4 txval42 = g_tTexcdu4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75); + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplelevel.basic.dx10.vert b/Test/hlsl.samplelevel.basic.dx10.vert new file mode 100644 index 00000000..03febcff --- /dev/null +++ b/Test/hlsl.samplelevel.basic.dx10.vert @@ -0,0 +1,49 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct VS_OUTPUT +{ + float4 Pos : SV_Position; +}; + +VS_OUTPUT main() +{ + VS_OUTPUT vsout; + + float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, 0.1, 0.75); + int4 txval11 = g_tTex1di4 . SampleLevel(g_sSamp, 0.2, 0.75); + uint4 txval12 = g_tTex1du4 . SampleLevel(g_sSamp, 0.3, 0.75); + + float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75); + int4 txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75); + uint4 txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float2(0.5, 0.6), 0.75); + + float4 txval30 = g_tTex3df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + int4 txval31 = g_tTex3di4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75); + uint4 txval32 = g_tTex3du4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75); + + float4 txval40 = g_tTexcdf4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75); + int4 txval41 = g_tTexcdi4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75); + uint4 txval42 = g_tTexcdu4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75); + + vsout.Pos = float4(0,0,0,0); + + return vsout; +} diff --git a/Test/hlsl.samplelevel.offset.dx10.frag b/Test/hlsl.samplelevel.offset.dx10.frag new file mode 100644 index 00000000..14906116 --- /dev/null +++ b/Test/hlsl.samplelevel.offset.dx10.frag @@ -0,0 +1,49 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df4a : register(t1); + +uniform Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube g_tTexcdu4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, 0.1, 0.75, 1); + int4 txval11 = g_tTex1di4 . SampleLevel(g_sSamp, 0.2, 0.75, 1); + uint4 txval12 = g_tTex1du4 . SampleLevel(g_sSamp, 0.3, 0.75, 1); + + float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75, int2(1,0)); + int4 txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75, int2(1,1)); + uint4 txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float2(0.5, 0.6), 0.75, int2(1,-1)); + + float4 txval30 = g_tTex3df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int3(1,0,1)); + int4 txval31 = g_tTex3di4 . SampleLevel(g_sSamp, float3(0.4, 0.5, 0.6), 0.75, int3(1,1,1)); + uint4 txval32 = g_tTex3du4 . SampleLevel(g_sSamp, float3(0.7, 0.8, 0.9), 0.75, int3(1,0,-1)); + + // There are no offset forms of cube textures, so we do not test them. + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.samplelevel.offsetarray.dx10.frag b/Test/hlsl.samplelevel.offsetarray.dx10.frag new file mode 100644 index 00000000..5c7bd71a --- /dev/null +++ b/Test/hlsl.samplelevel.offsetarray.dx10.frag @@ -0,0 +1,37 @@ +SamplerState g_sSamp : register(s0); + +Texture1DArray g_tTex1df4a : register(t1); + +uniform Texture1DArray g_tTex1df4 : register(t0); +Texture1DArray g_tTex1di4; +Texture1DArray g_tTex1du4; + +Texture2DArray g_tTex2df4; +Texture2DArray g_tTex2di4; +Texture2DArray g_tTex2du4; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + float4 txval10 = g_tTex1df4 . SampleLevel(g_sSamp, float2(0.1, 0.2), 0.75, 0); + int4 txval11 = g_tTex1di4 . SampleLevel(g_sSamp, float2(0.2, 0.3), 0.75, 1); + uint4 txval12 = g_tTex1du4 . SampleLevel(g_sSamp, float2(0.3, 0.4), 0.75, 2); + + float4 txval20 = g_tTex2df4 . SampleLevel(g_sSamp, float3(0.1, 0.2, 0.3), 0.75, int2(0,0)); + int4 txval21 = g_tTex2di4 . SampleLevel(g_sSamp, float3(0.3, 0.4, 0.5), 0.75, int2(0,0)); + uint4 txval22 = g_tTex2du4 . SampleLevel(g_sSamp, float3(0.5, 0.6, 0.7), 0.75, int2(0,1)); + + // No offset array forms for 3D or cube + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/Test/hlsl.scope.frag b/Test/hlsl.scope.frag index 0d8cc1ad..a5309ca2 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.semicolons.frag b/Test/hlsl.semicolons.frag new file mode 100644 index 00000000..28fdedd9 --- /dev/null +++ b/Test/hlsl.semicolons.frag @@ -0,0 +1,19 @@ + +void MyFunc() { } + +;;; +; +; ; ; // HLSL allows stray global scope semicolons. + +void MyFunc2() {;;;}; + +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.shapeConv.frag b/Test/hlsl.shapeConv.frag new file mode 100644 index 00000000..0485b4a5 --- /dev/null +++ b/Test/hlsl.shapeConv.frag @@ -0,0 +1,32 @@ +float4 PixelShaderFunction(float4 input, float f) : COLOR0 +{ + float4 v; + v = 1; + v = 2.0; + v = f; + float3 u; + 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.shapeConvRet.frag b/Test/hlsl.shapeConvRet.frag new file mode 100755 index 00000000..7d775582 --- /dev/null +++ b/Test/hlsl.shapeConvRet.frag @@ -0,0 +1,9 @@ +int3 foo() +{ + return 13; +} + +float4 main(float f) +{ + return f; +} diff --git a/Test/hlsl.string.frag b/Test/hlsl.string.frag new file mode 100755 index 00000000..572e73b7 --- /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" ; float test [ 4 ] = { 1.0 , 1.0 , 1.0 , 1.0 } ; vector a = float3(2.0); > ; +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 00000000..fe785e6d --- /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 ; + +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 25c803d6..e602c9ed 100644 --- a/Test/hlsl.struct.frag +++ b/Test/hlsl.struct.frag @@ -12,29 +12,32 @@ struct myS { myS s1; -struct { +static struct { float4 i; } s2; -struct { +struct IN_S { linear float4 a; nointerpolation bool b; noperspective centroid float1 c; sample centroid float2 d; bool ff1 : SV_IsFrontFace; bool ff2 : packoffset(c0.y); - bool ff3 : packoffset(c0.y) : register(ps_5_0, s[0]) ; - float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s[0]) ; -} s4; + bool ff3 : packoffset(c0.y) : register(ps_5_0, s0) ; + float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s0) ; +}; -float4 PixelShaderFunction(float4 input) : COLOR0 +float ff5 : packoffset(c101.y) : register(ps_5_0, s[5]); +float ff6 : packoffset(c102.y) : register(s3[5]); + +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 00000000..7eba552d --- /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.swizzle.frag b/Test/hlsl.swizzle.frag index 231430a9..9e87c6d7 100644 --- a/Test/hlsl.swizzle.frag +++ b/Test/hlsl.swizzle.frag @@ -1,4 +1,4 @@ -float4 AmbientColor = float4(1, 0.5, 0, 1); +static float4 AmbientColor = float4(1, 0.5, 0, 1); float4 ShaderFunction(float4 input) : COLOR0 { diff --git a/Test/hlsl.tx.bracket.frag b/Test/hlsl.tx.bracket.frag new file mode 100644 index 00000000..0d3d81f8 --- /dev/null +++ b/Test/hlsl.tx.bracket.frag @@ -0,0 +1,73 @@ +SamplerState g_sSamp : register(s0); + +Texture1D g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +Texture1DArray g_tTex1df4a; +Texture1DArray g_tTex1di4a; +Texture1DArray g_tTex1du4a; + +Texture2DArray g_tTex2df4a; +Texture2DArray g_tTex2di4a; +Texture2DArray g_tTex2du4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform int c1; +uniform int2 c2; +uniform int3 c3; +uniform int4 c4; + +uniform int o1; +uniform int2 o2; +uniform int3 o3; +uniform int4 o4; + +int4 Fn1(in int4 x) { return x; } +uint4 Fn1(in uint4 x) { return x; } +float4 Fn1(in float4 x) { return x; } + +float4 SomeValue() { return c4; } + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + // 1D + g_tTex1df4[c1]; + + float4 r00 = g_tTex1df4[c1]; + int4 r01 = g_tTex1di4[c1]; + uint4 r02 = g_tTex1du4[c1]; + + // 2D + float4 r10 = g_tTex2df4[c2]; + int4 r11 = g_tTex2di4[c2]; + uint4 r12 = g_tTex2du4[c2]; + + // 3D + float4 r20 = g_tTex3df4[c3]; + int4 r21 = g_tTex3di4[c3]; + uint4 r22 = g_tTex3du4[c3]; + + // Test function calling + Fn1(g_tTex1df4[c1]); // in + Fn1(g_tTex1di4[c1]); // in + Fn1(g_tTex1du4[c1]); // in + + psout.Color = 1.0; + + return psout; +} diff --git a/Test/hlsl.void.frag b/Test/hlsl.void.frag index 9bf06b72..950bbd75 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/preprocessor.simple.vert b/Test/preprocessor.simple.vert index f4749f2a..35222719 100644 --- a/Test/preprocessor.simple.vert +++ b/Test/preprocessor.simple.vert @@ -19,4 +19,11 @@ int main() { gl_Position = vec4(Z); gl_Position = vec4(F); gl_Position = vec4(fn(3)); + [] . ++ -- + + - * % / - ! ~ + << >> < > <= >= + == != + & ^ | && ^^ || ? : + += -= *= /= %= <<= >>= &= |= ^= + 1.2 2E10 5u -5lf } diff --git a/Test/remap.basic.dcefunc.frag b/Test/remap.basic.dcefunc.frag new file mode 100644 index 00000000..714120ab --- /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 00000000..714120ab --- /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 00000000..714120ab --- /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 00000000..714120ab --- /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 00000000..03e83ef9 --- /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 g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube 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 00000000..03e83ef9 --- /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 g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube 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 00000000..03e83ef9 --- /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 g_tTex1df4 : register(t0); +Texture1D g_tTex1di4; +Texture1D g_tTex1du4; + +Texture2D g_tTex2df4; +Texture2D g_tTex2di4; +Texture2D g_tTex2du4; + +Texture3D g_tTex3df4; +Texture3D g_tTex3di4; +Texture3D g_tTex3du4; + +TextureCube g_tTexcdf4; +TextureCube g_tTexcdi4; +TextureCube 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 00000000..f48c98a7 --- /dev/null +++ b/Test/remap.hlsl.templatetypes.everything.frag @@ -0,0 +1,47 @@ + +float 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 r12 = bool1(false); + vector r13 = int1(1); + vector r14 = float1(1); + vector r15 = double1(1); + vector r16 = uint1(1); + + vector r20 = bool2(false, true); + vector r21 = int2(1,2); + vector r22 = float2(1,2); + vector r23 = double2(1,2); + vector r24 = uint2(1,2); + + vector r30 = bool3(false, true, true); + vector r31 = int3(1,2,3); + vector r32 = float3(1,2,3); + vector r33 = double3(1,2,3); + vector r34 = uint3(1,2,3); + + vector r40 = bool4(false, true, true, false); + vector r41 = int4(1,2,3,4); + vector r42 = float4(1,2,3,4); + vector r43 = double4(1,2,3,4); + vector 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 r60 = bool2x3(false, true, false, true, false, true); // TODO: + matrix r61 = float2x3(1,2,3,4,5,6); + matrix r62 = float3x2(1,2,3,4,5,6); + // matrix r63 = float4x1(1,2,3,4); // TODO: + // matrix r64 = float1x4(1,2,3,4); // TODO: + matrix r65 = float4x2(1,2,3,4,5,6,7,8); + matrix 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 00000000..f48c98a7 --- /dev/null +++ b/Test/remap.hlsl.templatetypes.none.frag @@ -0,0 +1,47 @@ + +float 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 r12 = bool1(false); + vector r13 = int1(1); + vector r14 = float1(1); + vector r15 = double1(1); + vector r16 = uint1(1); + + vector r20 = bool2(false, true); + vector r21 = int2(1,2); + vector r22 = float2(1,2); + vector r23 = double2(1,2); + vector r24 = uint2(1,2); + + vector r30 = bool3(false, true, true); + vector r31 = int3(1,2,3); + vector r32 = float3(1,2,3); + vector r33 = double3(1,2,3); + vector r34 = uint3(1,2,3); + + vector r40 = bool4(false, true, true, false); + vector r41 = int4(1,2,3,4); + vector r42 = float4(1,2,3,4); + vector r43 = double4(1,2,3,4); + vector 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 r60 = bool2x3(false, true, false, true, false, true); // TODO: + matrix r61 = float2x3(1,2,3,4,5,6); + matrix r62 = float3x2(1,2,3,4,5,6); + // matrix r63 = float4x1(1,2,3,4); // TODO: + // matrix r64 = float1x4(1,2,3,4); // TODO: + matrix r65 = float4x2(1,2,3,4,5,6,7,8); + matrix 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 00000000..3fedfc43 --- /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 00000000..3fedfc43 --- /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 00000000..88103c49 Binary files /dev/null and b/Test/remap.literal64.everything.spv differ diff --git a/Test/remap.literal64.none.spv b/Test/remap.literal64.none.spv new file mode 100644 index 00000000..88103c49 Binary files /dev/null and b/Test/remap.literal64.none.spv differ diff --git a/Test/remap.similar_1a.everything.frag b/Test/remap.similar_1a.everything.frag new file mode 100644 index 00000000..6eddbc51 --- /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 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 00000000..6eddbc51 --- /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 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 00000000..46009451 --- /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 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 00000000..46009451 --- /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 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 00000000..140c0792 --- /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 00000000..140c0792 --- /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 00000000..4f642e6e --- /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 00000000..4f642e6e --- /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 ae7ed450..06403912 100755 --- a/Test/runtests +++ b/Test/runtests @@ -18,12 +18,24 @@ fi rm -f comp.spv frag.spv geom.spv tesc.spv tese.spv vert.spv +# +# special tests +# + +$EXE badMacroArgs.frag > $TARGETDIR/badMacroArgs.frag.out +diff -b $BASEDIR/badMacroArgs.frag.out $TARGETDIR/badMacroArgs.frag.out || HASERROR=1 + # # reflection tests # 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 +$EXE -D -e main -l -q -C -V hlsl.reflection.binding.frag > $TARGETDIR/hlsl.reflection.binding.frag.out +diff -b $BASEDIR/hlsl.reflection.binding.frag.out $TARGETDIR/hlsl.reflection.binding.frag.out || HASERROR=1 + # # multi-threaded test diff --git a/Test/spv.400.frag b/Test/spv.400.frag index 05b4370b..d64c4700 100644 --- a/Test/spv.400.frag +++ b/Test/spv.400.frag @@ -259,5 +259,7 @@ void main() uo = u % i; foo23(); doubles(); + + int id = gl_PrimitiveID; } diff --git a/Test/spv.450.tesc b/Test/spv.450.tesc index 0f8ec5cb..c3719f96 100644 --- a/Test/spv.450.tesc +++ b/Test/spv.450.tesc @@ -18,3 +18,15 @@ layout(location = 12) patch out TheBlock { 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 41ec0ca3..c7f805b5 100644 --- a/Test/spv.accessChain.frag +++ b/Test/spv.accessChain.frag @@ -71,7 +71,7 @@ void GetColor12(const S i, int comp) 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.buffer.autoassign.frag b/Test/spv.buffer.autoassign.frag new file mode 100644 index 00000000..46442609 --- /dev/null +++ b/Test/spv.buffer.autoassign.frag @@ -0,0 +1,28 @@ + +cbuffer MyUB1 : register(b5) // explicitly assigned & offsetted +{ + float g_a; + int g_b; +}; + +cbuffer MyUB2 // implicitly assigned +{ + float g_c; +}; + +cbuffer MyUB3 // implicitly assigned +{ + float g_d; +}; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + psout.Color = g_a + g_b + g_c + g_d; + return psout; +} diff --git a/Test/spv.float16.frag b/Test/spv.float16.frag new file mode 100644 index 00000000..7c94a515 --- /dev/null +++ b/Test/spv.float16.frag @@ -0,0 +1,306 @@ +#version 450 core + +#extension GL_AMD_gpu_shader_half_float: enable +#extension GL_ARB_gpu_shader_int64: enable + +void main() +{ +} + +// Half float literals +void literal() +{ + const float16_t f16c = 0.000001hf; + const f16vec2 f16cv = f16vec2(-0.25HF, 0.03HF); + + f16vec2 f16v; + f16v.x = f16c; + f16v += f16cv; +} + +// Block memory layout +struct S +{ + float16_t x; // rule 1: align = 2, takes offsets 0-1 + f16vec2 y; // rule 2: align = 4, takes offsets 4-7 + f16vec3 z; // rule 3: align = 8, takes offsets 8-13 +}; + +layout(column_major, std140) uniform B1 +{ + float16_t a; // rule 1: align = 2, takes offsets 0-1 + f16vec2 b; // rule 2: align = 4, takes offsets 4-7 + f16vec3 c; // rule 3: align = 8, takes offsets 8-15 + float16_t d[2]; // rule 4: align = 16, array stride = 16, + // takes offsets 16-47 + f16mat2x3 e; // rule 5: align = 16, matrix stride = 16, + // takes offsets 48-79 + f16mat2x3 f[2]; // rule 6: align = 16, matrix stride = 16, + // array stride = 32, f[0] takes + // offsets 80-111, f[1] takes offsets + // 112-143 + S g; // rule 9: align = 16, g.x takes offsets + // 144-145, g.y takes offsets 148-151, + // g.z takes offsets 152-159 + S h[2]; // rule 10: align = 16, array stride = 16, h[0] + // takes offsets 160-175, h[1] takes + // offsets 176-191 +}; + +layout(row_major, std430) buffer B2 +{ + float16_t o; // rule 1: align = 2, takes offsets 0-1 + f16vec2 p; // rule 2: align = 4, takes offsets 4-7 + f16vec3 q; // rule 3: align = 8, takes offsets 8-13 + float16_t r[2]; // rule 4: align = 2, array stride = 2, takes + // offsets 14-17 + f16mat2x3 s; // rule 7: align = 4, matrix stride = 4, takes + // offsets 20-31 + f16mat2x3 t[2]; // rule 8: align = 4, matrix stride = 4, array + // stride = 12, t[0] takes offsets + // 32-43, t[1] takes offsets 44-55 + S u; // rule 9: align = 8, u.x takes offsets + // 56-57, u.y takes offsets 60-63, u.z + // takes offsets 64-69 + S v[2]; // rule 10: align = 8, array stride = 16, v[0] + // takes offsets 72-87, v[1] takes + // offsets 88-103 +}; + +// Specialization constant +layout(constant_id = 100) const float16_t sf16 = 0.125hf; +layout(constant_id = 101) const float sf = 0.25; +layout(constant_id = 102) const double sd = 0.5lf; + +const float f16_to_f = float(sf16); +const double f16_to_d = float(sf16); + +const float16_t f_to_f16 = float16_t(sf); +const float16_t d_to_f16 = float16_t(sd); + +void operators() +{ + float16_t f16; + f16vec2 f16v; + f16mat2x2 f16m; + bool b; + + // Arithmetic + f16v += f16v; + f16v -= f16v; + f16v *= f16v; + f16v /= f16v; + f16v++; + f16v--; + ++f16m; + --f16m; + f16v = -f16v; + f16m = -f16m; + + f16 = f16v.x + f16v.y; + f16 = f16v.x - f16v.y; + f16 = f16v.x * f16v.y; + f16 = f16v.x / f16v.y; + + // Relational + b = (f16v.x != f16); + b = (f16v.y == f16); + b = (f16v.x > f16); + b = (f16v.y < f16); + b = (f16v.x >= f16); + b = (f16v.y <= f16); + + // Vector/matrix operations + f16v = f16v * f16; + f16m = f16m * f16; + f16v = f16m * f16v; + f16v = f16v * f16m; + f16m = f16m * f16m; +} + +void typeCast() +{ + bvec3 bv; + vec3 fv; + dvec3 dv; + ivec3 iv; + uvec3 uv; + i64vec3 i64v; + u64vec3 u64v; + + f16vec3 f16v; + + f16v = f16vec3(bv); // bool -> float16 + bv = bvec3(f16v); // float16 -> bool + + f16v = f16vec3(fv); // float -> float16 + fv = vec3(f16v); // float16 -> float + + f16v = f16vec3(dv); // double -> float16 + dv = dvec3(dv); // float16 -> double + + f16v = f16vec3(iv); // int -> float16 + iv = ivec3(f16v); // float16 -> int + + f16v = f16vec3(uv); // uint -> float16 + uv = uvec3(f16v); // float16 -> uint + + f16v = f16vec3(i64v); // int64 -> float16 + i64v = i64vec3(f16v); // float16 -> int64 + + f16v = f16vec3(u64v); // uint64 -> float16 + u64v = u64vec3(f16v); // float16 -> uint64 +} + +void builtinAngleTrigFuncs() +{ + f16vec4 f16v1, f16v2; + + f16v2 = radians(f16v1); + f16v2 = degrees(f16v1); + f16v2 = sin(f16v1); + f16v2 = cos(f16v1); + f16v2 = tan(f16v1); + f16v2 = asin(f16v1); + f16v2 = acos(f16v1); + f16v2 = atan(f16v1, f16v2); + f16v2 = atan(f16v1); + f16v2 = sinh(f16v1); + f16v2 = cosh(f16v1); + f16v2 = tanh(f16v1); + f16v2 = asinh(f16v1); + f16v2 = acosh(f16v1); + f16v2 = atanh(f16v1); +} + +void builtinExpFuncs() +{ + f16vec2 f16v1, f16v2; + + f16v2 = pow(f16v1, f16v2); + f16v2 = exp(f16v1); + f16v2 = log(f16v1); + f16v2 = exp2(f16v1); + f16v2 = log2(f16v1); + f16v2 = sqrt(f16v1); + f16v2 = inversesqrt(f16v1); +} + +void builtinCommonFuncs() +{ + f16vec3 f16v1, f16v2, f16v3; + float16_t f16; + bool b; + bvec3 bv; + ivec3 iv; + + f16v2 = abs(f16v1); + f16v2 = sign(f16v1); + f16v2 = floor(f16v1); + f16v2 = trunc(f16v1); + f16v2 = round(f16v1); + f16v2 = roundEven(f16v1); + f16v2 = ceil(f16v1); + f16v2 = fract(f16v1); + f16v2 = mod(f16v1, f16v2); + f16v2 = mod(f16v1, f16); + f16v3 = modf(f16v1, f16v2); + f16v3 = min(f16v1, f16v2); + f16v3 = min(f16v1, f16); + f16v3 = max(f16v1, f16v2); + f16v3 = max(f16v1, f16); + f16v3 = clamp(f16v1, f16, f16v2.x); + f16v3 = clamp(f16v1, f16v2, f16vec3(f16)); + f16v3 = mix(f16v1, f16v2, f16); + f16v3 = mix(f16v1, f16v2, f16v3); + f16v3 = mix(f16v1, f16v2, bv); + f16v3 = step(f16v1, f16v2); + f16v3 = step(f16, f16v3); + f16v3 = smoothstep(f16v1, f16v2, f16v3); + f16v3 = smoothstep(f16, f16v1.x, f16v2); + b = isnan(f16); + bv = isinf(f16v1); + f16v3 = fma(f16v1, f16v2, f16v3); + f16v2 = frexp(f16v1, iv); + f16v2 = ldexp(f16v1, iv); +} + +void builtinPackUnpackFuncs() +{ + uint u; + f16vec2 f16v; + + u = packFloat2x16(f16v); + f16v = unpackFloat2x16(u); +} + +void builtinGeometryFuncs() +{ + float16_t f16; + f16vec3 f16v1, f16v2, f16v3; + + f16 = length(f16v1); + f16 = distance(f16v1, f16v2); + f16 = dot(f16v1, f16v2); + f16v3 = cross(f16v1, f16v2); + f16v2 = normalize(f16v1); + f16v3 = faceforward(f16v1, f16v2, f16v3); + f16v3 = reflect(f16v1, f16v2); + f16v3 = refract(f16v1, f16v2, f16); +} + +void builtinMatrixFuncs() +{ + f16mat2x3 f16m1, f16m2, f16m3; + f16mat3x2 f16m4; + f16mat3 f16m5; + f16mat4 f16m6, f16m7; + + f16vec3 f16v1; + f16vec2 f16v2; + + float16_t f16; + + f16m3 = matrixCompMult(f16m1, f16m2); + f16m1 = outerProduct(f16v1, f16v2); + f16m4 = transpose(f16m1); + f16 = determinant(f16m5); + f16m6 = inverse(f16m7); +} + +void builtinVecRelFuncs() +{ + f16vec3 f16v1, f16v2; + bvec3 bv; + + bv = lessThan(f16v1, f16v2); + bv = lessThanEqual(f16v1, f16v2); + bv = greaterThan(f16v1, f16v2); + bv = greaterThanEqual(f16v1, f16v2); + bv = equal(f16v1, f16v2); + bv = notEqual(f16v1, f16v2); +} + +in f16vec3 if16v; + +void builtinFragProcFuncs() +{ + f16vec3 f16v; + + // Derivative + f16v.x = dFdx(if16v.x); + f16v.y = dFdy(if16v.y); + f16v.xy = dFdxFine(if16v.xy); + f16v.xy = dFdyFine(if16v.xy); + f16v = dFdxCoarse(if16v); + f16v = dFdxCoarse(if16v); + + f16v.x = fwidth(if16v.x); + f16v.xy = fwidthFine(if16v.xy); + f16v = fwidthCoarse(if16v); + + // Interpolation + f16v.x = interpolateAtCentroid(if16v.x); + f16v.xy = interpolateAtSample(if16v.xy, 1); + f16v = interpolateAtOffset(if16v, f16vec2(0.5hf)); +} diff --git a/Test/spv.glsl.register.autoassign.frag b/Test/spv.glsl.register.autoassign.frag new file mode 100644 index 00000000..f754d8aa --- /dev/null +++ b/Test/spv.glsl.register.autoassign.frag @@ -0,0 +1,68 @@ +#version 450 + +uniform layout(binding=0) sampler g_sSamp1; +uniform sampler g_sSamp2; +uniform layout(binding=2) sampler g_sSamp3[2]; +uniform sampler g_sSamp4[3]; +uniform sampler g_sSamp5; + +uniform sampler g_sSamp_unused1; +uniform sampler g_sSamp_unused2; + +uniform layout(binding=1) texture1D g_tTex1; +uniform texture1D g_tTex2; +uniform layout(binding=3) texture1D g_tTex3[2]; +uniform texture1D g_tTex4[3]; +uniform texture1D g_tTex5; + +uniform layout(binding=0) texture1D g_tTex_unused1; +uniform layout(binding=2) texture1D g_tTex_unused2; +uniform texture1D g_tTex_unused3; + +struct MyStruct_t { + int a; + float b; + vec3 c; +}; + +uniform layout(binding=4) myblock { + MyStruct_t mystruct; + vec4 myvec4_a; + vec4 myvec4_b; + ivec4 myint4_a; +}; + +vec4 Func1() +{ + return + texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + + texture(sampler1D(g_tTex2, g_sSamp2), 0.2) + + texture(sampler1D(g_tTex3[0], g_sSamp3[0]), 0.3) + + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3) + + texture(sampler1D(g_tTex4[1], g_sSamp4[1]), 0.4) + + texture(sampler1D(g_tTex4[2], g_sSamp4[2]), 0.4) + + texture(sampler1D(g_tTex5, g_sSamp5), 0.5) + + mystruct.c[1]; +} + +vec4 Func2() +{ + return + texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3); +} + +// Not called from entry point: +vec4 Func2_unused() +{ + return + texture(sampler1D(g_tTex_unused1, g_sSamp_unused1), 1.1) + + texture(sampler1D(g_tTex_unused2, g_sSamp_unused2), 1.2); +} + +out vec4 FragColor; + +void main() +{ + FragColor = Func1() + Func2(); +} diff --git a/Test/spv.glsl.register.noautoassign.frag b/Test/spv.glsl.register.noautoassign.frag new file mode 100644 index 00000000..f754d8aa --- /dev/null +++ b/Test/spv.glsl.register.noautoassign.frag @@ -0,0 +1,68 @@ +#version 450 + +uniform layout(binding=0) sampler g_sSamp1; +uniform sampler g_sSamp2; +uniform layout(binding=2) sampler g_sSamp3[2]; +uniform sampler g_sSamp4[3]; +uniform sampler g_sSamp5; + +uniform sampler g_sSamp_unused1; +uniform sampler g_sSamp_unused2; + +uniform layout(binding=1) texture1D g_tTex1; +uniform texture1D g_tTex2; +uniform layout(binding=3) texture1D g_tTex3[2]; +uniform texture1D g_tTex4[3]; +uniform texture1D g_tTex5; + +uniform layout(binding=0) texture1D g_tTex_unused1; +uniform layout(binding=2) texture1D g_tTex_unused2; +uniform texture1D g_tTex_unused3; + +struct MyStruct_t { + int a; + float b; + vec3 c; +}; + +uniform layout(binding=4) myblock { + MyStruct_t mystruct; + vec4 myvec4_a; + vec4 myvec4_b; + ivec4 myint4_a; +}; + +vec4 Func1() +{ + return + texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + + texture(sampler1D(g_tTex2, g_sSamp2), 0.2) + + texture(sampler1D(g_tTex3[0], g_sSamp3[0]), 0.3) + + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3) + + texture(sampler1D(g_tTex4[1], g_sSamp4[1]), 0.4) + + texture(sampler1D(g_tTex4[2], g_sSamp4[2]), 0.4) + + texture(sampler1D(g_tTex5, g_sSamp5), 0.5) + + mystruct.c[1]; +} + +vec4 Func2() +{ + return + texture(sampler1D(g_tTex1, g_sSamp1), 0.1) + + texture(sampler1D(g_tTex3[1], g_sSamp3[1]), 0.3); +} + +// Not called from entry point: +vec4 Func2_unused() +{ + return + texture(sampler1D(g_tTex_unused1, g_sSamp_unused1), 1.1) + + texture(sampler1D(g_tTex_unused2, g_sSamp_unused2), 1.2); +} + +out vec4 FragColor; + +void main() +{ + FragColor = Func1() + Func2(); +} diff --git a/Test/spv.int64.frag b/Test/spv.int64.frag index 527bfeff..8021b7e9 100644 --- a/Test/spv.int64.frag +++ b/Test/spv.int64.frag @@ -225,4 +225,40 @@ void builtinFuncs() // 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 12f57cd1..a650cd1c 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 00000000..7462da43 --- /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 00000000..7f9968dc --- /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.offsets.frag b/Test/spv.offsets.frag new file mode 100755 index 00000000..0a1c008c --- /dev/null +++ b/Test/spv.offsets.frag @@ -0,0 +1,17 @@ +#version 450 + +layout(set = 0, binding = 0, std140) uniform n1 { + layout(offset = 8) int a; + layout(offset = 4) int b; + layout(offset = 0) int c; + layout(offset = 12) int d; +} i1; + +layout(set = 0, binding = 1, std430) buffer n2 { + layout(offset = 32) vec3 e; + vec3 f; + layout(offset = 16) vec3 g; + layout(offset = 0) vec3 h; +} i2; + +void main() {} \ No newline at end of file diff --git a/Test/spv.register.autoassign-2.frag b/Test/spv.register.autoassign-2.frag new file mode 100644 index 00000000..b943791f --- /dev/null +++ b/Test/spv.register.autoassign-2.frag @@ -0,0 +1,15 @@ + +SamplerState g_tSamp : register(s0); + +Texture2D g_tScene[2] : register(t0); + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +void main(out PS_OUTPUT psout) +{ + psout.Color = g_tScene[0].Sample(g_tSamp, 0.3) + + g_tScene[1].Sample(g_tSamp, 0.3); +} diff --git a/Test/spv.register.autoassign.frag b/Test/spv.register.autoassign.frag new file mode 100644 index 00000000..0d6f0b2d --- /dev/null +++ b/Test/spv.register.autoassign.frag @@ -0,0 +1,71 @@ + +SamplerState g_sSamp1 : register(s0); +SamplerState g_sSamp2; +SamplerState g_sSamp3[2] : register(s2); +SamplerState g_sSamp4[3]; +SamplerState g_sSamp5; + +SamplerState g_sSamp_unused1; +SamplerState g_sSamp_unused2; + +Texture1D g_tTex1 : register(t1); +const uniform Texture1D g_tTex2; +Texture1D g_tTex3[2] : register(t3); +Texture1D g_tTex4[3]; +Texture1D g_tTex5; + +Texture1D g_tTex_unused1 : register(t0); +Texture1D g_tTex_unused2 : register(t2); +Texture1D g_tTex_unused3; + +struct MyStruct_t { + int a; + float b; + float3 c; +}; + +uniform MyStruct_t mystruct : register(b4); + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform float4 myfloat4_a; +uniform float4 myfloat4_b; +uniform int4 myint4_a; + +float4 Func1() +{ + return + g_tTex1 . Sample(g_sSamp1, 0.1) + + g_tTex2 . Sample(g_sSamp2, 0.2) + + g_tTex3[0] . Sample(g_sSamp3[0], 0.3) + + g_tTex3[1] . Sample(g_sSamp3[1], 0.3) + + g_tTex4[1] . Sample(g_sSamp4[1], 0.4) + + g_tTex4[2] . Sample(g_sSamp4[2], 0.4) + + g_tTex5 . Sample(g_sSamp5, 0.5) + + mystruct.c[1]; +} + +float4 Func2() +{ + return + g_tTex1 . Sample(g_sSamp1, 0.1) + + g_tTex3[1] . Sample(g_sSamp3[1], 0.3); +} + +// Not called from entry point: +float4 Func2_unused() +{ + return + g_tTex_unused1 . Sample(g_sSamp_unused1, 1.1) + + g_tTex_unused2 . Sample(g_sSamp_unused2, 1.2); +} + +PS_OUTPUT main_ep() +{ + PS_OUTPUT psout; + psout.Color = Func1() + Func2(); + return psout; +} diff --git a/Test/spv.register.autoassign.rangetest.frag b/Test/spv.register.autoassign.rangetest.frag new file mode 100644 index 00000000..c81c3959 --- /dev/null +++ b/Test/spv.register.autoassign.rangetest.frag @@ -0,0 +1,15 @@ + +SamplerState g_tSamp : register(s5); + +Texture2D g_tScene[2] : register(t5); + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +void main(out PS_OUTPUT psout) +{ + psout.Color = g_tScene[0].Sample(g_tSamp, 0.3) + + g_tScene[1].Sample(g_tSamp, 0.3); +} diff --git a/Test/spv.register.noautoassign.frag b/Test/spv.register.noautoassign.frag new file mode 100644 index 00000000..0d6f0b2d --- /dev/null +++ b/Test/spv.register.noautoassign.frag @@ -0,0 +1,71 @@ + +SamplerState g_sSamp1 : register(s0); +SamplerState g_sSamp2; +SamplerState g_sSamp3[2] : register(s2); +SamplerState g_sSamp4[3]; +SamplerState g_sSamp5; + +SamplerState g_sSamp_unused1; +SamplerState g_sSamp_unused2; + +Texture1D g_tTex1 : register(t1); +const uniform Texture1D g_tTex2; +Texture1D g_tTex3[2] : register(t3); +Texture1D g_tTex4[3]; +Texture1D g_tTex5; + +Texture1D g_tTex_unused1 : register(t0); +Texture1D g_tTex_unused2 : register(t2); +Texture1D g_tTex_unused3; + +struct MyStruct_t { + int a; + float b; + float3 c; +}; + +uniform MyStruct_t mystruct : register(b4); + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; +}; + +uniform float4 myfloat4_a; +uniform float4 myfloat4_b; +uniform int4 myint4_a; + +float4 Func1() +{ + return + g_tTex1 . Sample(g_sSamp1, 0.1) + + g_tTex2 . Sample(g_sSamp2, 0.2) + + g_tTex3[0] . Sample(g_sSamp3[0], 0.3) + + g_tTex3[1] . Sample(g_sSamp3[1], 0.3) + + g_tTex4[1] . Sample(g_sSamp4[1], 0.4) + + g_tTex4[2] . Sample(g_sSamp4[2], 0.4) + + g_tTex5 . Sample(g_sSamp5, 0.5) + + mystruct.c[1]; +} + +float4 Func2() +{ + return + g_tTex1 . Sample(g_sSamp1, 0.1) + + g_tTex3[1] . Sample(g_sSamp3[1], 0.3); +} + +// Not called from entry point: +float4 Func2_unused() +{ + return + g_tTex_unused1 . Sample(g_sSamp_unused1, 1.1) + + g_tTex_unused2 . Sample(g_sSamp_unused2, 1.2); +} + +PS_OUTPUT main_ep() +{ + PS_OUTPUT psout; + psout.Color = Func1() + Func2(); + return psout; +} diff --git a/Test/spv.shaderDrawParams.vert b/Test/spv.shaderDrawParams.vert new file mode 100644 index 00000000..15ae2953 --- /dev/null +++ b/Test/spv.shaderDrawParams.vert @@ -0,0 +1,16 @@ +#version 450 core + +#extension GL_ARB_shader_draw_parameters: enable + +layout(binding = 0) uniform Block +{ + vec4 pos[2][4]; +} block; + +void main() +{ + if ((gl_BaseVertexARB > 0) || (gl_BaseInstanceARB > 0)) + gl_Position = block.pos[0][gl_DrawIDARB % 4]; + else + gl_Position = block.pos[1][gl_DrawIDARB % 4]; +} diff --git a/Test/spv.specConstantOperations.vert b/Test/spv.specConstantOperations.vert index b5e46ad4..f67561c3 100644 --- a/Test/spv.specConstantOperations.vert +++ b/Test/spv.specConstantOperations.vert @@ -4,12 +4,16 @@ layout(constant_id = 200) const float sp_float = 3.1415926; 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 72984f2d..ca95ec37 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.swizzleInversion.frag b/Test/spv.swizzleInversion.frag new file mode 100644 index 00000000..9dca62f8 --- /dev/null +++ b/Test/spv.swizzleInversion.frag @@ -0,0 +1,16 @@ +#version 450 + +in vec4 in4; +in vec3 in3; + +void main() +{ + vec3 v43 = interpolateAtCentroid(in4.wzx); + vec2 v42 = interpolateAtSample(in4.zx, 1); + vec4 v44 = interpolateAtOffset(in4.zyxw, vec2(2.0)); + float v41 = interpolateAtOffset(in4.y, vec2(2.0)); + + vec3 v33 = interpolateAtCentroid(in3.yzx); + vec2 v32 = interpolateAtSample(in3.zx, 1); + float v31 = interpolateAtOffset(in4.y, vec2(2.0)); +} diff --git a/Test/spv.uint.frag b/Test/spv.uint.frag index 92a8f962..853de7c4 100644 --- a/Test/spv.uint.frag +++ b/Test/spv.uint.frag @@ -95,5 +95,8 @@ void main() if ((mask1 ^ mask4) == 0xA10u) count *= 7; // 341413380 - c += uvec4(count); + c += uvec4(count); + + #define UINT_MAX 4294967295u + c.x += UINT_MAX; } diff --git a/Test/vulkan.frag b/Test/vulkan.frag index 0148507f..fd9106cd 100644 --- a/Test/vulkan.frag +++ b/Test/vulkan.frag @@ -72,4 +72,24 @@ void fooTex() { texture(t2d, vec2(1.0)); // ERROR, need a sampler, not a pure texture imageStore(t2d, ivec2(4, 5), vec4(1.2)); // ERROR, need an image, not a pure texture -} \ No newline at end of file +} + +precision highp float; + +layout(location=0) in vec2 vTexCoord; +layout(location=0) out vec4 FragColor; + +vec4 userTexture(mediump sampler2D samp, vec2 coord) +{ + return texture(samp, coord); +} + +bool cond; + +void callUserTexture() +{ + userTexture(sampler2D(t2d,s), vTexCoord); // ERROR, not point of use + userTexture((sampler2D(t2d,s)), vTexCoord); // ERROR, not point of use + userTexture((sampler2D(t2d,s), sampler2D(t2d,s)), vTexCoord); // ERROR, not point of use + userTexture(cond ? sampler2D(t2d,s) : sampler2D(t2d,s), vTexCoord); // ERROR, no ?:, not point of use +} diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index f431cc11..95d4bdd8 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -10,10 +10,12 @@ set(SOURCES MachineIndependent/glslang.y MachineIndependent/glslang_tab.cpp MachineIndependent/Constant.cpp + MachineIndependent/iomapper.cpp MachineIndependent/InfoSink.cpp MachineIndependent/Initialize.cpp MachineIndependent/IntermTraverse.cpp MachineIndependent/Intermediate.cpp + MachineIndependent/ParseContextBase.cpp MachineIndependent/ParseHelper.cpp MachineIndependent/PoolAlloc.cpp MachineIndependent/RemoveTree.cpp @@ -54,6 +56,8 @@ set(HEADERS MachineIndependent/glslang_tab.cpp.h MachineIndependent/gl_types.h MachineIndependent/Initialize.h + MachineIndependent/iomapper.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 81609992..8da88bda 100644 --- a/glslang/GenericCodeGen/Link.cpp +++ b/glslang/GenericCodeGen/Link.cpp @@ -46,7 +46,7 @@ class TGenericLinker : public TLinker { 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 2c275772..f7074406 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -46,6 +46,9 @@ enum TBasicType { EbtVoid, EbtFloat, EbtDouble, +#ifdef AMD_EXTENSIONS + EbtFloat16, +#endif EbtInt, EbtUint, EbtInt64, @@ -55,6 +58,10 @@ enum TBasicType { EbtSampler, EbtStruct, EbtBlock, + + // HLSL types that live only temporarily. + EbtString, + EbtNumTypes }; @@ -186,6 +193,20 @@ enum TBuiltInVariable { EbvSamplePosition, EbvSampleMask, EbvHelperInvocation, +#ifdef AMD_EXTENSIONS + EbvBaryCoordNoPersp, + EbvBaryCoordNoPerspCentroid, + EbvBaryCoordNoPerspSample, + EbvBaryCoordSmooth, + EbvBaryCoordSmoothCentroid, + EbvBaryCoordSmoothSample, + EbvBaryCoordPullModel, +#endif + + // HLSL built-ins that live only temporarily, until they get remapped + // to one of the above. + EbvFragDepthGreater, + EbvFragDepthLesser, EbvLast }; @@ -286,6 +307,15 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvSamplePosition: return "SamplePosition"; case EbvSampleMask: return "SampleMaskIn"; case EbvHelperInvocation: return "HelperInvocation"; +#ifdef AMD_EXTENSIONS + case EbvBaryCoordNoPersp: return "BaryCoordNoPersp"; + case EbvBaryCoordNoPerspCentroid: return "BaryCoordNoPerspCentroid"; + case EbvBaryCoordNoPerspSample: return "BaryCoordNoPerspSample"; + case EbvBaryCoordSmooth: return "BaryCoordSmooth"; + case EbvBaryCoordSmoothCentroid: return "BaryCoordSmoothCentroid"; + case EbvBaryCoordSmoothSample: return "BaryCoordSmoothSample"; + case EbvBaryCoordPullModel: return "BaryCoordPullModel"; +#endif default: return "unknown built-in variable"; } } diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index 368d8746..6a695d09 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -68,6 +68,10 @@ inline long long int strtoll (const char* str, char** endptr, int base) { return _strtoi64(str, endptr, base); } +inline unsigned long long int strtoull (const char* str, char** endptr, int base) +{ + return _strtoui64(str, endptr, base); +} inline long long int atoll (const char* str) { return strtoll(str, NULL, 10); @@ -93,8 +97,8 @@ inline long long int atoll (const char* str) #include #include #include -#include -#include +#include +#include #include "PoolAlloc.h" @@ -103,11 +107,11 @@ inline long long int atoll (const char* str) // #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 *) { } @@ -201,20 +205,25 @@ template T Max(const T a, const T b) { return a > b ? a : b; } // // Create a TString object from an integer. // +#if defined _MSC_VER || defined MINGW_HAS_SECURE_API inline const TString String(const int i, const int base = 10) +{ + char text[16]; // 32 bit ints are at most 10 digits in base 10 + _itoa_s(i, text, sizeof(text), base); + return text; +} +#else +inline const TString String(const int i, const int /*base*/ = 10) { char text[16]; // 32 bit ints are at most 10 digits in base 10 - #if defined _MSC_VER || defined MINGW_HAS_SECURE_API - _itoa_s(i, text, sizeof(text), base); - #else - // we assume base 10 for all cases - snprintf(text, sizeof(text), "%d", i); - #endif + // we assume base 10 for all cases + snprintf(text, sizeof(text), "%d", i); return text; } - +#endif + struct TSourceLoc { void init() { name = nullptr; string = 0; line = 0; column = 0; } // Returns the name if it exists. Otherwise, returns the string number. diff --git a/glslang/Include/InfoSink.h b/glslang/Include/InfoSink.h index 5862e5d8..0cbd99bd 100644 --- a/glslang/Include/InfoSink.h +++ b/glslang/Include/InfoSink.h @@ -36,7 +36,7 @@ #define _INFOSINK_INCLUDED_ #include "../Include/Common.h" -#include +#include namespace glslang { @@ -74,7 +74,6 @@ public: TInfoSinkBase& operator<<(const char* s) { append(s); return *this; } TInfoSinkBase& operator<<(int n) { append(String(n)); return *this; } TInfoSinkBase& operator<<(unsigned int n) { append(String(n)); return *this; } - TInfoSinkBase& operator<<(long unsigned int n) { append(String(n)); return *this; } TInfoSinkBase& operator<<(float n) { const int size = 40; char buf[size]; snprintf(buf, size, (fabs(n) > 1e-8 && fabs(n) < 1e8) || n == 0.0f ? "%f" : "%g", n); append(buf); diff --git a/glslang/Include/PoolAlloc.h b/glslang/Include/PoolAlloc.h index c3bebc63..635be79e 100644 --- a/glslang/Include/PoolAlloc.h +++ b/glslang/Include/PoolAlloc.h @@ -61,13 +61,13 @@ // class as the allocator (second) template argument. // -#include -#include +#include +#include #include 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 @@ public: pointer allocate(size_type n, const void*) { return reinterpret_cast(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(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 fee64139..bfc97db8 100644 --- a/glslang/Include/ShHandle.h +++ b/glslang/Include/ShHandle.h @@ -123,8 +123,8 @@ public: 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 @@ public: 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 @@ protected: 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 cdf82007..6c8cb825 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -78,12 +78,16 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler bool sampler : 1; // true means a pure sampler, other fields should be clear() bool external : 1; // GL_OES_EGL_image_external + unsigned int vectorSize : 3; // return vector size. TODO: support arbitrary types. bool isImage() const { return image && dim != EsdSubpass; } bool isSubpass() const { return dim == EsdSubpass; } bool isCombined() const { return combined; } bool isPureSampler() const { return sampler; } bool isTexture() const { return !sampler && !image; } + bool isShadow() const { return shadow; } + bool isArrayed() const { return arrayed; } + bool isMultiSample() const { return ms; } void clear() { @@ -96,6 +100,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler, combined = false; sampler = false; external = false; + vectorSize = 4; } // make a combined sampler and texture @@ -161,7 +166,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler, image == right.image && combined == right.combined && sampler == right.sampler && - external == right.external; + external == right.external && + vectorSize == right.vectorSize; } bool operator!=(const TSampler& right) const @@ -182,8 +188,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, case EbtFloat: break; case EbtInt: s.append("i"); break; case EbtUint: s.append("u"); break; - case EbtInt64: s.append("i64"); break; - case EbtUint64: s.append("u64"); break; default: break; // some compilers want this } if (image) { @@ -403,6 +407,9 @@ public: smooth = false; flat = false; nopersp = false; +#ifdef AMD_EXTENSIONS + explicitInterp = false; +#endif patch = false; sample = false; coherent = false; @@ -436,6 +443,9 @@ public: bool smooth : 1; bool flat : 1; bool nopersp : 1; +#ifdef AMD_EXTENSIONS + bool explicitInterp : 1; +#endif bool patch : 1; bool sample : 1; bool coherent : 1; @@ -451,7 +461,11 @@ public: } bool isInterpolation() const { +#ifdef AMD_EXTENSIONS + return flat || smooth || nopersp || explicitInterp; +#else return flat || smooth || nopersp; +#endif } bool isAuxiliary() const { @@ -610,8 +624,8 @@ public: unsigned int layoutSet : 7; static const unsigned int layoutSetEnd = 0x3F; - unsigned int layoutBinding : 8; - static const unsigned int layoutBindingEnd = 0xFF; + unsigned int layoutBinding : 16; + static const unsigned int layoutBindingEnd = 0xFFFF; unsigned int layoutIndex : 8; static const unsigned int layoutIndexEnd = 0xFF; @@ -1062,7 +1076,7 @@ public: 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) : @@ -1080,6 +1094,15 @@ public: typeName = NewPoolTString(p.userDef->getTypeName().c_str()); } } + // for construction of sampler types + TType(const TSampler& sampler, TStorageQualifier q = EvqUniform, TArraySizes* as = nullptr) : + basicType(EbtSampler), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), + arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr), + sampler(sampler) + { + qualifier.clear(); + qualifier.storage = q; + } // to efficiently make a dereferenced type // without ever duplicating the outer structure that will be thrown away // and using only shallow copy @@ -1182,7 +1205,7 @@ public: typeName = NewPoolTString(copyOf.typeName->c_str()); } - TType* clone() + TType* clone() const { TType *newType = new TType(); newType->deepCopy(*this); @@ -1255,7 +1278,11 @@ public: virtual bool isImplicitlySizedArray() const { return isArray() && getOuterArraySize() == UnsizedArraySize && qualifier.storage != EvqBuffer; } virtual bool isRuntimeSizedArray() const { return isArray() && getOuterArraySize() == UnsizedArraySize && qualifier.storage == EvqBuffer; } virtual bool isStruct() const { return structure != nullptr; } +#ifdef AMD_EXTENSIONS + virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble || basicType == EbtFloat16; } +#else virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble; } +#endif virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint; } @@ -1337,6 +1364,9 @@ public: case EbtVoid: case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif case EbtInt: case EbtUint: case EbtInt64: @@ -1429,6 +1459,9 @@ public: case EbtVoid: return "void"; case EbtFloat: return "float"; case EbtDouble: return "double"; +#ifdef AMD_EXTENSIONS + case EbtFloat16: return "float16_t"; +#endif case EbtInt: return "int"; case EbtUint: return "uint"; case EbtInt64: return "int64_t"; @@ -1507,6 +1540,10 @@ public: p += snprintf(p, end - p, "flat "); if (qualifier.nopersp) p += snprintf(p, end - p, "noperspective "); +#ifdef AMD_EXTENSIONS + if (qualifier.explicitInterp) + p += snprintf(p, end - p, "__explicitInterpAMD "); +#endif if (qualifier.patch) p += snprintf(p, end - p, "patch "); if (qualifier.sample) @@ -1707,13 +1744,13 @@ protected: // functionality is added. // HLSL does have a 1-component vectors, so this will be true to disambiguate // from a scalar. - TSampler sampler; TQualifier qualifier; TArraySizes* arraySizes; // nullptr unless an array; can be shared across types TTypeList* structure; // nullptr unless this is a struct; can be shared across types TString *fieldName; // for structure field names TString *typeName; // for structure type name + TSampler sampler; }; } // end namespace glslang diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 06869e59..397a8326 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -57,6 +57,8 @@ namespace glslang { +class TIntermediate; + // // Operators used by the high-level (parse tree) representation. // @@ -124,6 +126,22 @@ enum TOperator { EOpConvFloatToUint64, EOpConvDoubleToUint64, EOpConvInt64ToUint64, +#ifdef AMD_EXTENSIONS + EOpConvBoolToFloat16, + EOpConvIntToFloat16, + EOpConvUintToFloat16, + EOpConvFloatToFloat16, + EOpConvDoubleToFloat16, + EOpConvInt64ToFloat16, + EOpConvUint64ToFloat16, + EOpConvFloat16ToBool, + EOpConvFloat16ToInt, + EOpConvFloat16ToUint, + EOpConvFloat16ToFloat, + EOpConvFloat16ToDouble, + EOpConvFloat16ToInt64, + EOpConvFloat16ToUint64, +#endif // // binary operations @@ -241,6 +259,10 @@ enum TOperator { EOpUnpackInt2x32, EOpPackUint2x32, EOpUnpackUint2x32, +#ifdef AMD_EXTENSIONS + EOpPackFloat2x16, + EOpUnpackFloat2x16, +#endif EOpLength, EOpDistance, @@ -251,6 +273,12 @@ enum TOperator { EOpReflect, EOpRefract, +#ifdef AMD_EXTENSIONS + EOpMin3, + EOpMax3, + EOpMid3, +#endif + EOpDPdx, // Fragment only EOpDPdy, // Fragment only EOpFwidth, // Fragment only @@ -265,6 +293,10 @@ enum TOperator { EOpInterpolateAtSample, // Fragment only EOpInterpolateAtOffset, // Fragment only +#ifdef AMD_EXTENSIONS + EOpInterpolateAtVertex, +#endif + EOpMatrixTimesMatrix, EOpOuterProduct, EOpDeterminant, @@ -296,6 +328,23 @@ enum TOperator { EOpAllInvocations, EOpAllInvocationsEqual, +#ifdef AMD_EXTENSIONS + EOpMinInvocations, + EOpMaxInvocations, + EOpAddInvocations, + EOpMinInvocationsNonUniform, + EOpMaxInvocationsNonUniform, + EOpAddInvocationsNonUniform, + EOpSwizzleInvocations, + EOpSwizzleInvocationsMasked, + EOpWriteInvocation, + EOpMbcnt, + + EOpCubeFaceIndex, + EOpCubeFaceCoord, + EOpTime, +#endif + EOpAtomicAdd, EOpAtomicMin, EOpAtomicMax, @@ -374,6 +423,21 @@ enum TOperator { EOpConstructDMat4x2, EOpConstructDMat4x3, EOpConstructDMat4x4, +#ifdef AMD_EXTENSIONS + EOpConstructFloat16, + EOpConstructF16Vec2, + EOpConstructF16Vec3, + EOpConstructF16Vec4, + EOpConstructF16Mat2x2, + EOpConstructF16Mat2x3, + EOpConstructF16Mat2x4, + EOpConstructF16Mat3x2, + EOpConstructF16Mat3x3, + EOpConstructF16Mat3x4, + EOpConstructF16Mat4x2, + EOpConstructF16Mat4x3, + EOpConstructF16Mat4x4, +#endif EOpConstructStruct, EOpConstructTextureSampler, EOpConstructGuardEnd, @@ -439,6 +503,9 @@ enum TOperator { EOpTextureQueryLod, EOpTextureQueryLevels, EOpTextureQuerySamples, + + EOpSamplingGuardBegin, + EOpTexture, EOpTextureProj, EOpTextureLod, @@ -481,7 +548,7 @@ enum TOperator { EOpSparseTextureGradOffsetClamp, EOpSparseTextureGuardEnd, - + EOpSamplingGuardEnd, EOpTextureGuardEnd, // @@ -530,6 +597,30 @@ enum TOperator { EOpLit, // HLSL lighting coefficient vector EOpTextureBias, // HLSL texture bias: will be lowered to EOpTexture EOpAsDouble, // slightly different from EOpUint64BitsToDouble + + EOpMethodSample, // Texture object methods. These are translated to existing + EOpMethodSampleBias, // AST methods, and exist to represent HLSL semantics until that + EOpMethodSampleCmp, // translation is performed. See HlslParseContext::decomposeSampleMethods(). + EOpMethodSampleCmpLevelZero, // ... + EOpMethodSampleGrad, // ... + EOpMethodSampleLevel, // ... + EOpMethodLoad, // ... + EOpMethodGetDimensions, // ... + EOpMethodGetSamplePosition, // ... + EOpMethodGather, // ... + EOpMethodCalculateLevelOfDetail, // ... + EOpMethodCalculateLevelOfDetailUnclamped, // ... + + // SM5 texture methods + EOpMethodGatherRed, // These are covered under the above EOpMethodSample comment about + EOpMethodGatherGreen, // translation to existing AST opcodes. They exist temporarily + EOpMethodGatherBlue, // because HLSL arguments are slightly different. + EOpMethodGatherAlpha, // ... + EOpMethodGatherCmp, // ... + EOpMethodGatherCmpRed, // ... + EOpMethodGatherCmpGreen, // ... + EOpMethodGatherCmpBlue, // ... + EOpMethodGatherCmpAlpha, // ... }; class TIntermTraverser; @@ -761,14 +852,30 @@ public: virtual TIntermOperator* getAsOperator() { return this; } virtual const TIntermOperator* getAsOperator() const { return this; } TOperator getOp() const { return op; } - virtual bool promote() { return true; } + void setOp(TOperator newOp) { op = newOp; } bool modifiesState() const; bool isConstructor() const; - bool isTexture() const { return op > EOpTextureGuardBegin && op < EOpTextureGuardEnd; } - bool isImage() const { return op > EOpImageGuardBegin && op < EOpImageGuardEnd; } + bool isTexture() const { return op > EOpTextureGuardBegin && op < EOpTextureGuardEnd; } + bool isSampling() const { return op > EOpSamplingGuardBegin && op < EOpSamplingGuardEnd; } + bool isImage() const { return op > EOpImageGuardBegin && op < EOpImageGuardEnd; } bool isSparseTexture() const { return op > EOpSparseTextureGuardBegin && op < EOpSparseTextureGuardEnd; } bool isSparseImage() const { return op == EOpSparseImageLoad; } + void setOperationPrecision(TPrecisionQualifier p) { operationPrecision = p; } + TPrecisionQualifier getOperationPrecision() const { return operationPrecision != EpqNone ? + operationPrecision : + type.getQualifier().precision; } + TString getCompleteString() const + { + TString cs = type.getCompleteString(); + if (getOperationPrecision() != type.getQualifier().precision) { + cs += ", operation at "; + cs += GetPrecisionQualifierString(getOperationPrecision()); + } + + return cs; + } + // Crack the op into the individual dimensions of texturing operation. void crackTexture(TSampler sampler, TCrackedTextureOp& cracked) const { @@ -900,9 +1007,15 @@ public: } protected: - TIntermOperator(TOperator o) : TIntermTyped(EbtFloat), op(o) {} - TIntermOperator(TOperator o, TType& t) : TIntermTyped(t), op(o) {} + TIntermOperator(TOperator o) : TIntermTyped(EbtFloat), op(o), operationPrecision(EpqNone) {} + TIntermOperator(TOperator o, TType& t) : TIntermTyped(t), op(o), operationPrecision(EpqNone) {} TOperator op; + // The result precision is in the inherited TType, and is usually meant to be both + // the operation precision and the result precision. However, some more complex things, + // like built-in function calls, distinguish between the two, in which case non-EqpNone + // 'operationPrecision' overrides the result precision as far as operation precision + // is concerned. + TPrecisionQualifier operationPrecision; }; // @@ -918,7 +1031,6 @@ public: virtual TIntermTyped* getRight() const { return right; } virtual TIntermBinary* getAsBinaryNode() { return this; } virtual const TIntermBinary* getAsBinaryNode() const { return this; } - virtual bool promote(); virtual void updatePrecision(); protected: TIntermTyped* left; @@ -938,7 +1050,6 @@ public: virtual const TIntermTyped* getOperand() const { return operand; } virtual TIntermUnary* getAsUnaryNode() { return this; } virtual const TIntermUnary* getAsUnaryNode() const { return this; } - virtual bool promote(); virtual void updatePrecision(); protected: TIntermTyped* operand; diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index e338849d..c8b1b10a 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.947" -#define GLSLANG_DATE "15-Feb-2016" +#define GLSLANG_REVISION "Overload400-PrecQual.1603" +#define GLSLANG_DATE "16-Oct-2016" diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index 4adfd470..804626fa 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -176,6 +176,9 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right switch (getType().getBasicType()) { case EbtDouble: case EbtFloat: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif newConstArray[i].setDConst(leftUnionArray[i].getDConst() / rightUnionArray[i].getDConst()); break; @@ -450,6 +453,9 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpNegative: switch (getType().getBasicType()) { case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break; case EbtInt: newConstArray[i].setIConst(-unionArray[i].getIConst()); break; case EbtUint: newConstArray[i].setUConst(static_cast(-static_cast(unionArray[i].getUConst()))); break; @@ -688,6 +694,9 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) // Second, do the actual folding bool isFloatingPoint = children[0]->getAsTyped()->getBasicType() == EbtFloat || +#ifdef AMD_EXTENSIONS + children[0]->getAsTyped()->getBasicType() == EbtFloat16 || +#endif children[0]->getAsTyped()->getBasicType() == EbtDouble; bool isSigned = children[0]->getAsTyped()->getBasicType() == EbtInt || children[0]->getAsTyped()->getBasicType() == EbtInt64; diff --git a/glslang/MachineIndependent/InfoSink.cpp b/glslang/MachineIndependent/InfoSink.cpp index 2e888827..79acba87 100644 --- a/glslang/MachineIndependent/InfoSink.cpp +++ b/glslang/MachineIndependent/InfoSink.cpp @@ -34,15 +34,19 @@ #include "../Include/InfoSink.h" -#include +#include 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 @@ void TInfoSinkBase::append(const char* s) 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 @@ void TInfoSinkBase::append(int count, char c) 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 TPersistString& t) 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 871e7884..c8739535 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -85,8 +85,6 @@ TBuiltIns::TBuiltIns() prefixes[EbtFloat] = ""; prefixes[EbtInt] = "i"; prefixes[EbtUint] = "u"; - prefixes[EbtInt64] = "i64"; - prefixes[EbtUint64] = "u64"; postfixes[2] = "2"; postfixes[3] = "3"; postfixes[4] = "4"; @@ -801,10 +799,100 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "bvec3 notEqual(u64vec3, u64vec3);" "bvec4 notEqual(u64vec4, u64vec4);" +#ifdef AMD_EXTENSIONS + "int findLSB(int64_t);" + "ivec2 findLSB(i64vec2);" + "ivec3 findLSB(i64vec3);" + "ivec4 findLSB(i64vec4);" + + "int findLSB(uint64_t);" + "ivec2 findLSB(u64vec2);" + "ivec3 findLSB(u64vec3);" + "ivec4 findLSB(u64vec4);" + + "int findMSB(int64_t);" + "ivec2 findMSB(i64vec2);" + "ivec3 findMSB(i64vec3);" + "ivec4 findMSB(i64vec4);" + + "int findMSB(uint64_t);" + "ivec2 findMSB(u64vec2);" + "ivec3 findMSB(u64vec3);" + "ivec4 findMSB(u64vec4);" +#endif "\n" ); } +#ifdef AMD_EXTENSIONS + // GL_AMD_shader_trinary_minmax + if (profile != EEsProfile && version >= 430) { + commonBuiltins.append( + "float min3(float, float, float);" + "vec2 min3(vec2, vec2, vec2);" + "vec3 min3(vec3, vec3, vec3);" + "vec4 min3(vec4, vec4, vec4);" + + "int min3(int, int, int);" + "ivec2 min3(ivec2, ivec2, ivec2);" + "ivec3 min3(ivec3, ivec3, ivec3);" + "ivec4 min3(ivec4, ivec4, ivec4);" + + "uint min3(uint, uint, uint);" + "uvec2 min3(uvec2, uvec2, uvec2);" + "uvec3 min3(uvec3, uvec3, uvec3);" + "uvec4 min3(uvec4, uvec4, uvec4);" + + "float max3(float, float, float);" + "vec2 max3(vec2, vec2, vec2);" + "vec3 max3(vec3, vec3, vec3);" + "vec4 max3(vec4, vec4, vec4);" + + "int max3(int, int, int);" + "ivec2 max3(ivec2, ivec2, ivec2);" + "ivec3 max3(ivec3, ivec3, ivec3);" + "ivec4 max3(ivec4, ivec4, ivec4);" + + "uint max3(uint, uint, uint);" + "uvec2 max3(uvec2, uvec2, uvec2);" + "uvec3 max3(uvec3, uvec3, uvec3);" + "uvec4 max3(uvec4, uvec4, uvec4);" + + "float mid3(float, float, float);" + "vec2 mid3(vec2, vec2, vec2);" + "vec3 mid3(vec3, vec3, vec3);" + "vec4 mid3(vec4, vec4, vec4);" + + "int mid3(int, int, int);" + "ivec2 mid3(ivec2, ivec2, ivec2);" + "ivec3 mid3(ivec3, ivec3, ivec3);" + "ivec4 mid3(ivec4, ivec4, ivec4);" + + "uint mid3(uint, uint, uint);" + "uvec2 mid3(uvec2, uvec2, uvec2);" + "uvec3 mid3(uvec3, uvec3, uvec3);" + "uvec4 mid3(uvec4, uvec4, uvec4);" + + "float16_t min3(float16_t, float16_t, float16_t);" + "f16vec2 min3(f16vec2, f16vec2, f16vec2);" + "f16vec3 min3(f16vec3, f16vec3, f16vec3);" + "f16vec4 min3(f16vec4, f16vec4, f16vec4);" + + "float16_t max3(float16_t, float16_t, float16_t);" + "f16vec2 max3(f16vec2, f16vec2, f16vec2);" + "f16vec3 max3(f16vec3, f16vec3, f16vec3);" + "f16vec4 max3(f16vec4, f16vec4, f16vec4);" + + "float16_t mid3(float16_t, float16_t, float16_t);" + "f16vec2 mid3(f16vec2, f16vec2, f16vec2);" + "f16vec3 mid3(f16vec3, f16vec3, f16vec3);" + "f16vec4 mid3(f16vec4, f16vec4, f16vec4);" + + "\n" + ); + } +#endif + if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 430)) { commonBuiltins.append( @@ -859,25 +947,25 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 330)) { commonBuiltins.append( - "highp int floatBitsToInt(highp float value);" - "highp ivec2 floatBitsToInt(highp vec2 value);" - "highp ivec3 floatBitsToInt(highp vec3 value);" - "highp ivec4 floatBitsToInt(highp vec4 value);" - - "highp uint floatBitsToUint(highp float value);" - "highp uvec2 floatBitsToUint(highp vec2 value);" - "highp uvec3 floatBitsToUint(highp vec3 value);" - "highp uvec4 floatBitsToUint(highp vec4 value);" + "int floatBitsToInt(highp float value);" + "ivec2 floatBitsToInt(highp vec2 value);" + "ivec3 floatBitsToInt(highp vec3 value);" + "ivec4 floatBitsToInt(highp vec4 value);" - "highp float intBitsToFloat(highp int value);" - "highp vec2 intBitsToFloat(highp ivec2 value);" - "highp vec3 intBitsToFloat(highp ivec3 value);" - "highp vec4 intBitsToFloat(highp ivec4 value);" + "uint floatBitsToUint(highp float value);" + "uvec2 floatBitsToUint(highp vec2 value);" + "uvec3 floatBitsToUint(highp vec3 value);" + "uvec4 floatBitsToUint(highp vec4 value);" - "highp float uintBitsToFloat(highp uint value);" - "highp vec2 uintBitsToFloat(highp uvec2 value);" - "highp vec3 uintBitsToFloat(highp uvec3 value);" - "highp vec4 uintBitsToFloat(highp uvec4 value);" + "float intBitsToFloat(highp int value);" + "vec2 intBitsToFloat(highp ivec2 value);" + "vec3 intBitsToFloat(highp ivec3 value);" + "vec4 intBitsToFloat(highp ivec4 value);" + + "float uintBitsToFloat(highp uint value);" + "vec2 uintBitsToFloat(highp uvec2 value);" + "vec3 uintBitsToFloat(highp uvec3 value);" + "vec4 uintBitsToFloat(highp uvec4 value);" "\n"); } @@ -905,15 +993,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 400)) { commonBuiltins.append( - "highp float frexp(highp float, out highp int);" - "highp vec2 frexp(highp vec2, out highp ivec2);" - "highp vec3 frexp(highp vec3, out highp ivec3);" - "highp vec4 frexp(highp vec4, out highp ivec4);" + "float frexp(highp float, out highp int);" + "vec2 frexp(highp vec2, out highp ivec2);" + "vec3 frexp(highp vec3, out highp ivec3);" + "vec4 frexp(highp vec4, out highp ivec4);" - "highp float ldexp(highp float, highp int);" - "highp vec2 ldexp(highp vec2, highp ivec2);" - "highp vec3 ldexp(highp vec3, highp ivec3);" - "highp vec4 ldexp(highp vec4, highp ivec4);" + "float ldexp(highp float, highp int);" + "vec2 ldexp(highp vec2, highp ivec2);" + "vec3 ldexp(highp vec3, highp ivec3);" + "vec4 ldexp(highp vec4, highp ivec4);" "\n"); } @@ -940,7 +1028,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV (profile != EEsProfile && version >= 400)) { commonBuiltins.append( "highp uint packUnorm2x16(vec2);" - "highp vec2 unpackUnorm2x16(highp uint);" + "vec2 unpackUnorm2x16(highp uint);" "\n"); } @@ -949,18 +1037,37 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append( "highp uint packSnorm2x16(vec2);" " vec2 unpackSnorm2x16(highp uint);" - "highp uint packHalf2x16(mediump vec2);" - " vec2 unpackHalf2x16(highp uint);" + "highp uint packHalf2x16(vec2);" + "\n"); + } + + if (profile == EEsProfile && version >= 300) { + commonBuiltins.append( + "mediump vec2 unpackHalf2x16(highp uint);" + "\n"); + } else if (profile != EEsProfile && version >= 420) { + commonBuiltins.append( + " vec2 unpackHalf2x16(highp uint);" "\n"); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 400)) { commonBuiltins.append( - "highp uint packSnorm4x8 (mediump vec4);" - " vec4 unpackSnorm4x8(highp uint);" - "highp uint packUnorm4x8 (mediump vec4);" - " vec4 unpackUnorm4x8(highp uint);" + "highp uint packSnorm4x8(vec4);" + "highp uint packUnorm4x8(vec4);" + "\n"); + } + + if (profile == EEsProfile && version >= 310) { + commonBuiltins.append( + "mediump vec4 unpackSnorm4x8(highp uint);" + "mediump vec4 unpackUnorm4x8(highp uint);" + "\n"); + } else if (profile != EEsProfile && version >= 400) { + commonBuiltins.append( + "vec4 unpackSnorm4x8(highp uint);" + "vec4 unpackUnorm4x8(highp uint);" "\n"); } @@ -1297,6 +1404,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "uvec3 bitfieldInsert(uvec3 base, uvec3, int, int);" "uvec4 bitfieldInsert(uvec4 base, uvec4, int, int);" + "\n"); + } + + if (profile != EEsProfile && version >= 400) { + commonBuiltins.append( " int findLSB( int);" "ivec2 findLSB(ivec2);" "ivec3 findLSB(ivec3);" @@ -1308,95 +1420,23 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "ivec4 findLSB(uvec4);" "\n"); - } - - if (profile != EEsProfile && version >= 400) { + } else if (profile == EEsProfile && version >= 310) { commonBuiltins.append( - " uint uaddCarry( uint, uint, out uint carry);" - "uvec2 uaddCarry(uvec2, uvec2, out uvec2 carry);" - "uvec3 uaddCarry(uvec3, uvec3, out uvec3 carry);" - "uvec4 uaddCarry(uvec4, uvec4, out uvec4 carry);" + "lowp int findLSB( int);" + "lowp ivec2 findLSB(ivec2);" + "lowp ivec3 findLSB(ivec3);" + "lowp ivec4 findLSB(ivec4);" - " uint usubBorrow( uint, uint, out uint borrow);" - "uvec2 usubBorrow(uvec2, uvec2, out uvec2 borrow);" - "uvec3 usubBorrow(uvec3, uvec3, out uvec3 borrow);" - "uvec4 usubBorrow(uvec4, uvec4, out uvec4 borrow);" - - "void umulExtended( uint, uint, out uint, out uint lsb);" - "void umulExtended(uvec2, uvec2, out uvec2, out uvec2 lsb);" - "void umulExtended(uvec3, uvec3, out uvec3, out uvec3 lsb);" - "void umulExtended(uvec4, uvec4, out uvec4, out uvec4 lsb);" - - "void imulExtended( int, int, out int, out int lsb);" - "void imulExtended(ivec2, ivec2, out ivec2, out ivec2 lsb);" - "void imulExtended(ivec3, ivec3, out ivec3, out ivec3 lsb);" - "void imulExtended(ivec4, ivec4, out ivec4, out ivec4 lsb);" - - " int bitfieldReverse( int);" - "ivec2 bitfieldReverse(ivec2);" - "ivec3 bitfieldReverse(ivec3);" - "ivec4 bitfieldReverse(ivec4);" - - " uint bitfieldReverse( uint);" - "uvec2 bitfieldReverse(uvec2);" - "uvec3 bitfieldReverse(uvec3);" - "uvec4 bitfieldReverse(uvec4);" - - " int bitCount( int);" - "ivec2 bitCount(ivec2);" - "ivec3 bitCount(ivec3);" - "ivec4 bitCount(ivec4);" - - " int bitCount( uint);" - "ivec2 bitCount(uvec2);" - "ivec3 bitCount(uvec3);" - "ivec4 bitCount(uvec4);" - - " int findMSB( int);" - "ivec2 findMSB(ivec2);" - "ivec3 findMSB(ivec3);" - "ivec4 findMSB(ivec4);" - - " int findMSB( uint);" - "ivec2 findMSB(uvec2);" - "ivec3 findMSB(uvec3);" - "ivec4 findMSB(uvec4);" + "lowp int findLSB( uint);" + "lowp ivec2 findLSB(uvec2);" + "lowp ivec3 findLSB(uvec3);" + "lowp ivec4 findLSB(uvec4);" "\n"); } - if (profile == EEsProfile && version >= 310) { + if (profile != EEsProfile && version >= 400) { commonBuiltins.append( - "highp uint uaddCarry(highp uint, highp uint, out lowp uint carry);" - "highp uvec2 uaddCarry(highp uvec2, highp uvec2, out lowp uvec2 carry);" - "highp uvec3 uaddCarry(highp uvec3, highp uvec3, out lowp uvec3 carry);" - "highp uvec4 uaddCarry(highp uvec4, highp uvec4, out lowp uvec4 carry);" - - "highp uint usubBorrow(highp uint, highp uint, out lowp uint borrow);" - "highp uvec2 usubBorrow(highp uvec2, highp uvec2, out lowp uvec2 borrow);" - "highp uvec3 usubBorrow(highp uvec3, highp uvec3, out lowp uvec3 borrow);" - "highp 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 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);" - - "highp int bitfieldReverse(highp int);" - "highp ivec2 bitfieldReverse(highp ivec2);" - "highp ivec3 bitfieldReverse(highp ivec3);" - "highp ivec4 bitfieldReverse(highp ivec4);" - - "highp uint bitfieldReverse(highp uint);" - "highp uvec2 bitfieldReverse(highp uvec2);" - "highp uvec3 bitfieldReverse(highp uvec3);" - "highp uvec4 bitfieldReverse(highp uvec4);" - " int bitCount( int);" "ivec2 bitCount(ivec2);" "ivec3 bitCount(ivec3);" @@ -1416,6 +1456,67 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "ivec2 findMSB(highp uvec2);" "ivec3 findMSB(highp uvec3);" "ivec4 findMSB(highp uvec4);" + + "\n"); + } + + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 400)) { + commonBuiltins.append( + " uint uaddCarry(highp uint, highp uint, out lowp uint carry);" + "uvec2 uaddCarry(highp uvec2, highp uvec2, out lowp uvec2 carry);" + "uvec3 uaddCarry(highp uvec3, highp uvec3, out lowp uvec3 carry);" + "uvec4 uaddCarry(highp uvec4, highp uvec4, out lowp uvec4 carry);" + + " uint usubBorrow(highp uint, highp uint, out lowp uint borrow);" + "uvec2 usubBorrow(highp uvec2, highp uvec2, out lowp uvec2 borrow);" + "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, 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, 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);" + "ivec3 bitfieldReverse(highp ivec3);" + "ivec4 bitfieldReverse(highp ivec4);" + + " uint bitfieldReverse(highp uint);" + "uvec2 bitfieldReverse(highp uvec2);" + "uvec3 bitfieldReverse(highp uvec3);" + "uvec4 bitfieldReverse(highp uvec4);" + + "\n"); + } + + if (profile == EEsProfile && version >= 310) { + commonBuiltins.append( + "lowp int bitCount( int);" + "lowp ivec2 bitCount(ivec2);" + "lowp ivec3 bitCount(ivec3);" + "lowp ivec4 bitCount(ivec4);" + + "lowp int bitCount( uint);" + "lowp ivec2 bitCount(uvec2);" + "lowp ivec3 bitCount(uvec3);" + "lowp ivec4 bitCount(uvec4);" + + "lowp int findMSB(highp int);" + "lowp ivec2 findMSB(highp ivec2);" + "lowp ivec3 findMSB(highp ivec3);" + "lowp ivec4 findMSB(highp ivec4);" + + "lowp int findMSB(highp uint);" + "lowp ivec2 findMSB(highp uvec2);" + "lowp ivec3 findMSB(highp uvec3);" + "lowp ivec4 findMSB(highp uvec4);" "\n"); } @@ -1468,6 +1569,509 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#ifdef AMD_EXTENSIONS + // GL_AMD_shader_ballot + if (profile != EEsProfile && version >= 450) { + commonBuiltins.append( + "float minInvocationsAMD(float);" + "vec2 minInvocationsAMD(vec2);" + "vec3 minInvocationsAMD(vec3);" + "vec4 minInvocationsAMD(vec4);" + + "int minInvocationsAMD(int);" + "ivec2 minInvocationsAMD(ivec2);" + "ivec3 minInvocationsAMD(ivec3);" + "ivec4 minInvocationsAMD(ivec4);" + + "uint minInvocationsAMD(uint);" + "uvec2 minInvocationsAMD(uvec2);" + "uvec3 minInvocationsAMD(uvec3);" + "uvec4 minInvocationsAMD(uvec4);" + + "float maxInvocationsAMD(float);" + "vec2 maxInvocationsAMD(vec2);" + "vec3 maxInvocationsAMD(vec3);" + "vec4 maxInvocationsAMD(vec4);" + + "int maxInvocationsAMD(int);" + "ivec2 maxInvocationsAMD(ivec2);" + "ivec3 maxInvocationsAMD(ivec3);" + "ivec4 maxInvocationsAMD(ivec4);" + + "uint maxInvocationsAMD(uint);" + "uvec2 maxInvocationsAMD(uvec2);" + "uvec3 maxInvocationsAMD(uvec3);" + "uvec4 maxInvocationsAMD(uvec4);" + + "float addInvocationsAMD(float);" + "vec2 addInvocationsAMD(vec2);" + "vec3 addInvocationsAMD(vec3);" + "vec4 addInvocationsAMD(vec4);" + + "int addInvocationsAMD(int);" + "ivec2 addInvocationsAMD(ivec2);" + "ivec3 addInvocationsAMD(ivec3);" + "ivec4 addInvocationsAMD(ivec4);" + + "uint addInvocationsAMD(uint);" + "uvec2 addInvocationsAMD(uvec2);" + "uvec3 addInvocationsAMD(uvec3);" + "uvec4 addInvocationsAMD(uvec4);" + + "float minInvocationsNonUniformAMD(float);" + "vec2 minInvocationsNonUniformAMD(vec2);" + "vec3 minInvocationsNonUniformAMD(vec3);" + "vec4 minInvocationsNonUniformAMD(vec4);" + + "int minInvocationsNonUniformAMD(int);" + "ivec2 minInvocationsNonUniformAMD(ivec2);" + "ivec3 minInvocationsNonUniformAMD(ivec3);" + "ivec4 minInvocationsNonUniformAMD(ivec4);" + + "uint minInvocationsNonUniformAMD(uint);" + "uvec2 minInvocationsNonUniformAMD(uvec2);" + "uvec3 minInvocationsNonUniformAMD(uvec3);" + "uvec4 minInvocationsNonUniformAMD(uvec4);" + + "float maxInvocationsNonUniformAMD(float);" + "vec2 maxInvocationsNonUniformAMD(vec2);" + "vec3 maxInvocationsNonUniformAMD(vec3);" + "vec4 maxInvocationsNonUniformAMD(vec4);" + + "int maxInvocationsNonUniformAMD(int);" + "ivec2 maxInvocationsNonUniformAMD(ivec2);" + "ivec3 maxInvocationsNonUniformAMD(ivec3);" + "ivec4 maxInvocationsNonUniformAMD(ivec4);" + + "uint maxInvocationsNonUniformAMD(uint);" + "uvec2 maxInvocationsNonUniformAMD(uvec2);" + "uvec3 maxInvocationsNonUniformAMD(uvec3);" + "uvec4 maxInvocationsNonUniformAMD(uvec4);" + + "float addInvocationsNonUniformAMD(float);" + "vec2 addInvocationsNonUniformAMD(vec2);" + "vec3 addInvocationsNonUniformAMD(vec3);" + "vec4 addInvocationsNonUniformAMD(vec4);" + + "int addInvocationsNonUniformAMD(int);" + "ivec2 addInvocationsNonUniformAMD(ivec2);" + "ivec3 addInvocationsNonUniformAMD(ivec3);" + "ivec4 addInvocationsNonUniformAMD(ivec4);" + + "uint addInvocationsNonUniformAMD(uint);" + "uvec2 addInvocationsNonUniformAMD(uvec2);" + "uvec3 addInvocationsNonUniformAMD(uvec3);" + "uvec4 addInvocationsNonUniformAMD(uvec4);" + + "float swizzleInvocationsAMD(float, uvec4);" + "vec2 swizzleInvocationsAMD(vec2, uvec4);" + "vec3 swizzleInvocationsAMD(vec3, uvec4);" + "vec4 swizzleInvocationsAMD(vec4, uvec4);" + + "int swizzleInvocationsAMD(int, uvec4);" + "ivec2 swizzleInvocationsAMD(ivec2, uvec4);" + "ivec3 swizzleInvocationsAMD(ivec3, uvec4);" + "ivec4 swizzleInvocationsAMD(ivec4, uvec4);" + + "uint swizzleInvocationsAMD(uint, uvec4);" + "uvec2 swizzleInvocationsAMD(uvec2, uvec4);" + "uvec3 swizzleInvocationsAMD(uvec3, uvec4);" + "uvec4 swizzleInvocationsAMD(uvec4, uvec4);" + + "float swizzleInvocationsMaskedAMD(float, uvec3);" + "vec2 swizzleInvocationsMaskedAMD(vec2, uvec3);" + "vec3 swizzleInvocationsMaskedAMD(vec3, uvec3);" + "vec4 swizzleInvocationsMaskedAMD(vec4, uvec3);" + + "int swizzleInvocationsMaskedAMD(int, uvec3);" + "ivec2 swizzleInvocationsMaskedAMD(ivec2, uvec3);" + "ivec3 swizzleInvocationsMaskedAMD(ivec3, uvec3);" + "ivec4 swizzleInvocationsMaskedAMD(ivec4, uvec3);" + + "uint swizzleInvocationsMaskedAMD(uint, uvec3);" + "uvec2 swizzleInvocationsMaskedAMD(uvec2, uvec3);" + "uvec3 swizzleInvocationsMaskedAMD(uvec3, uvec3);" + "uvec4 swizzleInvocationsMaskedAMD(uvec4, uvec3);" + + "float writeInvocationAMD(float, float, uint);" + "vec2 writeInvocationAMD(vec2, vec2, uint);" + "vec3 writeInvocationAMD(vec3, vec3, uint);" + "vec4 writeInvocationAMD(vec4, vec4, uint);" + + "int writeInvocationAMD(int, int, uint);" + "ivec2 writeInvocationAMD(ivec2, ivec2, uint);" + "ivec3 writeInvocationAMD(ivec3, ivec3, uint);" + "ivec4 writeInvocationAMD(ivec4, ivec4, uint);" + + "uint writeInvocationAMD(uint, uint, uint);" + "uvec2 writeInvocationAMD(uvec2, uvec2, uint);" + "uvec3 writeInvocationAMD(uvec3, uvec3, uint);" + "uvec4 writeInvocationAMD(uvec4, uvec4, uint);" + + "uint mbcntAMD(uint64_t);" + + "\n"); + } + + // GL_AMD_gcn_shader + if (profile != EEsProfile && version >= 450) { + commonBuiltins.append( + "float cubeFaceIndexAMD(vec3);" + "vec2 cubeFaceCoordAMD(vec3);" + "uint64_t timeAMD();" + + "\n"); + } + + // GL_AMD_gpu_shader_half_float + if (profile != EEsProfile && version >= 450) { + commonBuiltins.append( + "float16_t radians(float16_t);" + "f16vec2 radians(f16vec2);" + "f16vec3 radians(f16vec3);" + "f16vec4 radians(f16vec4);" + + "float16_t degrees(float16_t);" + "f16vec2 degrees(f16vec2);" + "f16vec3 degrees(f16vec3);" + "f16vec4 degrees(f16vec4);" + + "float16_t sin(float16_t);" + "f16vec2 sin(f16vec2);" + "f16vec3 sin(f16vec3);" + "f16vec4 sin(f16vec4);" + + "float16_t cos(float16_t);" + "f16vec2 cos(f16vec2);" + "f16vec3 cos(f16vec3);" + "f16vec4 cos(f16vec4);" + + "float16_t tan(float16_t);" + "f16vec2 tan(f16vec2);" + "f16vec3 tan(f16vec3);" + "f16vec4 tan(f16vec4);" + + "float16_t asin(float16_t);" + "f16vec2 asin(f16vec2);" + "f16vec3 asin(f16vec3);" + "f16vec4 asin(f16vec4);" + + "float16_t acos(float16_t);" + "f16vec2 acos(f16vec2);" + "f16vec3 acos(f16vec3);" + "f16vec4 acos(f16vec4);" + + "float16_t atan(float16_t, float16_t);" + "f16vec2 atan(f16vec2, f16vec2);" + "f16vec3 atan(f16vec3, f16vec3);" + "f16vec4 atan(f16vec4, f16vec4);" + + "float16_t atan(float16_t);" + "f16vec2 atan(f16vec2);" + "f16vec3 atan(f16vec3);" + "f16vec4 atan(f16vec4);" + + "float16_t sinh(float16_t);" + "f16vec2 sinh(f16vec2);" + "f16vec3 sinh(f16vec3);" + "f16vec4 sinh(f16vec4);" + + "float16_t cosh(float16_t);" + "f16vec2 cosh(f16vec2);" + "f16vec3 cosh(f16vec3);" + "f16vec4 cosh(f16vec4);" + + "float16_t tanh(float16_t);" + "f16vec2 tanh(f16vec2);" + "f16vec3 tanh(f16vec3);" + "f16vec4 tanh(f16vec4);" + + "float16_t asinh(float16_t);" + "f16vec2 asinh(f16vec2);" + "f16vec3 asinh(f16vec3);" + "f16vec4 asinh(f16vec4);" + + "float16_t acosh(float16_t);" + "f16vec2 acosh(f16vec2);" + "f16vec3 acosh(f16vec3);" + "f16vec4 acosh(f16vec4);" + + "float16_t atanh(float16_t);" + "f16vec2 atanh(f16vec2);" + "f16vec3 atanh(f16vec3);" + "f16vec4 atanh(f16vec4);" + + "float16_t pow(float16_t, float16_t);" + "f16vec2 pow(f16vec2, f16vec2);" + "f16vec3 pow(f16vec3, f16vec3);" + "f16vec4 pow(f16vec4, f16vec4);" + + "float16_t exp(float16_t);" + "f16vec2 exp(f16vec2);" + "f16vec3 exp(f16vec3);" + "f16vec4 exp(f16vec4);" + + "float16_t log(float16_t);" + "f16vec2 log(f16vec2);" + "f16vec3 log(f16vec3);" + "f16vec4 log(f16vec4);" + + "float16_t exp2(float16_t);" + "f16vec2 exp2(f16vec2);" + "f16vec3 exp2(f16vec3);" + "f16vec4 exp2(f16vec4);" + + "float16_t log2(float16_t);" + "f16vec2 log2(f16vec2);" + "f16vec3 log2(f16vec3);" + "f16vec4 log2(f16vec4);" + + "float16_t sqrt(float16_t);" + "f16vec2 sqrt(f16vec2);" + "f16vec3 sqrt(f16vec3);" + "f16vec4 sqrt(f16vec4);" + + "float16_t inversesqrt(float16_t);" + "f16vec2 inversesqrt(f16vec2);" + "f16vec3 inversesqrt(f16vec3);" + "f16vec4 inversesqrt(f16vec4);" + + "float16_t abs(float16_t);" + "f16vec2 abs(f16vec2);" + "f16vec3 abs(f16vec3);" + "f16vec4 abs(f16vec4);" + + "float16_t sign(float16_t);" + "f16vec2 sign(f16vec2);" + "f16vec3 sign(f16vec3);" + "f16vec4 sign(f16vec4);" + + "float16_t floor(float16_t);" + "f16vec2 floor(f16vec2);" + "f16vec3 floor(f16vec3);" + "f16vec4 floor(f16vec4);" + + "float16_t trunc(float16_t);" + "f16vec2 trunc(f16vec2);" + "f16vec3 trunc(f16vec3);" + "f16vec4 trunc(f16vec4);" + + "float16_t round(float16_t);" + "f16vec2 round(f16vec2);" + "f16vec3 round(f16vec3);" + "f16vec4 round(f16vec4);" + + "float16_t roundEven(float16_t);" + "f16vec2 roundEven(f16vec2);" + "f16vec3 roundEven(f16vec3);" + "f16vec4 roundEven(f16vec4);" + + "float16_t ceil(float16_t);" + "f16vec2 ceil(f16vec2);" + "f16vec3 ceil(f16vec3);" + "f16vec4 ceil(f16vec4);" + + "float16_t fract(float16_t);" + "f16vec2 fract(f16vec2);" + "f16vec3 fract(f16vec3);" + "f16vec4 fract(f16vec4);" + + "float16_t mod(float16_t, float16_t);" + "f16vec2 mod(f16vec2, float16_t);" + "f16vec3 mod(f16vec3, float16_t);" + "f16vec4 mod(f16vec4, float16_t);" + "f16vec2 mod(f16vec2, f16vec2);" + "f16vec3 mod(f16vec3, f16vec3);" + "f16vec4 mod(f16vec4, f16vec4);" + + "float16_t modf(float16_t, out float16_t);" + "f16vec2 modf(f16vec2, out f16vec2);" + "f16vec3 modf(f16vec3, out f16vec3);" + "f16vec4 modf(f16vec4, out f16vec4);" + + "float16_t min(float16_t, float16_t);" + "f16vec2 min(f16vec2, float16_t);" + "f16vec3 min(f16vec3, float16_t);" + "f16vec4 min(f16vec4, float16_t);" + "f16vec2 min(f16vec2, f16vec2);" + "f16vec3 min(f16vec3, f16vec3);" + "f16vec4 min(f16vec4, f16vec4);" + + "float16_t max(float16_t, float16_t);" + "f16vec2 max(f16vec2, float16_t);" + "f16vec3 max(f16vec3, float16_t);" + "f16vec4 max(f16vec4, float16_t);" + "f16vec2 max(f16vec2, f16vec2);" + "f16vec3 max(f16vec3, f16vec3);" + "f16vec4 max(f16vec4, f16vec4);" + + "float16_t clamp(float16_t, float16_t, float16_t);" + "f16vec2 clamp(f16vec2, float16_t, float16_t);" + "f16vec3 clamp(f16vec3, float16_t, float16_t);" + "f16vec4 clamp(f16vec4, float16_t, float16_t);" + "f16vec2 clamp(f16vec2, f16vec2, f16vec2);" + "f16vec3 clamp(f16vec3, f16vec3, f16vec3);" + "f16vec4 clamp(f16vec4, f16vec4, f16vec4);" + + "float16_t mix(float16_t, float16_t, float16_t);" + "f16vec2 mix(f16vec2, f16vec2, float16_t);" + "f16vec3 mix(f16vec3, f16vec3, float16_t);" + "f16vec4 mix(f16vec4, f16vec4, float16_t);" + "f16vec2 mix(f16vec2, f16vec2, f16vec2);" + "f16vec3 mix(f16vec3, f16vec3, f16vec3);" + "f16vec4 mix(f16vec4, f16vec4, f16vec4);" + "float16_t mix(float16_t, float16_t, bool);" + "f16vec2 mix(f16vec2, f16vec2, bvec2);" + "f16vec3 mix(f16vec3, f16vec3, bvec3);" + "f16vec4 mix(f16vec4, f16vec4, bvec4);" + + "float16_t step(float16_t, float16_t);" + "f16vec2 step(f16vec2, f16vec2);" + "f16vec3 step(f16vec3, f16vec3);" + "f16vec4 step(f16vec4, f16vec4);" + "f16vec2 step(float16_t, f16vec2);" + "f16vec3 step(float16_t, f16vec3);" + "f16vec4 step(float16_t, f16vec4);" + + "float16_t smoothstep(float16_t, float16_t, float16_t);" + "f16vec2 smoothstep(f16vec2, f16vec2, f16vec2);" + "f16vec3 smoothstep(f16vec3, f16vec3, f16vec3);" + "f16vec4 smoothstep(f16vec4, f16vec4, f16vec4);" + "f16vec2 smoothstep(float16_t, float16_t, f16vec2);" + "f16vec3 smoothstep(float16_t, float16_t, f16vec3);" + "f16vec4 smoothstep(float16_t, float16_t, f16vec4);" + + "bool isnan(float16_t);" + "bvec2 isnan(f16vec2);" + "bvec3 isnan(f16vec3);" + "bvec4 isnan(f16vec4);" + + "bool isinf(float16_t);" + "bvec2 isinf(f16vec2);" + "bvec3 isinf(f16vec3);" + "bvec4 isinf(f16vec4);" + + "float16_t fma(float16_t, float16_t, float16_t);" + "f16vec2 fma(f16vec2, f16vec2, f16vec2);" + "f16vec3 fma(f16vec3, f16vec3, f16vec3);" + "f16vec4 fma(f16vec4, f16vec4, f16vec4);" + + "float16_t frexp(float16_t, out int);" + "f16vec2 frexp(f16vec2, out ivec2);" + "f16vec3 frexp(f16vec3, out ivec3);" + "f16vec4 frexp(f16vec4, out ivec4);" + + "float16_t ldexp(float16_t, in int);" + "f16vec2 ldexp(f16vec2, in ivec2);" + "f16vec3 ldexp(f16vec3, in ivec3);" + "f16vec4 ldexp(f16vec4, in ivec4);" + + "uint packFloat2x16(f16vec2);" + "f16vec2 unpackFloat2x16(uint);" + + "float16_t length(float16_t);" + "float16_t length(f16vec2);" + "float16_t length(f16vec3);" + "float16_t length(f16vec4);" + + "float16_t distance(float16_t, float16_t);" + "float16_t distance(f16vec2, f16vec2);" + "float16_t distance(f16vec3, f16vec3);" + "float16_t distance(f16vec4, f16vec4);" + + "float16_t dot(float16_t, float16_t);" + "float16_t dot(f16vec2, f16vec2);" + "float16_t dot(f16vec3, f16vec3);" + "float16_t dot(f16vec4, f16vec4);" + + "f16vec3 cross(f16vec3, f16vec3);" + + "float16_t normalize(float16_t);" + "f16vec2 normalize(f16vec2);" + "f16vec3 normalize(f16vec3);" + "f16vec4 normalize(f16vec4);" + + "float16_t faceforward(float16_t, float16_t, float16_t);" + "f16vec2 faceforward(f16vec2, f16vec2, f16vec2);" + "f16vec3 faceforward(f16vec3, f16vec3, f16vec3);" + "f16vec4 faceforward(f16vec4, f16vec4, f16vec4);" + + "float16_t reflect(float16_t, float16_t);" + "f16vec2 reflect(f16vec2, f16vec2);" + "f16vec3 reflect(f16vec3, f16vec3);" + "f16vec4 reflect(f16vec4, f16vec4);" + + "float16_t refract(float16_t, float16_t, float16_t);" + "f16vec2 refract(f16vec2, f16vec2, float16_t);" + "f16vec3 refract(f16vec3, f16vec3, float16_t);" + "f16vec4 refract(f16vec4, f16vec4, float16_t);" + + "f16mat2 matrixCompMult(f16mat2, f16mat2);" + "f16mat3 matrixCompMult(f16mat3, f16mat3);" + "f16mat4 matrixCompMult(f16mat4, f16mat4);" + "f16mat2x3 matrixCompMult(f16mat2x3, f16mat2x3);" + "f16mat2x4 matrixCompMult(f16mat2x4, f16mat2x4);" + "f16mat3x2 matrixCompMult(f16mat3x2, f16mat3x2);" + "f16mat3x4 matrixCompMult(f16mat3x4, f16mat3x4);" + "f16mat4x2 matrixCompMult(f16mat4x2, f16mat4x2);" + "f16mat4x3 matrixCompMult(f16mat4x3, f16mat4x3);" + + "f16mat2 outerProduct(f16vec2, f16vec2);" + "f16mat3 outerProduct(f16vec3, f16vec3);" + "f16mat4 outerProduct(f16vec4, f16vec4);" + "f16mat2x3 outerProduct(f16vec3, f16vec2);" + "f16mat3x2 outerProduct(f16vec2, f16vec3);" + "f16mat2x4 outerProduct(f16vec4, f16vec2);" + "f16mat4x2 outerProduct(f16vec2, f16vec4);" + "f16mat3x4 outerProduct(f16vec4, f16vec3);" + "f16mat4x3 outerProduct(f16vec3, f16vec4);" + + "f16mat2 transpose(f16mat2);" + "f16mat3 transpose(f16mat3);" + "f16mat4 transpose(f16mat4);" + "f16mat2x3 transpose(f16mat3x2);" + "f16mat3x2 transpose(f16mat2x3);" + "f16mat2x4 transpose(f16mat4x2);" + "f16mat4x2 transpose(f16mat2x4);" + "f16mat3x4 transpose(f16mat4x3);" + "f16mat4x3 transpose(f16mat3x4);" + + "float16_t determinant(f16mat2);" + "float16_t determinant(f16mat3);" + "float16_t determinant(f16mat4);" + + "f16mat2 inverse(f16mat2);" + "f16mat3 inverse(f16mat3);" + "f16mat4 inverse(f16mat4);" + + "bvec2 lessThan(f16vec2, f16vec2);" + "bvec3 lessThan(f16vec3, f16vec3);" + "bvec4 lessThan(f16vec4, f16vec4);" + + "bvec2 lessThanEqual(f16vec2, f16vec2);" + "bvec3 lessThanEqual(f16vec3, f16vec3);" + "bvec4 lessThanEqual(f16vec4, f16vec4);" + + "bvec2 greaterThan(f16vec2, f16vec2);" + "bvec3 greaterThan(f16vec3, f16vec3);" + "bvec4 greaterThan(f16vec4, f16vec4);" + + "bvec2 greaterThanEqual(f16vec2, f16vec2);" + "bvec3 greaterThanEqual(f16vec3, f16vec3);" + "bvec4 greaterThanEqual(f16vec4, f16vec4);" + + "bvec2 equal(f16vec2, f16vec2);" + "bvec3 equal(f16vec3, f16vec3);" + "bvec4 equal(f16vec4, f16vec4);" + + "bvec2 notEqual(f16vec2, f16vec2);" + "bvec3 notEqual(f16vec3, f16vec3);" + "bvec4 notEqual(f16vec4, f16vec4);" + + "\n"); + } +#endif + //============================================================================ // // Prototypes for built-in functions seen by vertex shaders only. @@ -1713,6 +2317,100 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#ifdef AMD_EXTENSIONS + // GL_AMD_shader_explicit_vertex_parameter + if (profile != EEsProfile && version >= 450) { + stageBuiltins[EShLangFragment].append( + "float interpolateAtVertexAMD(float, uint);" + "vec2 interpolateAtVertexAMD(vec2, uint);" + "vec3 interpolateAtVertexAMD(vec3, uint);" + "vec4 interpolateAtVertexAMD(vec4, uint);" + + "int interpolateAtVertexAMD(int, uint);" + "ivec2 interpolateAtVertexAMD(ivec2, uint);" + "ivec3 interpolateAtVertexAMD(ivec3, uint);" + "ivec4 interpolateAtVertexAMD(ivec4, uint);" + + "uint interpolateAtVertexAMD(uint, uint);" + "uvec2 interpolateAtVertexAMD(uvec2, uint);" + "uvec3 interpolateAtVertexAMD(uvec3, uint);" + "uvec4 interpolateAtVertexAMD(uvec4, uint);" + + "float16_t interpolateAtVertexAMD(float16_t, uint);" + "f16vec2 interpolateAtVertexAMD(f16vec2, uint);" + "f16vec3 interpolateAtVertexAMD(f16vec3, uint);" + "f16vec4 interpolateAtVertexAMD(f16vec4, uint);" + + "\n"); + } + + // GL_AMD_gpu_shader_half_float + if (profile != EEsProfile && version >= 450) { + stageBuiltins[EShLangFragment].append( + "float16_t dFdx(float16_t);" + "f16vec2 dFdx(f16vec2);" + "f16vec3 dFdx(f16vec3);" + "f16vec4 dFdx(f16vec4);" + + "float16_t dFdy(float16_t);" + "f16vec2 dFdy(f16vec2);" + "f16vec3 dFdy(f16vec3);" + "f16vec4 dFdy(f16vec4);" + + "float16_t dFdxFine(float16_t);" + "f16vec2 dFdxFine(f16vec2);" + "f16vec3 dFdxFine(f16vec3);" + "f16vec4 dFdxFine(f16vec4);" + + "float16_t dFdyFine(float16_t);" + "f16vec2 dFdyFine(f16vec2);" + "f16vec3 dFdyFine(f16vec3);" + "f16vec4 dFdyFine(f16vec4);" + + "float16_t dFdxCoarse(float16_t);" + "f16vec2 dFdxCoarse(f16vec2);" + "f16vec3 dFdxCoarse(f16vec3);" + "f16vec4 dFdxCoarse(f16vec4);" + + "float16_t dFdyCoarse(float16_t);" + "f16vec2 dFdyCoarse(f16vec2);" + "f16vec3 dFdyCoarse(f16vec3);" + "f16vec4 dFdyCoarse(f16vec4);" + + "float16_t fwidth(float16_t);" + "f16vec2 fwidth(f16vec2);" + "f16vec3 fwidth(f16vec3);" + "f16vec4 fwidth(f16vec4);" + + "float16_t fwidthFine(float16_t);" + "f16vec2 fwidthFine(f16vec2);" + "f16vec3 fwidthFine(f16vec3);" + "f16vec4 fwidthFine(f16vec4);" + + "float16_t fwidthCoarse(float16_t);" + "f16vec2 fwidthCoarse(f16vec2);" + "f16vec3 fwidthCoarse(f16vec3);" + "f16vec4 fwidthCoarse(f16vec4);" + + "float16_t interpolateAtCentroid(float16_t);" + "f16vec2 interpolateAtCentroid(f16vec2);" + "f16vec3 interpolateAtCentroid(f16vec3);" + "f16vec4 interpolateAtCentroid(f16vec4);" + + "float16_t interpolateAtSample(float16_t, int);" + "f16vec2 interpolateAtSample(f16vec2, int);" + "f16vec3 interpolateAtSample(f16vec3, int);" + "f16vec4 interpolateAtSample(f16vec4, int);" + + "float16_t interpolateAtOffset(float16_t, f16vec2);" + "f16vec2 interpolateAtOffset(f16vec2, f16vec2);" + "f16vec3 interpolateAtOffset(f16vec3, f16vec2);" + "f16vec4 interpolateAtOffset(f16vec4, f16vec2);" + + "\n"); + } +#endif + //============================================================================ // // Standard Uniforms @@ -2332,6 +3030,19 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in float gl_CullDistance[];" "bool gl_HelperInvocation;" // needs qualifier fixed later ); + +#ifdef AMD_EXTENSIONS + if (version >= 450) + stageBuiltins[EShLangFragment].append( + "in vec2 gl_BaryCoordNoPerspAMD;" + "in vec2 gl_BaryCoordNoPerspCentroidAMD;" + "in vec2 gl_BaryCoordNoPerspSampleAMD;" + "in vec2 gl_BaryCoordSmoothAMD;" + "in vec2 gl_BaryCoordSmoothCentroidAMD;" + "in vec2 gl_BaryCoordSmoothSampleAMD;" + "in vec3 gl_BaryCoordPullModelAMD;" + ); +#endif } else { // ES profile @@ -2359,10 +3070,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV ); 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;" ); } @@ -3460,6 +4171,14 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append(builtInConstant); } +#ifdef AMD_EXTENSIONS + // GL_AMD_gcn_shader + if (profile != EEsProfile && version >= 450) { + snprintf(builtInConstant, maxSize, "const int gl_SIMDGroupSizeAMD = 64;"); + s.append(builtInConstant); + } +#endif + s.append("\n"); } @@ -3575,7 +4294,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("readInvocationARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setFunctionExtensions("readFirstInvocationARB", 1, &E_GL_ARB_shader_ballot); - BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable); BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable); BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable); @@ -3583,11 +4301,42 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); + if (spvVersion.vulkan >= 100) + // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan + SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable); + symbolTable.setFunctionExtensions("anyInvocationARB", 1, &E_GL_ARB_shader_group_vote); symbolTable.setFunctionExtensions("allInvocationsARB", 1, &E_GL_ARB_shader_group_vote); symbolTable.setFunctionExtensions("allInvocationsEqualARB", 1, &E_GL_ARB_shader_group_vote); } +#ifdef AMD_EXTENSIONS + if (profile != EEsProfile) { + symbolTable.setFunctionExtensions("minInvocationsAMD", 1, &E_GL_AMD_shader_ballot); + symbolTable.setFunctionExtensions("maxInvocationsAMD", 1, &E_GL_AMD_shader_ballot); + symbolTable.setFunctionExtensions("addInvocationsAMD", 1, &E_GL_AMD_shader_ballot); + symbolTable.setFunctionExtensions("minInvocationsNonUniformAMD", 1, &E_GL_AMD_shader_ballot); + symbolTable.setFunctionExtensions("maxInvocationsNonUniformAMD", 1, &E_GL_AMD_shader_ballot); + symbolTable.setFunctionExtensions("addInvocationsNonUniformAMD", 1, &E_GL_AMD_shader_ballot); + symbolTable.setFunctionExtensions("swizzleInvocationsAMD", 1, &E_GL_AMD_shader_ballot); + symbolTable.setFunctionExtensions("swizzleInvocationsWithPatternAMD", 1, &E_GL_AMD_shader_ballot); + symbolTable.setFunctionExtensions("writeInvocationAMD", 1, &E_GL_AMD_shader_ballot); + symbolTable.setFunctionExtensions("mbcntAMD", 1, &E_GL_AMD_shader_ballot); + } + + if (profile != EEsProfile) { + symbolTable.setFunctionExtensions("min3", 1, &E_GL_AMD_shader_trinary_minmax); + symbolTable.setFunctionExtensions("max3", 1, &E_GL_AMD_shader_trinary_minmax); + symbolTable.setFunctionExtensions("mid3", 1, &E_GL_AMD_shader_trinary_minmax); + } + + if (profile != EEsProfile) { + symbolTable.setFunctionExtensions("cubeFaceIndexAMD", 1, &E_GL_AMD_gcn_shader); + symbolTable.setFunctionExtensions("cubeFaceCoordAMD", 1, &E_GL_AMD_gcn_shader); + symbolTable.setFunctionExtensions("timeAMD", 1, &E_GL_AMD_gcn_shader); + } +#endif + // Compatibility variables, vertex only if (spvVersion.spv == 0) { BuiltInVariable("gl_Color", EbvColor, symbolTable); @@ -3872,6 +4621,29 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("textureGradOffsetClampARB", 1, &E_GL_ARB_sparse_texture_clamp); } +#ifdef AMD_EXTENSIONS + // E_GL_AMD_shader_explicit_vertex_parameter + if (profile != EEsProfile) { + symbolTable.setVariableExtensions("gl_BaryCoordNoPerspAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); + symbolTable.setVariableExtensions("gl_BaryCoordNoPerspCentroidAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); + symbolTable.setVariableExtensions("gl_BaryCoordNoPerspSampleAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); + symbolTable.setVariableExtensions("gl_BaryCoordSmoothAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); + symbolTable.setVariableExtensions("gl_BaryCoordSmoothCentroidAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); + symbolTable.setVariableExtensions("gl_BaryCoordSmoothSampleAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); + symbolTable.setVariableExtensions("gl_BaryCoordPullModelAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); + + symbolTable.setFunctionExtensions("interpolateAtVertexAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter); + + BuiltInVariable("gl_BaryCoordNoPerspAMD", EbvBaryCoordNoPersp, symbolTable); + BuiltInVariable("gl_BaryCoordNoPerspCentroidAMD", EbvBaryCoordNoPerspCentroid, symbolTable); + BuiltInVariable("gl_BaryCoordNoPerspSampleAMD", EbvBaryCoordNoPerspSample, symbolTable); + BuiltInVariable("gl_BaryCoordSmoothAMD", EbvBaryCoordSmooth, symbolTable); + BuiltInVariable("gl_BaryCoordSmoothCentroidAMD", EbvBaryCoordSmoothCentroid, symbolTable); + BuiltInVariable("gl_BaryCoordSmoothSampleAMD", EbvBaryCoordSmoothSample, symbolTable); + BuiltInVariable("gl_BaryCoordPullModelAMD", EbvBaryCoordPullModel, symbolTable); + } +#endif + symbolTable.setVariableExtensions("gl_FragDepthEXT", 1, &E_GL_EXT_frag_depth); if (profile == EEsProfile) { @@ -4029,6 +4801,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("packUint2x32", EOpPackUint2x32); symbolTable.relateToOperator("unpackUint2x32", EOpUnpackUint2x32); +#ifdef AMD_EXTENSIONS + symbolTable.relateToOperator("packFloat2x16", EOpPackFloat2x16); + symbolTable.relateToOperator("unpackFloat2x16", EOpUnpackFloat2x16); +#endif + symbolTable.relateToOperator("length", EOpLength); symbolTable.relateToOperator("distance", EOpDistance); symbolTable.relateToOperator("dot", EOpDot); @@ -4205,6 +4982,27 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("anyInvocationARB", EOpAnyInvocation); symbolTable.relateToOperator("allInvocationsARB", EOpAllInvocations); symbolTable.relateToOperator("allInvocationsEqualARB", EOpAllInvocationsEqual); + +#ifdef AMD_EXTENSIONS + symbolTable.relateToOperator("minInvocationsAMD", EOpMinInvocations); + symbolTable.relateToOperator("maxInvocationsAMD", EOpMaxInvocations); + symbolTable.relateToOperator("addInvocationsAMD", EOpAddInvocations); + symbolTable.relateToOperator("minInvocationsNonUniformAMD", EOpMinInvocationsNonUniform); + symbolTable.relateToOperator("maxInvocationsNonUniformAMD", EOpMaxInvocationsNonUniform); + symbolTable.relateToOperator("addInvocationsNonUniformAMD", EOpAddInvocationsNonUniform); + symbolTable.relateToOperator("swizzleInvocationsAMD", EOpSwizzleInvocations); + symbolTable.relateToOperator("swizzleInvocationsMaskedAMD", EOpSwizzleInvocationsMasked); + symbolTable.relateToOperator("writeInvocationAMD", EOpWriteInvocation); + symbolTable.relateToOperator("mbcntAMD", EOpMbcnt); + + symbolTable.relateToOperator("min3", EOpMin3); + symbolTable.relateToOperator("max3", EOpMax3); + symbolTable.relateToOperator("mid3", EOpMid3); + + symbolTable.relateToOperator("cubeFaceIndexAMD", EOpCubeFaceIndex); + symbolTable.relateToOperator("cubeFaceCoordAMD", EOpCubeFaceCoord); + symbolTable.relateToOperator("timeAMD", EOpTime); +#endif } } @@ -4238,7 +5036,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("interpolateAtCentroid", EOpInterpolateAtCentroid); symbolTable.relateToOperator("interpolateAtSample", EOpInterpolateAtSample); symbolTable.relateToOperator("interpolateAtOffset", EOpInterpolateAtOffset); + +#ifdef AMD_EXTENSIONS + if (profile != EEsProfile) + symbolTable.relateToOperator("interpolateAtVertexAMD", EOpInterpolateAtVertex); break; +#endif case EShLangCompute: symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 02681ac5..758ae4f2 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -44,7 +44,7 @@ #include "SymbolTable.h" #include "propagateNoContraction.h" -#include +#include namespace glslang { @@ -73,6 +73,16 @@ TIntermSymbol* TIntermediate::addSymbol(int id, const TString& name, const TType return node; } +TIntermSymbol* TIntermediate::addSymbol(const TIntermSymbol& intermSymbol) +{ + return addSymbol(intermSymbol.getId(), + intermSymbol.getName(), + intermSymbol.getType(), + intermSymbol.getConstArray(), + intermSymbol.getConstSubtree(), + intermSymbol.getLoc()); +} + TIntermSymbol* TIntermediate::addSymbol(const TVariable& variable) { glslang::TSourceLoc loc; // just a null location @@ -98,6 +108,8 @@ TIntermSymbol* TIntermediate::addSymbol(const TType& type, const TSourceLoc& loc // // Returns the added node. // +// Returns nullptr if the working conversions and promotions could not be found. +// TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc) { // No operations work on blocks @@ -116,19 +128,17 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn 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. // - TIntermBinary* node = new TIntermBinary(op); - if (loc.line == 0) - loc = right->getLoc(); - node->setLoc(loc); - - node->setLeft(left); - node->setRight(right); - if (! node->promote()) - return 0; + TIntermBinary* node = addBinaryNode(op, left, right, loc); + if (! promote(node)) + return nullptr; node->updatePrecision(); @@ -156,34 +166,88 @@ TIntermTyped* TIntermediate::addBinaryMath(TOperator op, TIntermTyped* left, TIn return node; } +// +// Low level: add binary node (no promotions or other argument modifications) +// +TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc) const +{ + // build the node + TIntermBinary* node = new TIntermBinary(op); + if (loc.line == 0) + loc = left->getLoc(); + node->setLoc(loc); + node->setLeft(left); + node->setRight(right); + + return node; +} + +// +// like non-type form, but sets node's type. +// +TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc, const TType& type) const +{ + TIntermBinary* node = addBinaryNode(op, left, right, loc); + node->setType(type); + return node; +} + +// +// Low level: add unary node (no promotions or other argument modifications) +// +TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc loc) const +{ + TIntermUnary* node = new TIntermUnary(op); + if (loc.line == 0) + loc = child->getLoc(); + node->setLoc(loc); + node->setOperand(child); + + return node; +} + +// +// like non-type form, but sets node's type. +// +TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc loc, const TType& type) const +{ + TIntermUnary* node = addUnaryNode(op, child, loc); + node->setType(type); + return node; +} + // // Connect two nodes through an assignment. // // Returns the added node. // +// Returns nullptr if the 'right' type could not be converted to match the 'left' type, +// or the resulting operation cannot be properly promoted. +// TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc) { // No block assignment if (left->getType().getBasicType() == EbtBlock || right->getType().getBasicType() == EbtBlock) - return 0; + return nullptr; // // Like adding binary math, except the conversion can only go // from right to left. // - TIntermBinary* node = new TIntermBinary(op); - if (loc.line == 0) - loc = left->getLoc(); - node->setLoc(loc); - TIntermTyped* child = addConversion(op, left->getType(), right); - if (child == 0) - return 0; + // convert base types, nullptr return means not possible + right = addConversion(op, left->getType(), right); + if (right == nullptr) + return nullptr; - node->setLeft(left); - node->setRight(child); - if (! node->promote()) - return 0; + // convert shape + right = addShapeConversion(op, left->getType(), right); + + // build the node + TIntermBinary* node = addBinaryNode(op, left, right, loc); + + if (! promote(node)) + return nullptr; node->updatePrecision(); @@ -199,16 +263,8 @@ TIntermTyped* TIntermediate::addAssign(TOperator op, TIntermTyped* left, TInterm // TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, TSourceLoc loc) { - TIntermBinary* node = new TIntermBinary(op); - if (loc.line == 0) - loc = index->getLoc(); - node->setLoc(loc); - node->setLeft(base); - node->setRight(index); - // caller should set the type - - return node; + return addBinaryNode(op, base, index, loc); } // @@ -226,6 +282,10 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo switch (op) { case EOpLogicalNot: + if (source == EShSourceHlsl) { + break; // HLSL can promote logical not + } + if (child->getType().getBasicType() != EbtBool || child->getType().isMatrix() || child->getType().isArray() || child->getType().isVector()) { return 0; } @@ -253,13 +313,17 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo case EOpConstructBool: newType = EbtBool; break; case EOpConstructFloat: newType = EbtFloat; break; case EOpConstructDouble: newType = EbtDouble; break; +#ifdef AMD_EXTENSIONS + case EOpConstructFloat16: newType = EbtFloat16; break; +#endif default: break; // some compilers want this } 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; @@ -277,6 +341,9 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo case EOpConstructBool: case EOpConstructFloat: case EOpConstructDouble: +#ifdef AMD_EXTENSIONS + case EOpConstructFloat16: +#endif return child; default: break; // some compilers want this } @@ -284,14 +351,10 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo // // Make a new node for the operator. // - TIntermUnary* node = new TIntermUnary(op); - if (loc.line == 0) - loc = child->getLoc(); - node->setLoc(loc); - node->setOperand(child); + TIntermUnary* node = addUnaryNode(op, child, loc); - if (! node->promote()) - return 0; + if (! promote(node)) + return nullptr; node->updatePrecision(); @@ -325,40 +388,11 @@ TIntermTyped* TIntermediate::addBuiltInFunctionCall(const TSourceLoc& loc, TOper return folded; } - TIntermUnary* node = new TIntermUnary(op); - node->setLoc(child->getLoc()); - node->setOperand(child); - node->setType(returnType); - - // propagate precision up from child - if (profile == EEsProfile && returnType.getQualifier().precision == EpqNone && returnType.getBasicType() != EbtBool) - node->getQualifier().precision = child->getQualifier().precision; - - // propagate precision down to child - if (node->getQualifier().precision != EpqNone) - child->propagatePrecision(node->getQualifier().precision); - - return node; + return addUnaryNode(op, child, child->getLoc(), returnType); } else { // setAggregateOperater() calls fold() for constant folding TIntermTyped* node = setAggregateOperator(childNode, op, returnType, loc); - // if not folded, we'll still have an aggregate node to propagate precision with - if (node->getAsAggregate()) { - TPrecisionQualifier correctPrecision = returnType.getQualifier().precision; - if (correctPrecision == EpqNone && profile == EEsProfile) { - // find the maximum precision from the arguments, for the built-in's return precision - TIntermSequence& sequence = node->getAsAggregate()->getSequence(); - for (unsigned int arg = 0; arg < sequence.size(); ++arg) - correctPrecision = std::max(correctPrecision, sequence[arg]->getAsTyped()->getQualifier().precision); - } - - // Propagate precision through this node and its children. That algorithm stops - // when a precision is found, so start by clearing this subroot precision - node->getQualifier().precision = EpqNone; - node->propagatePrecision(correctPrecision); - } - return node; } } @@ -414,6 +448,9 @@ TIntermTyped* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator o // Returns a node representing the conversion, which could be the same // node passed in if no conversion was needed. // +// Generally, this is focused on basic type conversion, not shape conversion. +// See addShapeConversion(). +// // Return 0 if a conversion can't be done. // TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TIntermTyped* node) const @@ -429,6 +466,11 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt // opaque types can be passed to functions if (op == EOpFunction) break; + + // HLSL can assign samplers directly (no constructor) + if (source == EShSourceHlsl && node->getBasicType() == EbtSampler) + break; + // samplers can get assigned via a sampler constructor // (well, not yet, but code in the rest of this function is ready for it) if (node->getBasicType() == EbtSampler && op == EOpAssign && @@ -471,6 +513,11 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpConstructDouble: promoteTo = EbtDouble; break; +#ifdef AMD_EXTENSIONS + case EOpConstructFloat16: + promoteTo = EbtFloat16; + break; +#endif case EOpConstructInt: promoteTo = EbtInt; break; @@ -512,6 +559,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: + case EOpLogicalNot: + case EOpLogicalAnd: + case EOpLogicalOr: + case EOpLogicalXor: case EOpFunctionCall: case EOpReturn: @@ -530,7 +581,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt 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; @@ -585,6 +636,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtUint: newOp = EOpConvUintToDouble; break; case EbtBool: newOp = EOpConvBoolToDouble; break; case EbtFloat: newOp = EOpConvFloatToDouble; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToDouble; break; +#endif case EbtInt64: newOp = EOpConvInt64ToDouble; break; case EbtUint64: newOp = EOpConvUint64ToDouble; break; default: @@ -597,18 +651,39 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtUint: newOp = EOpConvUintToFloat; break; case EbtBool: newOp = EOpConvBoolToFloat; break; case EbtDouble: newOp = EOpConvDoubleToFloat; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToFloat; break; +#endif case EbtInt64: newOp = EOpConvInt64ToFloat; break; case EbtUint64: newOp = EOpConvUint64ToFloat; break; default: return 0; } break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: + switch (node->getBasicType()) { + case EbtInt: newOp = EOpConvIntToFloat16; break; + case EbtUint: newOp = EOpConvUintToFloat16; break; + case EbtBool: newOp = EOpConvBoolToFloat16; break; + case EbtFloat: newOp = EOpConvFloatToFloat16; break; + case EbtDouble: newOp = EOpConvDoubleToFloat16; break; + case EbtInt64: newOp = EOpConvInt64ToFloat16; break; + case EbtUint64: newOp = EOpConvUint64ToFloat16; break; + default: + return 0; + } + break; +#endif case EbtBool: switch (node->getBasicType()) { case EbtInt: newOp = EOpConvIntToBool; break; case EbtUint: newOp = EOpConvUintToBool; break; case EbtFloat: newOp = EOpConvFloatToBool; break; case EbtDouble: newOp = EOpConvDoubleToBool; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToBool; break; +#endif case EbtInt64: newOp = EOpConvInt64ToBool; break; case EbtUint64: newOp = EOpConvUint64ToBool; break; default: @@ -621,6 +696,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtBool: newOp = EOpConvBoolToInt; break; case EbtFloat: newOp = EOpConvFloatToInt; break; case EbtDouble: newOp = EOpConvDoubleToInt; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToInt; break; +#endif case EbtInt64: newOp = EOpConvInt64ToInt; break; case EbtUint64: newOp = EOpConvUint64ToInt; break; default: @@ -633,6 +711,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtBool: newOp = EOpConvBoolToUint; break; case EbtFloat: newOp = EOpConvFloatToUint; break; case EbtDouble: newOp = EOpConvDoubleToUint; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToUint; break; +#endif case EbtInt64: newOp = EOpConvInt64ToUint; break; case EbtUint64: newOp = EOpConvUint64ToUint; break; default: @@ -646,6 +727,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtBool: newOp = EOpConvBoolToInt64; break; case EbtFloat: newOp = EOpConvFloatToInt64; break; case EbtDouble: newOp = EOpConvDoubleToInt64; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToInt64; break; +#endif case EbtUint64: newOp = EOpConvUint64ToInt64; break; default: return 0; @@ -658,6 +742,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EbtBool: newOp = EOpConvBoolToUint64; break; case EbtFloat: newOp = EOpConvFloatToUint64; break; case EbtDouble: newOp = EOpConvDoubleToUint64; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: newOp = EOpConvFloat16ToUint64; break; +#endif case EbtInt64: newOp = EOpConvInt64ToUint64; break; default: return 0; @@ -668,9 +755,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt } TType newType(promoteTo, EvqTemporary, node->getVectorSize(), node->getMatrixCols(), node->getMatrixRows()); - newNode = new TIntermUnary(newOp, newType); - newNode->setLoc(node->getLoc()); - newNode->setOperand(node); + newNode = addUnaryNode(newOp, node, node->getLoc(), newType); // TODO: it seems that some unary folding operations should occur here, but are not @@ -681,15 +766,100 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt return newNode; } +// Convert the node's shape of type for the given type, as allowed by the +// operation involved: 'op'. +// +// Generally, the AST represents allowed GLSL shapes, so this isn't needed +// for GLSL. Bad shapes are caught in conversion or promotion. +// +// Return 'node' if no conversion was done. Promotion handles final shape +// checking. +// +TIntermTyped* TIntermediate::addShapeConversion(TOperator op, const TType& type, TIntermTyped* node) +{ + // some source languages don't do this + switch (source) { + case EShSourceHlsl: + break; + case EShSourceGlsl: + default: + return node; + } + + // some operations don't do this + switch (op) { + case EOpAssign: + case EOpLessThan: + case EOpGreaterThan: + case EOpLessThanEqual: + case EOpGreaterThanEqual: + case EOpEqual: + case EOpNotEqual: + case EOpFunctionCall: + case EOpReturn: + break; + default: + return node; + } + + // structures and arrays don't change shape, either to or from + if (node->getType().isStruct() || node->getType().isArray() || + type.isStruct() || type.isArray()) + return node; + + // The new node that handles the conversion + TOperator constructorOp = mapTypeToConstructorOp(type); + + // 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; +} + // // 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 + case EOpLogicalNot: + case EOpLogicalAnd: + case EOpLogicalOr: + case EOpLogicalXor: + return true; + default: + break; + } + } + } + switch (to) { case EbtDouble: switch (from) { @@ -699,6 +869,9 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to) const case EbtUint64: case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif return true; default: return false; @@ -708,7 +881,12 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to) const case EbtInt: case EbtUint: case EbtFloat: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif return true; + case EbtBool: + return (source == EShSourceHlsl); default: return false; } @@ -751,6 +929,191 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to) const } } +// +// Given a type, find what operation would fully construct it. +// +TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const +{ + TOperator op = EOpNull; + + switch (type.getBasicType()) { + case EbtStruct: + op = EOpConstructStruct; + break; + case EbtSampler: + if (type.getSampler().combined) + op = EOpConstructTextureSampler; + break; + case EbtFloat: + if (type.isMatrix()) { + switch (type.getMatrixCols()) { + case 2: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructMat2x2; break; + case 3: op = EOpConstructMat2x3; break; + case 4: op = EOpConstructMat2x4; break; + default: break; // some compilers want this + } + break; + case 3: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructMat3x2; break; + case 3: op = EOpConstructMat3x3; break; + case 4: op = EOpConstructMat3x4; break; + default: break; // some compilers want this + } + break; + case 4: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructMat4x2; break; + case 3: op = EOpConstructMat4x3; break; + case 4: op = EOpConstructMat4x4; break; + default: break; // some compilers want this + } + break; + default: break; // some compilers want this + } + } else { + switch(type.getVectorSize()) { + case 1: op = EOpConstructFloat; break; + case 2: op = EOpConstructVec2; break; + case 3: op = EOpConstructVec3; break; + case 4: op = EOpConstructVec4; break; + default: break; // some compilers want this + } + } + break; + case EbtDouble: + if (type.getMatrixCols()) { + switch (type.getMatrixCols()) { + case 2: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructDMat2x2; break; + case 3: op = EOpConstructDMat2x3; break; + case 4: op = EOpConstructDMat2x4; break; + default: break; // some compilers want this + } + break; + case 3: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructDMat3x2; break; + case 3: op = EOpConstructDMat3x3; break; + case 4: op = EOpConstructDMat3x4; break; + default: break; // some compilers want this + } + break; + case 4: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructDMat4x2; break; + case 3: op = EOpConstructDMat4x3; break; + case 4: op = EOpConstructDMat4x4; break; + default: break; // some compilers want this + } + break; + } + } else { + switch(type.getVectorSize()) { + case 1: op = EOpConstructDouble; break; + case 2: op = EOpConstructDVec2; break; + case 3: op = EOpConstructDVec3; break; + case 4: op = EOpConstructDVec4; break; + default: break; // some compilers want this + } + } + break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: + if (type.getMatrixCols()) { + switch (type.getMatrixCols()) { + case 2: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructF16Mat2x2; break; + case 3: op = EOpConstructF16Mat2x3; break; + case 4: op = EOpConstructF16Mat2x4; break; + default: break; // some compilers want this + } + break; + case 3: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructF16Mat3x2; break; + case 3: op = EOpConstructF16Mat3x3; break; + case 4: op = EOpConstructF16Mat3x4; break; + default: break; // some compilers want this + } + break; + case 4: + switch (type.getMatrixRows()) { + case 2: op = EOpConstructF16Mat4x2; break; + case 3: op = EOpConstructF16Mat4x3; break; + case 4: op = EOpConstructF16Mat4x4; break; + default: break; // some compilers want this + } + break; + } + } + else { + switch (type.getVectorSize()) { + case 1: op = EOpConstructFloat16; break; + case 2: op = EOpConstructF16Vec2; break; + case 3: op = EOpConstructF16Vec3; break; + case 4: op = EOpConstructF16Vec4; break; + default: break; // some compilers want this + } + } + break; +#endif + case EbtInt: + switch(type.getVectorSize()) { + case 1: op = EOpConstructInt; break; + case 2: op = EOpConstructIVec2; break; + case 3: op = EOpConstructIVec3; break; + case 4: op = EOpConstructIVec4; break; + default: break; // some compilers want this + } + break; + case EbtUint: + switch(type.getVectorSize()) { + case 1: op = EOpConstructUint; break; + case 2: op = EOpConstructUVec2; break; + case 3: op = EOpConstructUVec3; break; + case 4: op = EOpConstructUVec4; break; + default: break; // some compilers want this + } + break; + case EbtInt64: + switch(type.getVectorSize()) { + case 1: op = EOpConstructInt64; break; + case 2: op = EOpConstructI64Vec2; break; + case 3: op = EOpConstructI64Vec3; break; + case 4: op = EOpConstructI64Vec4; break; + default: break; // some compilers want this + } + break; + case EbtUint64: + switch(type.getVectorSize()) { + case 1: op = EOpConstructUint64; break; + case 2: op = EOpConstructU64Vec2; break; + case 3: op = EOpConstructU64Vec3; break; + case 4: op = EOpConstructU64Vec4; break; + default: break; // some compilers want this + } + break; + case EbtBool: + switch(type.getVectorSize()) { + case 1: op = EOpConstructBool; break; + case 2: op = EOpConstructBVec2; break; + case 3: op = EOpConstructBVec3; break; + case 4: op = EOpConstructBVec4; break; + default: break; // some compilers want this + } + break; + default: + break; + } + + return op; +} + // // Safe way to combine two nodes into an aggregate. Works with null pointers, // a node that's not a aggregate yet, etc. @@ -972,7 +1335,11 @@ TIntermConstantUnion* TIntermediate::addConstantUnion(bool b, const TSourceLoc& TIntermConstantUnion* TIntermediate::addConstantUnion(double d, TBasicType baseType, const TSourceLoc& loc, bool literal) const { +#ifdef AMD_EXTENSIONS + assert(baseType == EbtFloat || baseType == EbtDouble || baseType == EbtFloat16); +#else assert(baseType == EbtFloat || baseType == EbtDouble); +#endif TConstUnionArray unionArray(1); unionArray[0].setDConst(d); @@ -1225,6 +1592,14 @@ bool TIntermediate::isSpecializationOperation(const TIntermOperator& node) const case EOpIndexIndirect: case EOpIndexDirectStruct: case EOpVectorSwizzle: + case EOpConvFloatToDouble: + case EOpConvDoubleToFloat: +#ifdef AMD_EXTENSIONS + case EOpConvFloat16ToFloat: + case EOpConvFloatToFloat16: + case EOpConvFloat16ToDouble: + case EOpConvDoubleToFloat16: +#endif return true; default: return false; @@ -1255,6 +1630,20 @@ bool TIntermediate::isSpecializationOperation(const TIntermOperator& node) const 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: @@ -1336,18 +1725,46 @@ bool TIntermOperator::isConstructor() const } // -// Make sure the type of a unary operator is appropriate for its -// combination of operation and operand type. +// Make sure the type of an operator is appropriate for its +// combination of operation and operand type. This will invoke +// promoteUnary, promoteBinary, etc as needed. // -// Returns false in nothing makes sense. +// Returns false if nothing makes sense. // -bool TIntermUnary::promote() +bool TIntermediate::promote(TIntermOperator* node) { + if (node == nullptr) + return false; + + if (node->getAsUnaryNode()) + return promoteUnary(*node->getAsUnaryNode()); + + if (node->getAsBinaryNode()) + return promoteBinary(*node->getAsBinaryNode()); + + return false; +} + +// +// See TIntermediate::promote +// +bool TIntermediate::promoteUnary(TIntermUnary& node) +{ + const TOperator op = node.getOp(); + TIntermTyped* operand = node.getOperand(); + switch (op) { case EOpLogicalNot: - if (operand->getBasicType() != EbtBool) + // Convert operand to a boolean type + if (operand->getBasicType() != EbtBool) { + // Add constructor to boolean type. If that fails, we can't do it, so return false. + TIntermTyped* converted = convertToBasicType(op, EbtBool, operand); + if (converted == nullptr) + return false; - return false; + // Use the result of converting the node to a bool. + node.setOperand(operand = converted); // also updates stack variable + } break; case EOpBitwiseNot: if (operand->getBasicType() != EbtInt && @@ -1367,6 +1784,9 @@ bool TIntermUnary::promote() operand->getBasicType() != EbtInt64 && operand->getBasicType() != EbtUint64 && operand->getBasicType() != EbtFloat && +#ifdef AMD_EXTENSIONS + operand->getBasicType() != EbtFloat16 && +#endif operand->getBasicType() != EbtDouble) return false; @@ -1378,28 +1798,51 @@ bool TIntermUnary::promote() return false; } - setType(operand->getType()); - getWritableType().getQualifier().makeTemporary(); + node.setType(operand->getType()); + node.getWritableType().getQualifier().makeTemporary(); return true; } void TIntermUnary::updatePrecision() { +#ifdef AMD_EXTENSIONS + if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { +#else if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat) { +#endif if (operand->getQualifier().precision > getQualifier().precision) getQualifier().precision = operand->getQualifier().precision; } } -// -// Establishes the type of the resultant operation, as well as -// makes the operator the correct one for the operands. -// -// Returns false if operator can't work on operands. -// -bool TIntermBinary::promote() +// If it is not already, convert this node to the given basic type. +TIntermTyped* TIntermediate::convertToBasicType(TOperator op, TBasicType basicType, TIntermTyped* node) const { + if (node == nullptr) + return nullptr; + + // It's already this basic type: nothing needs to be done, so use the node directly. + if (node->getBasicType() == basicType) + return node; + + const TType& type = node->getType(); + const TType newType(basicType, type.getQualifier().storage, + type.getVectorSize(), type.getMatrixCols(), type.getMatrixRows(), type.isVector()); + + // Add constructor to the right vectorness of the right type. If that fails, we can't do it, so return nullptr. + return addConversion(op, newType, node); +} + +// +// See TIntermediate::promote +// +bool TIntermediate::promoteBinary(TIntermBinary& node) +{ + TOperator op = node.getOp(); + TIntermTyped* left = node.getLeft(); + TIntermTyped* right = node.getRight(); + // Arrays and structures have to be exact matches. if ((left->isArray() || right->isArray() || left->getBasicType() == EbtStruct || right->getBasicType() == EbtStruct) && left->getType() != right->getType()) @@ -1407,8 +1850,8 @@ bool TIntermBinary::promote() // Base assumption: just make the type the same as the left // operand. Only deviations from this will be coded. - setType(left->getType()); - type.getQualifier().clear(); + node.setType(left->getType()); + node.getWritableType().getQualifier().clear(); // Composite and opaque types don't having pending operator changes, e.g., // array, structure, and samplers. Just establish final type and correctness. @@ -1421,7 +1864,7 @@ bool TIntermBinary::promote() return false; } else { // Promote to conditional - setType(TType(EbtBool)); + node.setType(TType(EbtBool)); } return true; @@ -1446,26 +1889,35 @@ bool TIntermBinary::promote() 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 + node.setType(TType(EbtBool)); + break; case EOpEqual: case EOpNotEqual: // All the above comparisons result in a bool (but not the vector compares) - setType(TType(EbtBool)); + node.setType(TType(EbtBool)); break; case EOpLogicalAnd: case EOpLogicalOr: case EOpLogicalXor: + if (getSource() == EShSourceHlsl) { + TIntermTyped* convertedL = convertToBasicType(op, EbtBool, left); + TIntermTyped* convertedR = convertToBasicType(op, EbtBool, right); + if (convertedL == nullptr || convertedR == nullptr) + return false; + node.setLeft(left = convertedL); // also updates stack variable + node.setRight(right = convertedR); // also updates stack variable + } + // logical ops operate only on scalar Booleans and will promote to scalar Boolean. if (left->getBasicType() != EbtBool || left->isVector() || left->isMatrix()) return false; - setType(TType(EbtBool)); + node.setType(TType(EbtBool)); break; case EOpRightShift: @@ -1482,6 +1934,9 @@ bool TIntermBinary::promote() case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: + if (getSource() == EShSourceHlsl) + break; + // Check for integer-only operands. if ((left->getBasicType() != EbtInt && left->getBasicType() != EbtUint && left->getBasicType() != EbtInt64 && left->getBasicType() != EbtUint64) || @@ -1578,33 +2033,33 @@ bool TIntermBinary::promote() if (left->isVector()) { if (left->getVectorSize() != right->getMatrixRows()) return false; - op = EOpVectorTimesMatrix; - setType(TType(basicType, EvqTemporary, right->getMatrixCols())); + node.setOp(op = EOpVectorTimesMatrix); + node.setType(TType(basicType, EvqTemporary, right->getMatrixCols())); } else { - op = EOpMatrixTimesScalar; - setType(TType(basicType, EvqTemporary, 0, right->getMatrixCols(), right->getMatrixRows())); + node.setOp(op = EOpMatrixTimesScalar); + node.setType(TType(basicType, EvqTemporary, 0, right->getMatrixCols(), right->getMatrixRows())); } } else if (left->isMatrix() && !right->isMatrix()) { if (right->isVector()) { if (left->getMatrixCols() != right->getVectorSize()) return false; - op = EOpMatrixTimesVector; - setType(TType(basicType, EvqTemporary, left->getMatrixRows())); + node.setOp(op = EOpMatrixTimesVector); + node.setType(TType(basicType, EvqTemporary, left->getMatrixRows())); } else { - op = EOpMatrixTimesScalar; + node.setOp(op = EOpMatrixTimesScalar); } } else if (left->isMatrix() && right->isMatrix()) { if (left->getMatrixCols() != right->getMatrixRows()) return false; - op = EOpMatrixTimesMatrix; - setType(TType(basicType, EvqTemporary, 0, right->getMatrixCols(), left->getMatrixRows())); + node.setOp(op = EOpMatrixTimesMatrix); + node.setType(TType(basicType, EvqTemporary, 0, right->getMatrixCols(), left->getMatrixRows())); } else if (! left->isMatrix() && ! right->isMatrix()) { if (left->isVector() && right->isVector()) { ; // leave as component product } else if (left->isVector() || right->isVector()) { - op = EOpVectorTimesScalar; + node.setOp(op = EOpVectorTimesScalar); if (right->isVector()) - setType(TType(basicType, EvqTemporary, right->getVectorSize())); + node.setType(TType(basicType, EvqTemporary, right->getVectorSize())); } } else { return false; @@ -1615,7 +2070,7 @@ bool TIntermBinary::promote() if (left->isVector()) { if (left->getVectorSize() != right->getMatrixRows() || left->getVectorSize() != right->getMatrixCols()) return false; - op = EOpVectorTimesMatrixAssign; + node.setOp(op = EOpVectorTimesMatrixAssign); } else { return false; } @@ -1623,19 +2078,19 @@ bool TIntermBinary::promote() if (right->isVector()) { return false; } else { - op = EOpMatrixTimesScalarAssign; + node.setOp(op = EOpMatrixTimesScalarAssign); } } else if (left->isMatrix() && right->isMatrix()) { if (left->getMatrixCols() != left->getMatrixRows() || left->getMatrixCols() != right->getMatrixCols() || left->getMatrixCols() != right->getMatrixRows()) return false; - op = EOpMatrixTimesMatrixAssign; + node.setOp(op = EOpMatrixTimesMatrixAssign); } else if (!left->isMatrix() && !right->isMatrix()) { if (left->isVector() && right->isVector()) { // leave as component product } else if (left->isVector() || right->isVector()) { if (! left->isVector()) return false; - op = EOpVectorTimesScalarAssign; + node.setOp(op = EOpVectorTimesScalarAssign); } } else { return false; @@ -1669,6 +2124,7 @@ bool TIntermBinary::promote() case EOpAndAssign: case EOpInclusiveOrAssign: case EOpExclusiveOrAssign: + if ((left->isMatrix() && right->isVector()) || (left->isVector() && right->isMatrix()) || left->getBasicType() != right->getBasicType()) @@ -1678,8 +2134,8 @@ bool TIntermBinary::promote() if (left->isVector() && right->isVector() && left->getVectorSize() != right->getVectorSize()) return false; if (right->isVector() || right->isMatrix()) { - type.shallowCopy(right->getType()); - type.getQualifier().makeTemporary(); + node.getWritableType().shallowCopy(right->getType()); + node.getWritableType().getQualifier().makeTemporary(); } break; @@ -1703,7 +2159,7 @@ bool TIntermBinary::promote() case EOpExclusiveOrAssign: case EOpLeftShiftAssign: case EOpRightShiftAssign: - if (getType() != left->getType()) + if (node.getType() != left->getType()) return false; break; default: @@ -1715,7 +2171,11 @@ bool TIntermBinary::promote() void TIntermBinary::updatePrecision() { +#ifdef AMD_EXTENSIONS + if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { +#else if (getBasicType() == EbtInt || getBasicType() == EbtUint || getBasicType() == EbtFloat) { +#endif getQualifier().precision = std::max(right->getQualifier().precision, left->getQualifier().precision); if (getQualifier().precision != EpqNone) { left->propagatePrecision(getQualifier().precision); @@ -1726,7 +2186,11 @@ void TIntermBinary::updatePrecision() void TIntermTyped::propagatePrecision(TPrecisionQualifier newPrecision) { +#ifdef AMD_EXTENSIONS + if (getQualifier().precision != EpqNone || (getBasicType() != EbtInt && getBasicType() != EbtUint && getBasicType() != EbtFloat && getBasicType() != EbtFloat16)) +#else if (getQualifier().precision != EpqNone || (getBasicType() != EbtInt && getBasicType() != EbtUint && getBasicType() != EbtFloat)) +#endif return; getQualifier().precision = newPrecision; @@ -1800,10 +2264,11 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getBConst())); break; case EbtFloat: - leftUnionArray[i] = rightUnionArray[i]; - break; case EbtDouble: - leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getDConst())); +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif + leftUnionArray[i] = rightUnionArray[i]; break; default: return node; @@ -1828,12 +2293,43 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i] = rightUnionArray[i]; break; default: return node; } break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: + switch (node->getType().getBasicType()) { + case EbtInt: + leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getIConst())); + break; + case EbtUint: + leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getUConst())); + break; + case EbtInt64: + leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getI64Const())); + break; + case EbtUint64: + leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getU64Const())); + break; + case EbtBool: + leftUnionArray[i].setDConst(static_cast(rightUnionArray[i].getBConst())); + break; + case EbtFloat: + case EbtDouble: + case EbtFloat16: + leftUnionArray[i] = rightUnionArray[i]; + break; + default: + return node; + } + break; +#endif case EbtInt: switch (node->getType().getBasicType()) { case EbtInt: @@ -1853,6 +2349,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i].setIConst(static_cast(rightUnionArray[i].getDConst())); break; default: @@ -1878,6 +2377,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i].setUConst(static_cast(rightUnionArray[i].getDConst())); break; default: @@ -1903,6 +2405,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i].setBConst(rightUnionArray[i].getDConst() != 0.0); break; default: @@ -1928,6 +2433,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i].setI64Const(static_cast(rightUnionArray[i].getDConst())); break; default: @@ -1953,6 +2461,9 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif leftUnionArray[i].setU64Const(static_cast(rightUnionArray[i].getDConst())); break; default: diff --git a/glslang/MachineIndependent/LiveTraverser.h b/glslang/MachineIndependent/LiveTraverser.h new file mode 100644 index 00000000..286efe6c --- /dev/null +++ b/glslang/MachineIndependent/LiveTraverser.h @@ -0,0 +1,136 @@ +// +//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 +#include + +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, + bool preVisit = true, bool inVisit = false, bool postVisit = false) : + TIntermTraverser(preVisit, inVisit, postVisit), + 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 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 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 00000000..5949cd8e --- /dev/null +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -0,0 +1,451 @@ +// +//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 + +#include "ParseHelper.h" + +extern int yyparse(glslang::TParseContext*); + +namespace glslang { + +// +// Used to output syntax, parsing, and semantic errors. +// + +void TParseContextBase::outputMessage(const TSourceLoc& loc, const char* szReason, + const char* szToken, + const char* szExtraInfoFormat, + TPrefixType prefix, va_list args) +{ + const int maxSize = MaxTokenLength + 200; + char szExtraInfo[maxSize]; + + safe_vsprintf(szExtraInfo, maxSize, szExtraInfoFormat, args); + + infoSink.info.prefix(prefix); + infoSink.info.location(loc); + infoSink.info << "'" << szToken << "' : " << szReason << " " << szExtraInfo << "\n"; + + if (prefix == EPrefixError) { + ++numErrors; + } +} + +void C_DECL TParseContextBase::error(const TSourceLoc& loc, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) +{ + if (messages & EShMsgOnlyPreprocessor) + return; + va_list args; + va_start(args, szExtraInfoFormat); + outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); + va_end(args); + + if ((messages & EShMsgCascadingErrors) == 0) + currentScanner->setEndOfInput(); +} + +void C_DECL TParseContextBase::warn(const TSourceLoc& loc, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) +{ + if (suppressWarnings()) + return; + va_list args; + va_start(args, szExtraInfoFormat); + outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); + va_end(args); +} + +void C_DECL TParseContextBase::ppError(const TSourceLoc& loc, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) +{ + va_list args; + va_start(args, szExtraInfoFormat); + outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); + va_end(args); + + if ((messages & EShMsgCascadingErrors) == 0) + currentScanner->setEndOfInput(); +} + +void C_DECL TParseContextBase::ppWarn(const TSourceLoc& loc, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...) +{ + va_list args; + va_start(args, szExtraInfoFormat); + outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); + va_end(args); +} + +// +// Both test and if necessary, spit out an error, to see if the node is really +// an l-value that can be operated on this way. +// +// Returns true if there was an error. +// +bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) +{ + TIntermBinary* binaryNode = node->getAsBinaryNode(); + + if (binaryNode) { + switch(binaryNode->getOp()) { + case EOpIndexDirect: + case EOpIndexIndirect: // fall through + case EOpIndexDirectStruct: // fall through + case EOpVectorSwizzle: + return lValueErrorCheck(loc, op, binaryNode->getLeft()); + default: + break; + } + error(loc, " l-value required", op, "", ""); + + return true; + } + + const char* symbol = nullptr; + TIntermSymbol* symNode = node->getAsSymbolNode(); + if (symNode != nullptr) + symbol = symNode->getName().c_str(); + + const char* message = nullptr; + switch (node->getQualifier().storage) { + case EvqConst: message = "can't modify a const"; break; + case EvqConstReadOnly: message = "can't modify a const"; break; + case EvqUniform: message = "can't modify a uniform"; break; + case EvqBuffer: + if (node->getQualifier().readonly) + message = "can't modify a readonly buffer"; + break; + + default: + // + // Type that can't be written to? + // + switch (node->getBasicType()) { + case EbtSampler: + message = "can't modify a sampler"; + break; + case EbtAtomicUint: + message = "can't modify an atomic_uint"; + break; + case EbtVoid: + message = "can't modify void"; + break; + default: + break; + } + } + + if (message == nullptr && binaryNode == nullptr && symNode == nullptr) { + error(loc, " l-value required", op, "", ""); + + return true; + } + + // + // Everything else is okay, no error. + // + if (message == nullptr) + return false; + + // + // If we get here, we have an error and a message. + // + if (symNode) + error(loc, " l-value required", op, "\"%s\" (%s)", symbol, message); + else + error(loc, " l-value required", op, "(%s)", message); + + return true; +} + +// Test for and give an error if the node can't be read from. +void TParseContextBase::rValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) +{ + if (! node) + return; + + TIntermBinary* binaryNode = node->getAsBinaryNode(); + if (binaryNode) { + switch(binaryNode->getOp()) { + case EOpIndexDirect: + case EOpIndexIndirect: + case EOpIndexDirectStruct: + case EOpVectorSwizzle: + rValueErrorCheck(loc, op, binaryNode->getLeft()); + default: + break; + } + + return; + } + + TIntermSymbol* symNode = node->getAsSymbolNode(); + if (symNode && symNode->getQualifier().writeonly) + error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); +} + +// Make a shared symbol have a non-shared version that can be edited by the current +// compile, such that editing its type will not change the shared version and will +// effect all nodes sharing it. +void TParseContextBase::makeEditable(TSymbol*& symbol) +{ + // copyUp() does a deep copy of the type. + symbol = symbolTable.copyUp(symbol); + + // Save it in the AST for linker use. + intermediate.addSymbolLinkageNode(linkage, *symbol); +} + +// Return a writable version of the variable 'name'. +// +// Return nullptr if 'name' is not found. This should mean +// something is seriously wrong (e.g., compiler asking self for +// built-in that doesn't exist). +TVariable* TParseContextBase::getEditableVariable(const char* name) +{ + bool builtIn; + TSymbol* symbol = symbolTable.find(name, &builtIn); + + assert(symbol != nullptr); + if (symbol == nullptr) + return nullptr; + + if (builtIn) + makeEditable(symbol); + + return symbol->getAsVariable(); +} + +// 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 candidateList, + const TFunction& call, + std::function convertible, + std::function 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 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) -> bool { + // 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; +} + +// +// Make the passed-in variable information become a member of the +// global uniform block. If this doesn't exist yet, make it. +// +void TParseContextBase::growGlobalUniformBlock(TSourceLoc& loc, TType& memberType, TString& memberName) +{ + // make the global block, if not yet made + if (globalUniformBlock == nullptr) { + TString& blockName = *NewPoolTString(getGlobalUniformBlockName()); + TQualifier blockQualifier; + blockQualifier.clear(); + blockQualifier.storage = EvqUniform; + TType blockType(new TTypeList, blockName, blockQualifier); + TString* instanceName = NewPoolTString(""); + globalUniformBlock = new TVariable(instanceName, blockType, true); + firstNewMember = 0; + } + + // add the requested member as a member to the block + TType* type = new TType; + type->shallowCopy(memberType); + type->setFieldName(memberName); + TTypeLoc typeLoc = {type, loc}; + globalUniformBlock->getType().getWritableStruct()->push_back(typeLoc); +} + +// +// Insert into the symbol table the global uniform block created in +// growGlobalUniformBlock(). The variables added as members won't be +// found unless this is done. +// +bool TParseContextBase::insertGlobalUniformBlock() +{ + if (globalUniformBlock == nullptr) + return true; + + int numMembers = (int)globalUniformBlock->getType().getStruct()->size(); + bool inserted = false; + if (firstNewMember == 0) { + // This is the first request; we need a normal symbol table insert + inserted = symbolTable.insert(*globalUniformBlock); + if (inserted) + intermediate.addSymbolLinkageNode(linkage, *globalUniformBlock); + } else if (firstNewMember <= numMembers) { + // This is a follow-on request; we need to amend the first insert + inserted = symbolTable.amend(*globalUniformBlock, firstNewMember); + } + + if (inserted) { + finalizeGlobalUniformBlockLayout(*globalUniformBlock); + firstNewMember = numMembers; + } + + return inserted; +} + +} // end namespace glslang diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index bd4b3c95..71ee4f38 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -39,7 +39,6 @@ #include "Scan.h" #include "../OSDependent/osinclude.h" -#include #include #include "preprocessor/PpContext.h" @@ -55,53 +54,20 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b 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 +97,60 @@ TParseContext::~TParseContext() 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 +191,15 @@ bool TParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner& inp } // 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& tokens) @@ -253,7 +275,7 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& // 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; @@ -339,81 +361,6 @@ bool TParseContext::parseVectorFields(const TSourceLoc& loc, const TString& comp return true; } -/////////////////////////////////////////////////////////////////////// -// -// Errors -// -//////////////////////////////////////////////////////////////////////// - -// -// Used to output syntax, parsing, and semantic errors. -// - -void TParseContext::outputMessage(const TSourceLoc& loc, const char* szReason, - const char* szToken, - const char* szExtraInfoFormat, - TPrefixType prefix, va_list args) -{ - const int maxSize = MaxTokenLength + 200; - char szExtraInfo[maxSize]; - - safe_vsprintf(szExtraInfo, maxSize, szExtraInfoFormat, args); - - infoSink.info.prefix(prefix); - infoSink.info.location(loc); - infoSink.info << "'" << szToken << "' : " << szReason << " " << szExtraInfo << "\n"; - - if (prefix == EPrefixError) { - ++numErrors; - } -} - -void C_DECL TParseContext::error(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - if (messages & EShMsgOnlyPreprocessor) - return; - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); - va_end(args); - - if ((messages & EShMsgCascadingErrors) == 0) - currentScanner->setEndOfInput(); -} - -void C_DECL TParseContext::warn(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - if (suppressWarnings()) - return; - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); - va_end(args); -} - -void C_DECL TParseContext::ppError(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); - va_end(args); - - if ((messages & EShMsgCascadingErrors) == 0) - currentScanner->setEndOfInput(); -} - -void C_DECL TParseContext::ppWarn(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); - va_end(args); -} - // // Handle seeing a variable identifier in the grammar. // @@ -434,7 +381,9 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb // If this is a variable or a block, check it and all it contains, but if this // is a member of an anonymous block, check the whole block, as the whole block // will need to be copied up if it contains an implicitly-sized array. - if (symbol->getType().containsImplicitlySizedArray() || (symbol->getAsAnonMember() && symbol->getAsAnonMember()->getAnonContainer().getType().containsImplicitlySizedArray())) + if (symbol->getType().containsImplicitlySizedArray() || + (symbol->getAsAnonMember() && + symbol->getAsAnonMember()->getAnonContainer().getType().containsImplicitlySizedArray())) makeEditable(symbol); } @@ -535,7 +484,7 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn // input/output blocks either don't exist or can be variable indexed } } else if (language == EShLangFragment && base->getQualifier().isPipeOutput()) - requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader ouput array"); + requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader output array"); else if (base->getBasicType() == EbtSampler && version >= 130) { const char* explanation = "variable indexing sampler array"; requireProfile(base->getLoc(), EEsProfile | ECoreProfile | ECompatibilityProfile, explanation); @@ -617,35 +566,11 @@ void TParseContext::handleIndexLimits(const TSourceLoc& /*loc*/, TIntermTyped* b // effect all nodes sharing it. void TParseContext::makeEditable(TSymbol*& symbol) { - // copyUp() does a deep copy of the type. - symbol = symbolTable.copyUp(symbol); + TParseContextBase::makeEditable(symbol); - // Also, see if it's tied to IO resizing + // See if it's tied to IO resizing if (isIoResizeArray(symbol->getType())) ioArraySymbolResizeList.push_back(symbol); - - // Also, save it in the AST for linker use. - intermediate.addSymbolLinkageNode(linkage, *symbol); -} - -// Return a writable version of the variable 'name'. -// -// Return nullptr if 'name' is not found. This should mean -// something is seriously wrong (e.g., compiler asking self for -// built-in that doesn't exist). -TVariable* TParseContext::getEditableVariable(const char* name) -{ - bool builtIn; - TSymbol* symbol = symbolTable.find(name, &builtIn); - - assert(symbol != nullptr); - if (symbol == nullptr) - return nullptr; - - if (builtIn) - makeEditable(symbol); - - return symbol->getAsVariable(); } // Return true if this is a geometry shader input array or tessellation control output array. @@ -761,13 +686,32 @@ void TParseContext::checkIoArrayConsistency(const TSourceLoc& loc, int requiredS } // 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; @@ -850,7 +794,7 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm // Swizzle operations propagate specialization-constantness if (base->getQualifier().isSpecConstant()) type.getQualifier().makeSpecConstant(); - return addConstructor(loc, base, type, mapTypeToConstructorOp(type)); + return addConstructor(loc, base, type); } } @@ -865,7 +809,7 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm 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 +938,7 @@ TIntermAggregate* TParseContext::handleFunctionDefinition(const TSourceLoc& loc, 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,19 +953,24 @@ TIntermAggregate* TParseContext::handleFunctionDefinition(const TSourceLoc& loc, 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 // @@ -1078,21 +1027,20 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction { TIntermTyped* result = nullptr; - TOperator op = function->getBuiltInOp(); - if (op == EOpArrayLength) + if (function->getBuiltInOp() == EOpArrayLength) result = handleLengthMethod(loc, function, arguments); - else if (op != EOpNull) { + else if (function->getBuiltInOp() != EOpNull) { // // Then this should be a constructor. // Don't go through the symbol table for constructors. // Their parameters will be verified algorithmically. // TType type(EbtVoid); // use this to get the type back - if (! constructorError(loc, arguments, *function, op, type)) { + if (! constructorError(loc, arguments, *function, function->getBuiltInOp(), type)) { // // It's a constructor, of type 'type'. // - result = addConstructor(loc, arguments, type, op); + result = addConstructor(loc, arguments, type); if (result == nullptr) error(loc, "cannot construct with these arguments", type.getCompleteString().c_str(), ""); } @@ -1122,7 +1070,7 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction // means take 'arguments' itself as the one argument. TIntermNode* arg = fnCandidate->getParamCount() == 1 ? arguments : (aggregate ? aggregate->getSequence()[i] : arguments); TQualifier& formalQualifier = (*fnCandidate)[i].type->getQualifier(); - if (formalQualifier.storage == EvqOut || formalQualifier.storage == EvqInOut) { + if (formalQualifier.isParamOutput()) { if (lValueErrorCheck(arguments->getLoc(), "assign", arg->getAsTyped())) error(arguments->getLoc(), "Non-L-value cannot be passed for 'out' or 'inout' parameters.", "out", ""); } @@ -1149,18 +1097,9 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction addInputArgumentConversions(*fnCandidate, arguments); // arguments may be modified if it's just a single argument node } - op = fnCandidate->getBuiltInOp(); - if (builtIn && op != EOpNull) { + if (builtIn && fnCandidate->getBuiltInOp() != EOpNull) { // A function call mapped to a built-in operation. - checkLocation(loc, op); - result = intermediate.addBuiltInFunctionCall(loc, op, fnCandidate->getParamCount() == 1, arguments, fnCandidate->getType()); - if (result == nullptr) { - error(arguments->getLoc(), " wrong operand type", "Internal Error", - "built in unary operator function. Type: %s", - static_cast(arguments)->getCompleteString().c_str()); - } else if (result->getAsOperator()) { - builtInOpCheck(loc, *fnCandidate, *result->getAsOperator()); - } + result = handleBuiltInFunctionCall(loc, *arguments, *fnCandidate); } else { // This is a function call not mapped to built-in operator. // It could still be a built-in function, but only if PureOperatorBuiltins == false. @@ -1181,6 +1120,8 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction if (builtIn) nonOpBuiltInCheck(loc, *fnCandidate, *call); + else + userFunctionCallCheck(loc, *call); } // Convert 'out' arguments. If it was a constant folded built-in, it won't be an aggregate anymore. @@ -1205,6 +1146,117 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction return result; } +TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNode& arguments, + const TFunction& function) +{ + checkLocation(loc, function.getBuiltInOp()); + TIntermTyped *result = intermediate.addBuiltInFunctionCall(loc, function.getBuiltInOp(), + function.getParamCount() == 1, + &arguments, function.getType()); + if (obeyPrecisionQualifiers()) + computeBuiltinPrecisions(*result, function); + + if (result == nullptr) { + error(arguments.getLoc(), " wrong operand type", "Internal Error", + "built in unary operator function. Type: %s", + static_cast(&arguments)->getCompleteString().c_str()); + } else if (result->getAsOperator()) + builtInOpCheck(loc, function, *result->getAsOperator()); + + return result; +} + +// "The operation of a built-in function can have a different precision +// qualification than the precision qualification of the resulting value. +// These two precision qualifications are established as follows. +// +// The precision qualification of the operation of a built-in function is +// based on the precision qualification of its input arguments and formal +// parameters: When a formal parameter specifies a precision qualifier, +// that is used, otherwise, the precision qualification of the calling +// argument is used. The highest precision of these will be the precision +// qualification of the operation of the built-in function. Generally, +// this is applied across all arguments to a built-in function, with the +// exceptions being: +// - bitfieldExtract and bitfieldInsert ignore the 'offset' and 'bits' +// arguments. +// - interpolateAt* functions only look at the 'interpolant' argument. +// +// The precision qualification of the result of a built-in function is +// determined in one of the following ways: +// +// - For the texture sampling, image load, and image store functions, +// the precision of the return type matches the precision of the +// sampler type +// +// Otherwise: +// +// - For prototypes that do not specify a resulting precision qualifier, +// the precision will be the same as the precision of the operation. +// +// - For prototypes that do specify a resulting precision qualifier, +// the specified precision qualifier is the precision qualification of +// the result." +// +void TParseContext::computeBuiltinPrecisions(TIntermTyped& node, const TFunction& function) +{ + TPrecisionQualifier operationPrecision = EpqNone; + TPrecisionQualifier resultPrecision = EpqNone; + + TIntermOperator* opNode = node.getAsOperator(); + if (opNode == nullptr) + return; + + if (TIntermUnary* unaryNode = node.getAsUnaryNode()) { + operationPrecision = std::max(function[0].type->getQualifier().precision, + unaryNode->getOperand()->getType().getQualifier().precision); + if (function.getType().getBasicType() != EbtBool) + resultPrecision = function.getType().getQualifier().precision == EpqNone ? + operationPrecision : + function.getType().getQualifier().precision; + } else if (TIntermAggregate* agg = node.getAsAggregate()) { + TIntermSequence& sequence = agg->getSequence(); + int numArgs = (int)sequence.size(); + switch (agg->getOp()) { + case EOpBitfieldExtract: + numArgs = 1; + break; + case EOpBitfieldInsert: + numArgs = 2; + break; + case EOpInterpolateAtCentroid: + case EOpInterpolateAtOffset: + case EOpInterpolateAtSample: + numArgs = 1; + break; + default: + break; + } + // find the maximum precision from the arguments and parameters + for (unsigned int arg = 0; arg < sequence.size(); ++arg) { + operationPrecision = std::max(operationPrecision, sequence[arg]->getAsTyped()->getQualifier().precision); + operationPrecision = std::max(operationPrecision, function[arg].type->getQualifier().precision); + } + // compute the result precision + if (agg->isSampling() || agg->getOp() == EOpImageLoad || agg->getOp() == EOpImageStore) + resultPrecision = sequence[0]->getAsTyped()->getQualifier().precision; + else if (function.getType().getBasicType() != EbtBool) + resultPrecision = function.getType().getQualifier().precision == EpqNone ? + operationPrecision : + function.getType().getQualifier().precision; + } + + // Propagate precision through this node and its children. That algorithm stops + // when a precision is found, so start by clearing this subroot precision + opNode->getQualifier().precision = EpqNone; + if (operationPrecision != EpqNone) { + opNode->propagatePrecision(operationPrecision); + opNode->setOperationPrecision(operationPrecision); + } + // Now, set the result precision, which might not match + opNode->getQualifier().precision = resultPrecision; +} + TIntermNode* TParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value) { functionReturnsValue = true; @@ -1349,7 +1401,7 @@ TIntermTyped* TParseContext::addOutputArgumentConversions(const TFunction& funct // Will there be any output conversions? bool outputConversions = false; for (int i = 0; i < function.getParamCount(); ++i) { - if (*function[i].type != arguments[i]->getAsTyped()->getType() && function[i].type->getQualifier().storage == EvqOut) { + if (*function[i].type != arguments[i]->getAsTyped()->getType() && function[i].type->getQualifier().isParamOutput()) { outputConversions = true; break; } @@ -1431,11 +1483,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } const TIntermSequence& aggArgs = *argp; // only valid when unaryArg is nullptr - // built-in texturing functions get their return value precision from the precision of the sampler - if (fnCandidate.getType().getQualifier().precision == EpqNone && - fnCandidate.getParamCount() > 0 && fnCandidate[0].type->getBasicType() == EbtSampler) - callNode.getQualifier().precision = arg0->getQualifier().precision; - switch (callNode.getOp()) { case EOpTextureGather: case EOpTextureGatherOffset: @@ -1567,11 +1614,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan case EOpInterpolateAtCentroid: case EOpInterpolateAtSample: case EOpInterpolateAtOffset: - // "For the interpolateAt* functions, the call will return a precision - // qualification matching the precision of the 'interpolant' argument to - // the function call." - callNode.getQualifier().precision = arg0->getQualifier().precision; - // Make sure the first argument is an interpolant, or an array element of an interpolant if (arg0->getType().getQualifier().storage != EvqVaryingIn) { // It might still be an array element. @@ -1723,6 +1765,26 @@ void TParseContext::nonOpBuiltInCheck(const TSourceLoc& loc, const TFunction& fn } } +// +// Do any extra checking for a user function call. +// +void TParseContext::userFunctionCallCheck(const TSourceLoc& loc, TIntermAggregate& callNode) +{ + TIntermSequence& arguments = callNode.getSequence(); + + for (int i = 0; i < (int)arguments.size(); ++i) + samplerConstructorLocationCheck(loc, "call argument", arguments[i]); +} + +// +// Emit an error if this is a sampler constructor +// +void TParseContext::samplerConstructorLocationCheck(const TSourceLoc& loc, const char* token, TIntermNode* node) +{ + if (node->getAsOperator() && node->getAsOperator()->getOp() == EOpConstructTextureSampler) + error(loc, "sampler constructor must appear at point of use", token, ""); +} + // // Handle seeing a built-in constructor in a grammar production. // @@ -1736,7 +1798,7 @@ TFunction* TParseContext::handleConstructorCall(const TSourceLoc& loc, const TPu profileRequires(loc, EEsProfile, 300, nullptr, "arrayed constructor"); } - TOperator op = mapTypeToConstructorOp(type); + TOperator op = intermediate.mapTypeToConstructorOp(type); if (op == EOpNull) { error(loc, "cannot construct this type", type.getBasicString(), ""); @@ -1750,148 +1812,22 @@ TFunction* TParseContext::handleConstructorCall(const TSourceLoc& loc, const TPu return new TFunction(&empty, type, op); } -// -// Given a type, find what operation would fully construct it. -// -TOperator TParseContext::mapTypeToConstructorOp(const TType& type) const +// Handle seeing a precision qualifier in the grammar. +void TParseContext::handlePrecisionQualifier(const TSourceLoc& /*loc*/, TQualifier& qualifier, TPrecisionQualifier precision) { - TOperator op = EOpNull; - - switch (type.getBasicType()) { - case EbtStruct: - op = EOpConstructStruct; - break; - case EbtSampler: - if (type.getSampler().combined) - op = EOpConstructTextureSampler; - break; - case EbtFloat: - if (type.isMatrix()) { - switch (type.getMatrixCols()) { - case 2: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructMat2x2; break; - case 3: op = EOpConstructMat2x3; break; - case 4: op = EOpConstructMat2x4; break; - default: break; // some compilers want this - } - break; - case 3: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructMat3x2; break; - case 3: op = EOpConstructMat3x3; break; - case 4: op = EOpConstructMat3x4; break; - default: break; // some compilers want this - } - break; - case 4: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructMat4x2; break; - case 3: op = EOpConstructMat4x3; break; - case 4: op = EOpConstructMat4x4; break; - default: break; // some compilers want this - } - break; - default: break; // some compilers want this - } - } else { - switch(type.getVectorSize()) { - case 1: op = EOpConstructFloat; break; - case 2: op = EOpConstructVec2; break; - case 3: op = EOpConstructVec3; break; - case 4: op = EOpConstructVec4; break; - default: break; // some compilers want this - } - } - break; - case EbtDouble: - if (type.getMatrixCols()) { - switch (type.getMatrixCols()) { - case 2: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructDMat2x2; break; - case 3: op = EOpConstructDMat2x3; break; - case 4: op = EOpConstructDMat2x4; break; - default: break; // some compilers want this - } - break; - case 3: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructDMat3x2; break; - case 3: op = EOpConstructDMat3x3; break; - case 4: op = EOpConstructDMat3x4; break; - default: break; // some compilers want this - } - break; - case 4: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructDMat4x2; break; - case 3: op = EOpConstructDMat4x3; break; - case 4: op = EOpConstructDMat4x4; break; - default: break; // some compilers want this - } - break; - } - } else { - switch(type.getVectorSize()) { - case 1: op = EOpConstructDouble; break; - case 2: op = EOpConstructDVec2; break; - case 3: op = EOpConstructDVec3; break; - case 4: op = EOpConstructDVec4; break; - default: break; // some compilers want this - } - } - break; - case EbtInt: - switch(type.getVectorSize()) { - case 1: op = EOpConstructInt; break; - case 2: op = EOpConstructIVec2; break; - case 3: op = EOpConstructIVec3; break; - case 4: op = EOpConstructIVec4; break; - default: break; // some compilers want this - } - break; - case EbtUint: - switch(type.getVectorSize()) { - case 1: op = EOpConstructUint; break; - case 2: op = EOpConstructUVec2; break; - case 3: op = EOpConstructUVec3; break; - case 4: op = EOpConstructUVec4; break; - default: break; // some compilers want this - } - break; - case EbtInt64: - switch(type.getVectorSize()) { - case 1: op = EOpConstructInt64; break; - case 2: op = EOpConstructI64Vec2; break; - case 3: op = EOpConstructI64Vec3; break; - case 4: op = EOpConstructI64Vec4; break; - default: break; // some compilers want this - } - break; - case EbtUint64: - switch(type.getVectorSize()) { - case 1: op = EOpConstructUint64; break; - case 2: op = EOpConstructU64Vec2; break; - case 3: op = EOpConstructU64Vec3; break; - case 4: op = EOpConstructU64Vec4; break; - default: break; // some compilers want this - } - break; - case EbtBool: - switch(type.getVectorSize()) { - case 1: op = EOpConstructBool; break; - case 2: op = EOpConstructBVec2; break; - case 3: op = EOpConstructBVec3; break; - case 4: op = EOpConstructBVec4; break; - default: break; // some compilers want this - } - break; - default: - break; - } + if (obeyPrecisionQualifiers()) + qualifier.precision = precision; +} - return op; +// 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(); + } } // @@ -1966,14 +1902,14 @@ void TParseContext::variableCheck(TIntermTyped*& nodePtr) // Both test and if necessary, spit out an error, to see if the node is really // an l-value that can be operated on this way. // -// Returns true if the was an error. +// Returns true if there was an error. // bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { TIntermBinary* binaryNode = node->getAsBinaryNode(); if (binaryNode) { - bool errorReturn; + bool errorReturn = false; switch(binaryNode->getOp()) { case EOpIndexDirect: @@ -1992,9 +1928,9 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt } } - // fall through + break; // left node is checked by base class case EOpIndexDirectStruct: - return lValueErrorCheck(loc, op, binaryNode->getLeft()); + break; // left node is checked by base class case EOpVectorSwizzle: errorReturn = lValueErrorCheck(loc, op, binaryNode->getLeft()); if (!errorReturn) { @@ -2019,11 +1955,16 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt default: break; } - error(loc, " l-value required", op, "", ""); - return true; + if (errorReturn) { + error(loc, " l-value required", op, "", ""); + return true; + } } + // Let the base class check errors + if (TParseContextBase::lValueErrorCheck(loc, op, node)) + return true; const char* symbol = nullptr; TIntermSymbol* symNode = node->getAsSymbolNode(); @@ -2032,19 +1973,12 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt const char* message = nullptr; switch (node->getQualifier().storage) { - case EvqConst: message = "can't modify a const"; break; - case EvqConstReadOnly: message = "can't modify a const"; break; case EvqVaryingIn: message = "can't modify shader input"; break; case EvqInstanceId: message = "can't modify gl_InstanceID"; break; case EvqVertexId: message = "can't modify gl_VertexID"; break; case EvqFace: message = "can't modify gl_FrontFace"; break; case EvqFragCoord: message = "can't modify gl_FragCoord"; break; case EvqPointCoord: message = "can't modify gl_PointCoord"; break; - case EvqUniform: message = "can't modify a uniform"; break; - case EvqBuffer: - if (node->getQualifier().readonly) - message = "can't modify a readonly buffer"; - break; case EvqFragDepth: intermediate.setDepthReplacing(); // "In addition, it is an error to statically write to gl_FragDepth in the fragment shader." @@ -2053,22 +1987,7 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt break; default: - // - // Type that can't be written to? - // - switch (node->getBasicType()) { - case EbtSampler: - message = "can't modify a sampler"; - break; - case EbtAtomicUint: - message = "can't modify an atomic_uint"; - break; - case EbtVoid: - message = "can't modify void"; - break; - default: - break; - } + break; } if (message == nullptr && binaryNode == nullptr && symNode == nullptr) { @@ -2077,7 +1996,6 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt return true; } - // // Everything else is okay, no error. // @@ -2098,27 +2016,15 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt // Test for and give an error if the node can't be read from. void TParseContext::rValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { - if (! node) - return; - - TIntermBinary* binaryNode = node->getAsBinaryNode(); - if (binaryNode) { - switch(binaryNode->getOp()) { - case EOpIndexDirect: - case EOpIndexIndirect: - case EOpIndexDirectStruct: - case EOpVectorSwizzle: - rValueErrorCheck(loc, op, binaryNode->getLeft()); - default: - break; - } - - return; - } + // Let the base class check errors + TParseContextBase::rValueErrorCheck(loc, op, node); +#ifdef AMD_EXTENSIONS TIntermSymbol* symNode = node->getAsSymbolNode(); - if (symNode && symNode->getQualifier().writeonly) - error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); + if (!(symNode && symNode->getQualifier().writeonly)) // base class checks + if (symNode && symNode->getQualifier().explicitInterp) + error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str()); +#endif } // @@ -2665,7 +2571,11 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali publicType.basicType == EbtDouble) profileRequires(loc, EEsProfile, 300, nullptr, "shader input/output"); - if (! qualifier.flat) { +#ifdef AMD_EXTENSIONS + if (! qualifier.flat && ! qualifier.explicitInterp) { +#else + if (!qualifier.flat) { +#endif if (publicType.basicType == EbtInt || publicType.basicType == EbtUint || publicType.basicType == EbtInt64 || publicType.basicType == EbtUint64 || publicType.basicType == EbtDouble || @@ -2802,7 +2712,11 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons // Multiple interpolation qualifiers (mostly done later by 'individual qualifiers') if (src.isInterpolation() && dst.isInterpolation()) +#ifdef AMD_EXTENSIONS + error(loc, "can only have one interpolation qualifier (flat, smooth, noperspective, __explicitInterpAMD)", "", ""); +#else error(loc, "can only have one interpolation qualifier (flat, smooth, noperspective)", "", ""); +#endif // Ordering if (! force && ((profile != EEsProfile && version < 420) || @@ -2858,6 +2772,9 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons MERGE_SINGLETON(smooth); MERGE_SINGLETON(flat); MERGE_SINGLETON(nopersp); +#ifdef AMD_EXTENSIONS + MERGE_SINGLETON(explicitInterp); +#endif MERGE_SINGLETON(patch); MERGE_SINGLETON(sample); MERGE_SINGLETON(coherent); @@ -2884,8 +2801,11 @@ void TParseContext::setDefaultPrecision(const TSourceLoc& loc, TPublicType& publ 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 } @@ -2930,7 +2850,7 @@ void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType ba { // 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) @@ -2951,7 +2871,7 @@ void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType ba void TParseContext::parameterTypeCheck(const TSourceLoc& loc, TStorageQualifier qualifier, const TType& type) { - if ((qualifier == EvqOut || qualifier == EvqInOut) && (type.getBasicType() == EbtSampler || type.getBasicType() == EbtAtomicUint)) + if ((qualifier == EvqOut || qualifier == EvqInOut) && type.isOpaque()) error(loc, "samplers and atomic_uints cannot be output parameters", type.getBasicTypeString().c_str(), ""); } @@ -3175,12 +3095,13 @@ void TParseContext::arrayDimMerge(TType& type, const TArraySizes* sizes) // void TParseContext::declareArray(const TSourceLoc& loc, TString& identifier, const TType& type, TSymbol*& symbol, bool& newDeclaration) { - if (! symbol) { + if (symbol == nullptr) { bool currentScope; symbol = symbolTable.find(identifier, nullptr, ¤tScope); if (symbol && builtInName(identifier) && ! symbolTable.atBuiltInLevel()) { // bad shader (errors already reported) trying to redeclare a built-in name as an array + symbol = nullptr; return; } if (symbol == nullptr || ! currentScope) { @@ -3213,7 +3134,7 @@ void TParseContext::declareArray(const TSourceLoc& loc, TString& identifier, con // Process a redeclaration. // - if (! symbol) { + if (symbol == nullptr) { error(loc, "array variable name expected", identifier.c_str(), ""); return; } @@ -3663,7 +3584,7 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali if (qualifier.invariant) error(loc, "cannot use invariant qualifier on a function parameter", "", ""); if (qualifier.noContraction) { - if (qualifier.storage == EvqOut || qualifier.storage == EvqInOut) + if (qualifier.isParamOutput()) type.getQualifier().noContraction = true; else warn(loc, "qualifier has no effect on non-output parameters", "precise", ""); @@ -4459,12 +4380,17 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) } if (qualifier.hasComponent()) { // "It is a compile-time error if this sequence of components gets larger than 3." - if (qualifier.layoutComponent + type.getVectorSize() > 4) + if (qualifier.layoutComponent + type.getVectorSize() * (type.getBasicType() == EbtDouble ? 2 : 1) > 4) error(loc, "type overflows the available 4 components", "component", ""); // "It is a compile-time error to apply the component qualifier to a matrix, a structure, a block, or an array containing any of these." if (type.isMatrix() || type.getBasicType() == EbtBlock || type.getBasicType() == EbtStruct) error(loc, "cannot apply to a matrix, structure, or block", "component", ""); + + // " It is a compile-time error to use component 1 or 3 as the beginning of a double or dvec2." + if (type.getBasicType() == EbtDouble) + if (qualifier.layoutComponent & 1) + error(loc, "doubles cannot start on an odd-numbered component", "component", ""); } switch (qualifier.storage) { @@ -4501,6 +4427,11 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) // containing a double, the offset must also be a multiple of 8..." if (type.containsBasicType(EbtDouble) && ! IsMultipleOfPow2(qualifier.layoutXfbOffset, 8)) error(loc, "type contains double; xfb_offset must be a multiple of 8", "xfb_offset", ""); +#ifdef AMD_EXTENSIONS + // ..., if applied to an aggregate containing a float16_t, the offset must also be a multiple of 2..." + else if (type.containsBasicType(EbtFloat16) && !IsMultipleOfPow2(qualifier.layoutXfbOffset, 2)) + error(loc, "type contains half float; xfb_offset must be a multiple of 2", "xfb_offset", ""); +#endif else if (! IsMultipleOfPow2(qualifier.layoutXfbOffset, 4)) error(loc, "must be a multiple of size of first component", "xfb_offset", ""); } @@ -4519,12 +4450,17 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) // an array of size N, all elements of the array from binding through binding + N - 1 must be within this // range." // - if (type.getBasicType() != EbtSampler && type.getBasicType() != EbtBlock && type.getBasicType() != EbtAtomicUint) + if (! type.isOpaque() && type.getBasicType() != EbtBlock) error(loc, "requires block, or sampler/image, or atomic-counter type", "binding", ""); if (type.getBasicType() == EbtSampler) { int lastBinding = qualifier.layoutBinding; - if (type.isArray()) - lastBinding += type.getCumulativeArraySize(); + if (type.isArray()) { + if (type.isImplicitlySizedArray()) { + lastBinding += 1; + warn(loc, "assuming array size of one for compile-time checking of binding numbers for implicitly-sized array", "[]", ""); + } else + lastBinding += type.getCumulativeArraySize(); + } if (lastBinding >= resources.maxCombinedTextureImageUnits) error(loc, "sampler binding not less than gl_MaxCombinedTextureImageUnits", "binding", type.isArray() ? "(using array)" : ""); } @@ -4599,6 +4535,9 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EbtBool: case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif break; default: error(loc, "cannot be applied to this type", "constant_id", ""); @@ -4752,8 +4691,18 @@ void TParseContext::fixOffset(const TSourceLoc& loc, TSymbol& symbol) // Check for overlap int numOffsets = 4; - if (symbol.getType().isArray()) - numOffsets *= symbol.getType().getCumulativeArraySize(); + if (symbol.getType().isArray()) { + if (symbol.getType().isExplicitlySizedArray()) + numOffsets *= symbol.getType().getCumulativeArraySize(); + else { + // TODO: functionality: implicitly-sized atomic_uint arrays. + // We don't know the full size until later. This might + // be a specification problem, will report to Khronos. For the + // cases that is not true, the rest of the checking would need + // to be done at link time instead of compile time. + warn(loc, "implicitly sized atomic_uint array treated as having one element for tracking the default offset", "atomic_uint", ""); + } + } int repeated = intermediate.addUsedOffsets(qualifier.layoutBinding, offset, numOffsets); if (repeated >= 0) error(loc, "atomic counters sharing the same offset:", "offset", "%d", repeated); @@ -4819,10 +4768,10 @@ const TFunction* TParseContext::findFunction120(const TSourceLoc& loc, const TFu // more than one function." const TFunction* candidate = nullptr; - TVector candidateList; + TVector candidateList; symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn); - for (TVector::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 @@ -4870,10 +4819,100 @@ const TFunction* TParseContext::findFunction120(const TSourceLoc& loc, const TFu } // 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 candidateList; + symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn); + + // can 'from' convert to 'to'? + const auto convertible = [this](const TType& from, const TType& to) -> bool { + 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) -> bool { + // 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 @@ -4934,7 +4973,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden // Check for redeclaration of built-ins and/or attempting to declare a reserved name bool newDeclaration = false; // true if a new entry gets added to the symbol table TSymbol* symbol = redeclareBuiltinVariable(loc, identifier, type.getQualifier(), publicType.shaderQualifiers, newDeclaration); - if (! symbol) + if (symbol == nullptr) reservedErrorCheck(loc, identifier); inheritGlobalDefaults(type.getQualifier()); @@ -4959,18 +4998,18 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden } } else { // non-array case - if (! symbol) + if (symbol == nullptr) symbol = declareNonArray(loc, identifier, type, newDeclaration); else if (type != symbol->getType()) error(loc, "cannot change the type of", "redeclaration", symbol->getName().c_str()); } - if (! symbol) + if (symbol == nullptr) return nullptr; // Deal with initializer TIntermNode* initNode = nullptr; - if (symbol && initializer) { + if (symbol != nullptr && initializer) { TVariable* variable = symbol->getAsVariable(); if (! variable) { error(loc, "initializer requires a variable, not a member", identifier.c_str(), ""); @@ -5221,7 +5260,7 @@ TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const return nullptr; } - return addConstructor(loc, initList, arrayType, mapTypeToConstructorOp(arrayType)); + return addConstructor(loc, initList, arrayType); } else if (type.isStruct()) { if (type.getStruct()->size() != initList->getSequence().size()) { error(loc, "wrong number of structure members", "initializer list", ""); @@ -5253,8 +5292,14 @@ TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const return nullptr; } - // now that the subtree is processed, process this node - return addConstructor(loc, initList, type, mapTypeToConstructorOp(type)); + // Now that the subtree is processed, process this node as if the + // initializer list is a set of arguments to a constructor. + TIntermNode* emulatedConstructorArguments; + if (initList->getSequence().size() == 1) + emulatedConstructorArguments = initList->getSequence()[0]; + else + emulatedConstructorArguments = initList; + return addConstructor(loc, emulatedConstructorArguments, type); } // @@ -5263,13 +5308,14 @@ TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const // // Returns nullptr for an error or the constructed node (aggregate or typed) for no error. // -TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* node, const TType& type, TOperator op) +TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* node, const TType& type) { if (node == nullptr || node->getAsTyped() == nullptr) return nullptr; rValueErrorCheck(loc, "constructor", node->getAsTyped()); TIntermAggregate* aggrNode = node->getAsAggregate(); + TOperator op = intermediate.mapTypeToConstructorOp(type); // Combined texture-sampler constructors are completely semantic checked // in constructorTextureSamplerError() @@ -5391,6 +5437,24 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T basicOp = EOpConstructDouble; break; +#ifdef AMD_EXTENSIONS + case EOpConstructF16Vec2: + case EOpConstructF16Vec3: + case EOpConstructF16Vec4: + case EOpConstructF16Mat2x2: + case EOpConstructF16Mat2x3: + case EOpConstructF16Mat2x4: + case EOpConstructF16Mat3x2: + case EOpConstructF16Mat3x3: + case EOpConstructF16Mat3x4: + case EOpConstructF16Mat4x2: + case EOpConstructF16Mat4x3: + case EOpConstructF16Mat4x4: + case EOpConstructFloat16: + basicOp = EOpConstructFloat16; + break; +#endif + case EOpConstructIVec2: case EOpConstructIVec3: case EOpConstructIVec4: @@ -5848,16 +5912,23 @@ void TParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& typ if (! IsMultipleOfPow2(memberQualifier.layoutOffset, memberAlignment)) error(memberLoc, "must be a multiple of the member's alignment", "offset", ""); - // "It is a compile-time error to specify an offset that is smaller than the offset of the previous + // GLSL: "It is a compile-time error to specify an offset that is smaller than the offset of the previous // member in the block or that lies within the previous member of the block" - if (memberQualifier.layoutOffset < offset) - error(memberLoc, "cannot lie in previous members", "offset", ""); + if (spvVersion.spv == 0) { + if (memberQualifier.layoutOffset < offset) + error(memberLoc, "cannot lie in previous members", "offset", ""); - // "The offset qualifier forces the qualified member to start at or after the specified - // integral-constant expression, which will be its byte offset from the beginning of the buffer. - // "The actual offset of a member is computed as - // follows: If offset was declared, start with that offset, otherwise start with the next available offset." - offset = std::max(offset, memberQualifier.layoutOffset); + // "The offset qualifier forces the qualified member to start at or after the specified + // integral-constant expression, which will be its byte offset from the beginning of the buffer. + // "The actual offset of a member is computed as + // follows: If offset was declared, start with that offset, otherwise start with the next available offset." + offset = std::max(offset, memberQualifier.layoutOffset); + } else { + // TODO: Vulkan: "It is a compile-time error to have any offset, explicit or assigned, + // that lies within another member of the block." + + offset = memberQualifier.layoutOffset; + } } // "The actual alignment of a member will be the greater of the specified align alignment and the standard diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 2f5e0953..0f60ff7f 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -77,12 +77,22 @@ public: 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), - linkage(nullptr), scanContext(nullptr), ppContext(nullptr) { } + symbolTable(symbolTable), + linkage(nullptr), scanContext(nullptr), ppContext(nullptr), + globalUniformBlock(nullptr) { } virtual ~TParseContextBase() { } - + + virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...); + virtual void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...); + virtual void C_DECL ppError(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...); + virtual void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, ...); + virtual void setLimits(const TBuiltInResource&) = 0; - + EShLanguage getLanguage() const { return language; } TIntermAggregate*& getLinkage() { return linkage; } void setScanContext(TScanContext* c) { scanContext = c; } @@ -125,7 +135,16 @@ public: } TSymbolTable& symbolTable; // symbol table that goes with the current language, version, and profile - bool tokensBeforeEOF; + + // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL) + // TODO: This could perhaps get its own object, but the current design doesn't work + // yet when new uniform variables are declared between function definitions, so + // this is pending getting a fully functional design. + virtual void growGlobalUniformBlock(TSourceLoc&, TType&, TString& memberName); + virtual bool insertGlobalUniformBlock(); + + virtual bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); + virtual void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); protected: TParseContextBase(TParseContextBase&); @@ -142,6 +161,58 @@ protected: std::function versionCallback; std::function extensionCallback; std::function errorCallback; + + // see implementation for detail + const TFunction* selectFunction(const TVector, const TFunction&, + std::function, + std::function, + /* output */ bool& tie); + + // Manage the global uniform block (default uniforms in GLSL, $Global in HLSL) + TVariable* globalUniformBlock; // the actual block, inserted into the symbol table + int firstNewMember; // the index of the first member not yet inserted into the symbol table + // override this to set the language-specific name + virtual const char* getGlobalUniformBlockName() { return ""; } + virtual void finalizeGlobalUniformBlockLayout(TVariable&) { } + virtual void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken, + const char* szExtraInfoFormat, TPrefixType prefix, + va_list args); + virtual void makeEditable(TSymbol*&); + virtual TVariable* getEditableVariable(const char* name); +}; + +// +// 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,19 +226,13 @@ public: 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 - void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - void C_DECL ppError(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - void reservedErrorCheck(const TSourceLoc&, const TString&); void reservedPpErrorCheck(const TSourceLoc&, const char* name, const char* op); bool lineContinuationCheck(const TSourceLoc&, bool endOfComment); @@ -181,7 +246,6 @@ public: void handleIndexLimits(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); void makeEditable(TSymbol*&); - TVariable* getEditableVariable(const char* name); bool isIoResizeArray(const TType&) const; void fixIoArraySize(const TSourceLoc&, TType&); void ioArrayCheck(const TSourceLoc&, const TType&, const TString& identifier); @@ -197,6 +261,8 @@ public: TFunction* handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype); TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&); TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermNode*); + TIntermTyped* handleBuiltInFunctionCall(TSourceLoc, TIntermNode& arguments, const TFunction& function); + void computeBuiltinPrecisions(TIntermTyped&, const TFunction&); TIntermNode* handleReturnValue(const TSourceLoc&, TIntermTyped*); void checkLocation(const TSourceLoc&, TOperator); TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*); @@ -204,15 +270,19 @@ public: TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&) const; void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&); void nonOpBuiltInCheck(const TSourceLoc&, const TFunction&, TIntermAggregate&); + 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); void unaryOpError(const TSourceLoc&, const char* op, TString operand); void binaryOpError(const TSourceLoc&, const char* op, TString left, TString right); void variableCheck(TIntermTyped*& nodePtr); - bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); - void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*); + bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override; + void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override; void constantValueCheck(TIntermTyped* node, const char* token); void integerCheck(const TIntermTyped* node, const char* token); void globalCheck(const TSourceLoc&, const char* token); @@ -276,7 +346,7 @@ public: const TFunction* findFunction400(const TSourceLoc& loc, const TFunction& call, bool& builtIn); void declareTypeDefaults(const TSourceLoc&, const TPublicType&); TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, const TPublicType&, TArraySizes* typeArray = 0, TIntermTyped* initializer = 0); - TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&, TOperator); + TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&); TIntermTyped* constructAggregate(TIntermNode*, const TType&, int, const TSourceLoc&); TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset); void declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = 0, TArraySizes* arraySizes = 0); @@ -302,11 +372,7 @@ protected: void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&, bool& newDeclaration); TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); - TOperator mapTypeToConstructorOp(const TType&) const; void finalErrorCheck(); - void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, TPrefixType prefix, - va_list args); public: // @@ -338,7 +404,7 @@ protected: 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 d56979b4..9dfcd305 100644 --- a/glslang/MachineIndependent/PoolAlloc.cpp +++ b/glslang/MachineIndependent/PoolAlloc.cpp @@ -53,7 +53,7 @@ void InitializeMemoryPools() TThreadMemoryPools* threadData = new TThreadMemoryPools(); threadData->threadPoolAllocator = threadPoolAllocator; - + OS_SetTLSValue(PoolIndex, threadData); } @@ -63,7 +63,7 @@ void FreeGlobalPools() TThreadMemoryPools* globalPools = static_cast(OS_GetTLSValue(PoolIndex)); if (! globalPools) return; - + GetThreadPoolAllocator().popAll(); delete &GetThreadPoolAllocator(); delete globalPools; @@ -149,12 +149,12 @@ TPoolAllocator::TPoolAllocator(int growthIncrement, int allocationAlignment) : TPoolAllocator::~TPoolAllocator() { - while (inUseList) { - tHeader* next = inUseList->nextPage; + while (inUseList) { + tHeader* next = inUseList->nextPage; inUseList->~tHeader(); delete [] reinterpret_cast(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 b8cb869f..37506454 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 +#include #include #include @@ -55,7 +55,7 @@ // Required to avoid missing prototype warnings for some compilers int yylex(YYSTYPE*, glslang::TParseContext&); - + namespace glslang { // read past any white space @@ -463,6 +463,25 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["u64vec3"] = U64VEC3; (*KeywordMap)["u64vec4"] = U64VEC4; +#ifdef AMD_EXTENSIONS + (*KeywordMap)["float16_t"] = FLOAT16_T; + (*KeywordMap)["f16vec2"] = F16VEC2; + (*KeywordMap)["f16vec3"] = F16VEC3; + (*KeywordMap)["f16vec4"] = F16VEC4; + (*KeywordMap)["f16mat2"] = F16MAT2; + (*KeywordMap)["f16mat3"] = F16MAT3; + (*KeywordMap)["f16mat4"] = F16MAT4; + (*KeywordMap)["f16mat2x2"] = F16MAT2X2; + (*KeywordMap)["f16mat2x3"] = F16MAT2X3; + (*KeywordMap)["f16mat2x4"] = F16MAT2X4; + (*KeywordMap)["f16mat3x2"] = F16MAT3X2; + (*KeywordMap)["f16mat3x3"] = F16MAT3X3; + (*KeywordMap)["f16mat3x4"] = F16MAT3X4; + (*KeywordMap)["f16mat4x2"] = F16MAT4X2; + (*KeywordMap)["f16mat4x3"] = F16MAT4X3; + (*KeywordMap)["f16mat4x4"] = F16MAT4X4; +#endif + (*KeywordMap)["sampler2D"] = SAMPLER2D; (*KeywordMap)["samplerCube"] = SAMPLERCUBE; (*KeywordMap)["samplerCubeArray"] = SAMPLERCUBEARRAY; @@ -553,6 +572,9 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["noperspective"] = NOPERSPECTIVE; (*KeywordMap)["smooth"] = SMOOTH; (*KeywordMap)["flat"] = FLAT; +#ifdef AMD_EXTENSIONS + (*KeywordMap)["__explicitInterpAMD"] = __EXPLICITINTERPAMD; +#endif (*KeywordMap)["centroid"] = CENTROID; (*KeywordMap)["precise"] = PRECISE; (*KeywordMap)["invariant"] = INVARIANT; @@ -561,7 +583,7 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["superp"] = SUPERP; ReservedSet = new std::unordered_set; - + ReservedSet->insert("common"); ReservedSet->insert("partition"); ReservedSet->insert("active"); @@ -609,13 +631,15 @@ void TScanContext::deleteKeywordMap() ReservedSet = nullptr; } +// Called by yylex to get the next token. +// Returning 0 implies end of input. int TScanContext::tokenize(TPpContext* pp, TParserToken& token) { do { parserToken = &token; TPpToken ppToken; tokenText = pp->tokenize(&ppToken); - if (tokenText == nullptr) + if (tokenText == nullptr || tokenText[0] == 0) return 0; loc = ppToken.loc; @@ -675,13 +699,16 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token) case PpAtomDecrement: return DEC_OP; case PpAtomIncrement: return INC_OP; - + case PpAtomConstInt: parserToken->sType.lex.i = ppToken.ival; return INTCONSTANT; case PpAtomConstUint: parserToken->sType.lex.i = ppToken.ival; return UINTCONSTANT; case PpAtomConstInt64: parserToken->sType.lex.i64 = ppToken.i64val; return INT64CONSTANT; case PpAtomConstUint64: parserToken->sType.lex.i64 = ppToken.i64val; return UINT64CONSTANT; case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT; case PpAtomConstDouble: parserToken->sType.lex.d = ppToken.dval; return DOUBLECONSTANT; +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: parserToken->sType.lex.d = ppToken.dval; return FLOAT16CONSTANT; +#endif case PpAtomIdentifier: { int token = tokenizeIdentifier(); @@ -847,7 +874,7 @@ int TScanContext::tokenizeIdentifier() case MAT3X4: case MAT4X2: case MAT4X3: - case MAT4X4: + case MAT4X4: return matNxM(); case DMAT2: @@ -933,10 +960,38 @@ int TScanContext::tokenizeIdentifier() case U64VEC2: case U64VEC3: case U64VEC4: - if (parseContext.profile != EEsProfile && parseContext.version >= 450) + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + (parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64) && + parseContext.profile != EEsProfile && parseContext.version >= 450)) return keyword; return identifierOrType(); +#ifdef AMD_EXTENSIONS + case FLOAT16_T: + case F16VEC2: + case F16VEC3: + case F16VEC4: + case F16MAT2: + case F16MAT3: + case F16MAT4: + case F16MAT2X2: + case F16MAT2X3: + case F16MAT2X4: + case F16MAT3X2: + case F16MAT3X3: + case F16MAT3X4: + case F16MAT4X2: + case F16MAT4X3: + case F16MAT4X4: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) && + parseContext.profile != EEsProfile && parseContext.version >= 450)) + return keyword; + return identifierOrType(); +#endif + case SAMPLERCUBEARRAY: case SAMPLERCUBEARRAYSHADOW: case ISAMPLERCUBEARRAY: @@ -973,7 +1028,7 @@ int TScanContext::tokenizeIdentifier() case USAMPLER2DARRAY: afterType = true; return nonreservedKeyword(300, 130); - + case ISAMPLER2DRECT: case USAMPLER2DRECT: afterType = true; @@ -991,7 +1046,7 @@ int TScanContext::tokenizeIdentifier() if (parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return es30ReservedFromGLSL(140); - + case SAMPLER2DMS: case ISAMPLER2DMS: case USAMPLER2DMS: @@ -1110,13 +1165,21 @@ int TScanContext::tokenizeIdentifier() case NOPERSPECTIVE: return es30ReservedFromGLSL(130); - + case SMOOTH: if ((parseContext.profile == EEsProfile && parseContext.version < 300) || (parseContext.profile != EEsProfile && parseContext.version < 130)) return identifierOrType(); return keyword; +#ifdef AMD_EXTENSIONS + case __EXPLICITINTERPAMD: + if (parseContext.profile != EEsProfile && parseContext.version >= 450 && + parseContext.extensionTurnedOn(E_GL_AMD_shader_explicit_vertex_parameter)) + return keyword; + return identifierOrType(); +#endif + case FLAT: if (parseContext.profile == EEsProfile && parseContext.version < 300) reservedWord(); @@ -1161,7 +1224,7 @@ int TScanContext::tokenizeIdentifier() bool reserved = parseContext.profile == EEsProfile || parseContext.version >= 130; return identifierOrReserved(reserved); } - + default: parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc); return 0; diff --git a/glslang/MachineIndependent/Scan.h b/glslang/MachineIndependent/Scan.h index 4282cd59..67c86d2e 100644 --- a/glslang/MachineIndependent/Scan.h +++ b/glslang/MachineIndependent/Scan.h @@ -204,6 +204,8 @@ public: 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 dccc1f0b..6d044452 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 +#include #include #include #include @@ -51,6 +51,7 @@ #include "../../hlsl/hlslParseables.h" #include "Scan.h" #include "ScanContext.h" +#include "../../hlsl/hlslScanContext.h" #include "../Include/ShHandle.h" #include "../../OGLCompilersDLL/InitializeDll.h" @@ -60,6 +61,7 @@ #define SH_EXPORTING #include "../Public/ShaderLang.h" #include "reflection.h" +#include "iomapper.h" #include "Initialize.h" namespace { // anonymous namespace for file-local functions and symbols @@ -146,6 +148,23 @@ int MapProfileToIndex(EProfile profile) 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 +180,8 @@ enum EPrecisionClass { // 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 +324,8 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp 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 +353,18 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp // 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 +676,7 @@ bool ProcessDeferred( 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 +697,9 @@ bool ProcessDeferred( 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); } @@ -1030,6 +1050,7 @@ int ShInitialize() PerProcessGPA = new TPoolAllocator(); glslang::TScanContext::fillInKeywordMap(); + glslang::HlslScanContext::fillInKeywordMap(); return 1; } @@ -1092,9 +1113,11 @@ int __fastcall ShFinalize() 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 +1126,11 @@ int __fastcall ShFinalize() 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; + } } } } @@ -1118,6 +1143,7 @@ int __fastcall ShFinalize() } glslang::TScanContext::deleteKeywordMap(); + glslang::HlslScanContext::deleteKeywordMap(); return 1; } @@ -1463,9 +1489,16 @@ void TShader::setStringsWithLengthsAndNames( void TShader::setEntryPoint(const char* entryPoint) { - intermediate->setEntryPoint(entryPoint); + intermediate->setEntryPointName(entryPoint); } +void TShader::setShiftSamplerBinding(unsigned int base) { intermediate->setShiftSamplerBinding(base); } +void TShader::setShiftTextureBinding(unsigned int base) { intermediate->setShiftTextureBinding(base); } +void TShader::setShiftUboBinding(unsigned int base) { intermediate->setShiftUboBinding(base); } +void TShader::setAutoMapBindings(bool map) { intermediate->setAutoMapBindings(map); } +void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlattenUniformArrays(flatten); } +void TShader::setNoStorageFormat(bool useUnknownFormat) { intermediate->setNoStorageFormat(useUnknownFormat); } + // // Turn the shader strings into a parse tree in the TIntermediate. // @@ -1526,7 +1559,7 @@ const char* TShader::getInfoDebugLog() return infoSink->debug.c_str(); } -TProgram::TProgram() : pool(0), reflection(0), linked(false) +TProgram::TProgram() : pool(0), reflection(0), ioMapper(nullptr), linked(false) { infoSink = new TInfoSink; for (int s = 0; s < EShLangCount; ++s) { @@ -1662,20 +1695,42 @@ bool TProgram::buildReflection() return true; } -int TProgram::getNumLiveUniformVariables() { return reflection->getNumUniforms(); } -int TProgram::getNumLiveUniformBlocks() { return reflection->getNumUniformBlocks(); } -const char* TProgram::getUniformName(int index) { return reflection->getUniform(index).name.c_str(); } -const char* TProgram::getUniformBlockName(int index) { return reflection->getUniformBlock(index).name.c_str(); } -int TProgram::getUniformBlockSize(int index) { return reflection->getUniformBlock(index).size; } -int TProgram::getUniformIndex(const char* name) { return reflection->getIndex(name); } -int TProgram::getUniformBlockIndex(int index) { return reflection->getUniform(index).index; } -int TProgram::getUniformType(int index) { return reflection->getUniform(index).glDefineType; } -int TProgram::getUniformBufferOffset(int index) { return reflection->getUniform(index).offset; } -int TProgram::getUniformArraySize(int index) { return reflection->getUniform(index).size; } -int TProgram::getNumLiveAttributes() { return reflection->getNumAttributes(); } -const char* TProgram::getAttributeName(int index) { return reflection->getAttribute(index).name.c_str(); } -int TProgram::getAttributeType(int index) { return reflection->getAttribute(index).glDefineType; } +int TProgram::getNumLiveUniformVariables() const { return reflection->getNumUniforms(); } +int TProgram::getNumLiveUniformBlocks() const { return reflection->getNumUniformBlocks(); } +const char* TProgram::getUniformName(int index) const { return reflection->getUniform(index).name.c_str(); } +const char* TProgram::getUniformBlockName(int index) const { return reflection->getUniformBlock(index).name.c_str(); } +int TProgram::getUniformBlockSize(int index) const { return reflection->getUniformBlock(index).size; } +int TProgram::getUniformIndex(const char* name) const { return reflection->getIndex(name); } +int TProgram::getUniformBlockIndex(int index) const { return reflection->getUniform(index).index; } +int TProgram::getUniformType(int index) const { return reflection->getUniform(index).glDefineType; } +int TProgram::getUniformBufferOffset(int index) const { return reflection->getUniform(index).offset; } +int TProgram::getUniformArraySize(int index) const { return reflection->getUniform(index).size; } +int TProgram::getNumLiveAttributes() const { return reflection->getNumAttributes(); } +const char* TProgram::getAttributeName(int index) const { return reflection->getAttribute(index).name.c_str(); } +int TProgram::getAttributeType(int index) const { return reflection->getAttribute(index).glDefineType; } +const TType* TProgram::getUniformTType(int index) const { return reflection->getUniform(index).getType(); } +const TType* TProgram::getUniformBlockTType(int index) const { return reflection->getUniformBlock(index).getType(); } void TProgram::dumpReflection() { reflection->dump(); } +// +// I/O mapping implementation. +// +bool TProgram::mapIO() +{ + if (! linked || ioMapper) + return false; + + ioMapper = new TIoMapper; + + for (int s = 0; s < EShLangCount; ++s) { + if (intermediate[s]) { + if (! ioMapper->addStage((EShLanguage)s, *intermediate[s], *infoSink)) + return false; + } + } + + return true; +} + } // end namespace glslang diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index bf0f1f9f..fb09fdf9 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. // @@ -60,6 +60,9 @@ void TType::buildMangledName(TString& mangledName) switch (basicType) { case EbtFloat: mangledName += 'f'; break; case EbtDouble: mangledName += 'd'; break; +#ifdef AMD_EXTENSIONS + case EbtFloat16: mangledName += "f16"; break; +#endif case EbtInt: mangledName += 'i'; break; case EbtUint: mangledName += 'u'; break; case EbtInt64: mangledName += "i64"; break; @@ -250,7 +253,7 @@ TSymbol::TSymbol(const TSymbol& copyOf) } TVariable::TVariable(const TVariable& copyOf) : TSymbol(copyOf) -{ +{ type.deepCopy(copyOf.type); userType = copyOf.userType; numExtensions = 0; @@ -276,7 +279,7 @@ TVariable* TVariable::clone() const } 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 9877ab7f..aeec34fc 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -147,7 +147,8 @@ public: TVariable(const TString *name, const TType& t, bool uT = false ) : TSymbol(name), userType(uT), - constSubtree(nullptr) { type.shallowCopy(t); } + constSubtree(nullptr), + anonId(-1) { type.shallowCopy(t); } virtual TVariable* clone() const; virtual ~TVariable() { } @@ -161,6 +162,8 @@ public: virtual void setConstArray(const TConstUnionArray& array) { constArray = array; } virtual void setConstSubtree(TIntermTyped* subtree) { constSubtree = subtree; } virtual TIntermTyped* getConstSubtree() const { return constSubtree; } + virtual void setAnonId(int i) { anonId = i; } + virtual int getAnonId() const { return anonId; } virtual void dump(TInfoSink &infoSink) const; @@ -178,6 +181,7 @@ protected: // constant, or neither, but never both. TConstUnionArray constArray; // for compile-time constant value TIntermTyped* constSubtree; // for specialization constant computation + int anonId; // the ID used for anonymous blocks: TODO: see if uniqueId could serve a dual purpose }; // @@ -305,27 +309,16 @@ public: // // returning true means symbol was added to the table with no semantic errors // - tInsertResult result; const TString& name = symbol.getName(); if (name == "") { + symbol.getAsVariable()->setAnonId(anonId++); // An empty name means an anonymous container, exposing its members to the external scope. // Give it a name and insert its members in the symbol table, pointing to the container. char buf[20]; - snprintf(buf, 20, "%s%d", AnonymousPrefix, anonId); + snprintf(buf, 20, "%s%d", AnonymousPrefix, symbol.getAsVariable()->getAnonId()); symbol.changeName(NewPoolTString(buf)); - bool isOkay = true; - const TTypeList& types = *symbol.getAsVariable()->getType().getStruct(); - for (unsigned int m = 0; m < types.size(); ++m) { - TAnonMember* member = new TAnonMember(&types[m].type->getFieldName(), m, *symbol.getAsVariable(), anonId); - result = level.insert(tLevelPair(member->getMangledName(), member)); - if (! result.second) - isOkay = false; - } - - ++anonId; - - return isOkay; + return insertAnonymousMembers(symbol, 0); } else { // Check for redefinition errors: // - STL itself will tell us if there is a direct name collision, with name mangling, at this level @@ -340,14 +333,35 @@ public: level.insert(tLevelPair(insertName, &symbol)); return true; - } else { - result = level.insert(tLevelPair(insertName, &symbol)); - - return result.second; - } + } else + return level.insert(tLevelPair(insertName, &symbol)).second; } } + // Add more members to an already inserted aggregate object + bool amend(TSymbol& symbol, int firstNewMember) + { + // See insert() for comments on basic explanation of insert. + // This operates similarly, but more simply. + // Only supporting amend of anonymous blocks so far. + if (IsAnonymous(symbol.getName())) + return insertAnonymousMembers(symbol, firstNewMember); + else + return false; + } + + bool insertAnonymousMembers(TSymbol& symbol, int firstMember) + { + const TTypeList& types = *symbol.getAsVariable()->getType().getStruct(); + for (unsigned int m = firstMember; m < types.size(); ++m) { + TAnonMember* member = new TAnonMember(&types[m].type->getFieldName(), m, *symbol.getAsVariable(), symbol.getAsVariable()->getAnonId()); + if (! level.insert(tLevelPair(member->getMangledName(), member)).second) + return false; + } + + return true; + } + TSymbol* find(const TString& name) const { tLevel::const_iterator it = level.find(name); @@ -357,7 +371,7 @@ public: return (*it).second; } - void findFunctionNameList(const TString& name, TVector& list) + void findFunctionNameList(const TString& name, TVector& list) { size_t parenAt = name.find_first_of('('); TString base(name, 0, parenAt + 1); @@ -546,6 +560,14 @@ public: return table[currentLevel()]->insert(symbol, separateNameSpaces); } + // Add more members to an already inserted aggregate object + bool amend(TSymbol& symbol, int firstNewMember) + { + // See insert() for comments on basic explanation of insert. + // This operates similarly, but more simply. + return table[currentLevel()]->amend(symbol, firstNewMember); + } + // // To allocate an internal temporary, which will need to be uniquely // identified by the consumer of the AST, but never need to @@ -624,7 +646,7 @@ public: return false; } - void findFunctionNameList(const TString& name, TVector& list, bool& builtIn) + void findFunctionNameList(const TString& name, TVector& list, bool& builtIn) { // For user levels, return the set found in the first scope with a match builtIn = false; diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index e46118af..8a29cb37 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -187,6 +187,14 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable; extensionBehavior[E_GL_GOOGLE_include_directive] = EBhDisable; +#ifdef AMD_EXTENSIONS + extensionBehavior[E_GL_AMD_shader_ballot] = EBhDisable; + extensionBehavior[E_GL_AMD_shader_trinary_minmax] = EBhDisable; + extensionBehavior[E_GL_AMD_shader_explicit_vertex_parameter] = EBhDisable; + extensionBehavior[E_GL_AMD_gcn_shader] = EBhDisable; + extensionBehavior[E_GL_AMD_gpu_shader_half_float] = EBhDisable; +#endif + // AEP extensionBehavior[E_GL_ANDROID_extension_pack_es31a] = EBhDisable; extensionBehavior[E_GL_KHR_blend_equation_advanced] = EBhDisable; @@ -286,6 +294,14 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_ARB_sparse_texture_clamp 1\n" // "#define GL_ARB_cull_distance 1\n" // present for 4.5, but need extension control over block members "#define GL_EXT_shader_non_constant_global_initializers 1\n" + +#ifdef AMD_EXTENSIONS + "#define GL_AMD_shader_ballot 1\n" + "#define GL_AMD_shader_trinary_minmax 1\n" + "#define GL_AMD_shader_explicit_vertex_parameter 1\n" + "#define GL_AMD_gcn_shader 1\n" + "#define GL_AMD_gpu_shader_half_float 1\n" +#endif ; } @@ -649,6 +665,19 @@ void TParseVersions::doubleCheck(const TSourceLoc& loc, const char* op) profileRequires(loc, ECompatibilityProfile, 400, nullptr, op); } +#ifdef AMD_EXTENSIONS +// Call for any operation needing GLSL float16 data-type support. +void TParseVersions::float16Check(const TSourceLoc& loc, const char* op, bool builtIn) +{ + if (!builtIn) { + requireExtensions(loc, 1, &E_GL_AMD_gpu_shader_half_float, "shader half float"); + requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); + profileRequires(loc, ECoreProfile, 450, nullptr, op); + profileRequires(loc, ECompatibilityProfile, 450, nullptr, op); + } +} +#endif + // Call for any operation needing GLSL 64-bit integer data-type support. void TParseVersions::int64Check(const TSourceLoc& loc, const char* op, bool builtIn) { diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 19d101db..17baf3b1 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -135,6 +135,14 @@ const char* const E_GL_EXT_shader_non_constant_global_initializers = "GL_EXT_sha const char* const E_GL_GOOGLE_cpp_style_line_directive = "GL_GOOGLE_cpp_style_line_directive"; const char* const E_GL_GOOGLE_include_directive = "GL_GOOGLE_include_directive"; +#ifdef AMD_EXTENSIONS +const char* const E_GL_AMD_shader_ballot = "GL_AMD_shader_ballot"; +const char* const E_GL_AMD_shader_trinary_minmax = "GL_AMD_shader_trinary_minmax"; +const char* const E_GL_AMD_shader_explicit_vertex_parameter = "GL_AMD_shader_explicit_vertex_parameter"; +const char* const E_GL_AMD_gcn_shader = "GL_AMD_gcn_shader"; +const char* const E_GL_AMD_gpu_shader_half_float = "GL_AMD_gpu_shader_half_float"; +#endif + // AEP const char* const E_GL_ANDROID_extension_pack_es31a = "GL_ANDROID_extension_pack_es31a"; const char* const E_GL_KHR_blend_equation_advanced = "GL_KHR_blend_equation_advanced"; diff --git a/glslang/MachineIndependent/gl_types.h b/glslang/MachineIndependent/gl_types.h index 9e877d37..d7cb31fe 100644 --- a/glslang/MachineIndependent/gl_types.h +++ b/glslang/MachineIndependent/gl_types.h @@ -76,6 +76,24 @@ #define GL_DOUBLE_MAT4x2 0x8F4D #define GL_DOUBLE_MAT4x3 0x8F4E +#ifdef AMD_EXTENSIONS +// Those constants are borrowed from extension NV_gpu_shader5 +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB + +#define GL_FLOAT16_MAT2_AMD 0x91C5 +#define GL_FLOAT16_MAT3_AMD 0x91C6 +#define GL_FLOAT16_MAT4_AMD 0x91C7 +#define GL_FLOAT16_MAT2x3_AMD 0x91C8 +#define GL_FLOAT16_MAT2x4_AMD 0x91C9 +#define GL_FLOAT16_MAT3x2_AMD 0x91CA +#define GL_FLOAT16_MAT3x4_AMD 0x91CB +#define GL_FLOAT16_MAT4x2_AMD 0x91CC +#define GL_FLOAT16_MAT4x3_AMD 0x91CD +#endif + #define GL_SAMPLER_1D 0x8B5D #define GL_SAMPLER_2D 0x8B5E #define GL_SAMPLER_3D 0x8B5F diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 2cd1cc61..060ffdd6 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -119,14 +119,15 @@ extern int yylex(YYSTYPE*, TParseContext&); %expect 1 // One shift reduce conflict because of if | else %token ATTRIBUTE VARYING -%token CONST BOOL FLOAT DOUBLE INT UINT INT64_T UINT64_T +%token CONST BOOL FLOAT DOUBLE INT UINT INT64_T UINT64_T FLOAT16_T %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT SUBROUTINE %token BVEC2 BVEC3 BVEC4 IVEC2 IVEC3 IVEC4 I64VEC2 I64VEC3 I64VEC4 UVEC2 UVEC3 UVEC4 U64VEC2 U64VEC3 U64VEC4 VEC2 VEC3 VEC4 %token MAT2 MAT3 MAT4 CENTROID IN OUT INOUT %token UNIFORM PATCH SAMPLE BUFFER SHARED %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY %token DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4 -%token NOPERSPECTIVE FLAT SMOOTH LAYOUT +%token F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4 +%token NOPERSPECTIVE FLAT SMOOTH LAYOUT __EXPLICITINTERPAMD %token MAT2X2 MAT2X3 MAT2X4 %token MAT3X2 MAT3X3 MAT3X4 @@ -134,6 +135,9 @@ extern int yylex(YYSTYPE*, TParseContext&); %token DMAT2X2 DMAT2X3 DMAT2X4 %token DMAT3X2 DMAT3X3 DMAT3X4 %token DMAT4X2 DMAT4X3 DMAT4X4 +%token F16MAT2X2 F16MAT2X3 F16MAT2X4 +%token F16MAT3X2 F16MAT3X3 F16MAT3X4 +%token F16MAT4X2 F16MAT4X3 F16MAT4X4 %token ATOMIC_UINT // combined image/sampler @@ -182,7 +186,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token STRUCT VOID WHILE %token IDENTIFIER TYPE_NAME -%token FLOATCONSTANT DOUBLECONSTANT INTCONSTANT UINTCONSTANT INT64CONSTANT UINT64CONSTANT BOOLCONSTANT +%token FLOATCONSTANT DOUBLECONSTANT INTCONSTANT UINTCONSTANT INT64CONSTANT UINT64CONSTANT BOOLCONSTANT FLOAT16CONSTANT %token LEFT_OP RIGHT_OP %token INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP %token AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN @@ -274,6 +278,12 @@ primary_expression parseContext.doubleCheck($1.loc, "double literal"); $$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true); } + | FLOAT16CONSTANT { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float literal"); + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true); +#endif + } | BOOLCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } @@ -691,6 +701,7 @@ expression $$ = $1; } | expression COMMA assignment_expression { + parseContext.samplerConstructorLocationCheck($2.loc, ",", $3); $$ = parseContext.intermediate.addComma($1, $3, $2.loc); if ($$ == 0) { parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(), $3->getCompleteString()); @@ -1050,6 +1061,15 @@ interpolation_qualifier $$.init($1.loc); $$.qualifier.nopersp = true; } + | __EXPLICITINTERPAMD { +#ifdef AMD_EXTENSIONS + parseContext.globalCheck($1.loc, "__explicitInterpAMD"); + parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + parseContext.profileRequires($1.loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + $$.init($1.loc); + $$.qualifier.explicitInterp = true; +#endif + } ; layout_qualifier @@ -1115,6 +1135,7 @@ single_type_qualifier $$ = $1; } | precision_qualifier { + parseContext.checkPrecisionQualifier($1.loc, $1.qualifier.precision); $$ = $1; } | interpolation_qualifier { @@ -1313,6 +1334,13 @@ type_specifier_nonarray $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtDouble; } + | FLOAT16_T { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; +#endif + } | INT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; @@ -1369,6 +1397,30 @@ type_specifier_nonarray $$.basicType = EbtDouble; $$.setVector(4); } + | F16VEC2 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setVector(2); +#endif + } + | F16VEC3 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setVector(3); +#endif + } + | F16VEC4 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setVector(4); +#endif + } | BVEC2 { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtBool; @@ -1585,6 +1637,102 @@ type_specifier_nonarray $$.basicType = EbtDouble; $$.setMatrix(4, 4); } + | F16MAT2 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 2); +#endif + } + | F16MAT3 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 3); +#endif + } + | F16MAT4 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 4); +#endif + } + | F16MAT2X2 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 2); +#endif + } + | F16MAT2X3 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 3); +#endif + } + | F16MAT2X4 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 4); +#endif + } + | F16MAT3X2 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 2); +#endif + } + | F16MAT3X3 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 3); +#endif + } + | F16MAT3X4 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 4); +#endif + } + | F16MAT4X2 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 2); +#endif + } + | F16MAT4X3 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 3); +#endif + } + | F16MAT4X4 { +#ifdef AMD_EXTENSIONS + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 4); +#endif + } | ATOMIC_UINT { parseContext.vulkanRemoved($1.loc, "atomic counter types"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2196,20 +2344,17 @@ precision_qualifier : 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 c8664f9d..3507c04e 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "2.7" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -62,7 +62,8 @@ /* Copy the first part of user declarations. */ -#line 41 "MachineIndependent/glslang.y" /* yacc.c:339 */ +/* Line 371 of yacc.c */ +#line 41 "glslang.y" /* Based on: @@ -87,13 +88,14 @@ Jutta Degener, 1995 using namespace glslang; -#line 91 "MachineIndependent/glslang_tab.cpp" /* yacc.c:339 */ +/* Line 371 of yacc.c */ +#line 93 "glslang_tab.cpp" -# ifndef YY_NULLPTR +# ifndef YY_NULL # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr +# define YY_NULL nullptr # else -# define YY_NULLPTR 0 +# define YY_NULL 0 # endif # endif @@ -107,9 +109,9 @@ using namespace glslang; /* In a future release of Bison, this section will be replaced by #include "glslang_tab.cpp.h". */ -#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -/* Debug traces. */ +#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED +# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED +/* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif @@ -117,287 +119,306 @@ using namespace glslang; extern int yydebug; #endif -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - ATTRIBUTE = 258, - VARYING = 259, - CONST = 260, - BOOL = 261, - FLOAT = 262, - DOUBLE = 263, - INT = 264, - UINT = 265, - INT64_T = 266, - UINT64_T = 267, - BREAK = 268, - CONTINUE = 269, - DO = 270, - ELSE = 271, - FOR = 272, - IF = 273, - DISCARD = 274, - RETURN = 275, - SWITCH = 276, - CASE = 277, - DEFAULT = 278, - SUBROUTINE = 279, - BVEC2 = 280, - BVEC3 = 281, - BVEC4 = 282, - IVEC2 = 283, - IVEC3 = 284, - IVEC4 = 285, - I64VEC2 = 286, - I64VEC3 = 287, - I64VEC4 = 288, - UVEC2 = 289, - UVEC3 = 290, - UVEC4 = 291, - U64VEC2 = 292, - U64VEC3 = 293, - U64VEC4 = 294, - VEC2 = 295, - VEC3 = 296, - VEC4 = 297, - MAT2 = 298, - MAT3 = 299, - MAT4 = 300, - CENTROID = 301, - IN = 302, - OUT = 303, - INOUT = 304, - UNIFORM = 305, - PATCH = 306, - SAMPLE = 307, - BUFFER = 308, - SHARED = 309, - COHERENT = 310, - VOLATILE = 311, - RESTRICT = 312, - READONLY = 313, - WRITEONLY = 314, - DVEC2 = 315, - DVEC3 = 316, - DVEC4 = 317, - DMAT2 = 318, - DMAT3 = 319, - DMAT4 = 320, - NOPERSPECTIVE = 321, - FLAT = 322, - SMOOTH = 323, - LAYOUT = 324, - MAT2X2 = 325, - MAT2X3 = 326, - MAT2X4 = 327, - MAT3X2 = 328, - MAT3X3 = 329, - MAT3X4 = 330, - MAT4X2 = 331, - MAT4X3 = 332, - MAT4X4 = 333, - DMAT2X2 = 334, - DMAT2X3 = 335, - DMAT2X4 = 336, - DMAT3X2 = 337, - DMAT3X3 = 338, - DMAT3X4 = 339, - DMAT4X2 = 340, - DMAT4X3 = 341, - DMAT4X4 = 342, - ATOMIC_UINT = 343, - SAMPLER1D = 344, - SAMPLER2D = 345, - SAMPLER3D = 346, - SAMPLERCUBE = 347, - SAMPLER1DSHADOW = 348, - SAMPLER2DSHADOW = 349, - SAMPLERCUBESHADOW = 350, - SAMPLER1DARRAY = 351, - SAMPLER2DARRAY = 352, - SAMPLER1DARRAYSHADOW = 353, - SAMPLER2DARRAYSHADOW = 354, - ISAMPLER1D = 355, - ISAMPLER2D = 356, - ISAMPLER3D = 357, - ISAMPLERCUBE = 358, - ISAMPLER1DARRAY = 359, - ISAMPLER2DARRAY = 360, - USAMPLER1D = 361, - USAMPLER2D = 362, - USAMPLER3D = 363, - USAMPLERCUBE = 364, - USAMPLER1DARRAY = 365, - USAMPLER2DARRAY = 366, - SAMPLER2DRECT = 367, - SAMPLER2DRECTSHADOW = 368, - ISAMPLER2DRECT = 369, - USAMPLER2DRECT = 370, - SAMPLERBUFFER = 371, - ISAMPLERBUFFER = 372, - USAMPLERBUFFER = 373, - SAMPLERCUBEARRAY = 374, - SAMPLERCUBEARRAYSHADOW = 375, - ISAMPLERCUBEARRAY = 376, - USAMPLERCUBEARRAY = 377, - SAMPLER2DMS = 378, - ISAMPLER2DMS = 379, - USAMPLER2DMS = 380, - SAMPLER2DMSARRAY = 381, - ISAMPLER2DMSARRAY = 382, - USAMPLER2DMSARRAY = 383, - SAMPLEREXTERNALOES = 384, - SAMPLER = 385, - SAMPLERSHADOW = 386, - TEXTURE1D = 387, - TEXTURE2D = 388, - TEXTURE3D = 389, - TEXTURECUBE = 390, - TEXTURE1DARRAY = 391, - TEXTURE2DARRAY = 392, - ITEXTURE1D = 393, - ITEXTURE2D = 394, - ITEXTURE3D = 395, - ITEXTURECUBE = 396, - ITEXTURE1DARRAY = 397, - ITEXTURE2DARRAY = 398, - UTEXTURE1D = 399, - UTEXTURE2D = 400, - UTEXTURE3D = 401, - UTEXTURECUBE = 402, - UTEXTURE1DARRAY = 403, - UTEXTURE2DARRAY = 404, - TEXTURE2DRECT = 405, - ITEXTURE2DRECT = 406, - UTEXTURE2DRECT = 407, - TEXTUREBUFFER = 408, - ITEXTUREBUFFER = 409, - UTEXTUREBUFFER = 410, - TEXTURECUBEARRAY = 411, - ITEXTURECUBEARRAY = 412, - UTEXTURECUBEARRAY = 413, - TEXTURE2DMS = 414, - ITEXTURE2DMS = 415, - UTEXTURE2DMS = 416, - TEXTURE2DMSARRAY = 417, - ITEXTURE2DMSARRAY = 418, - UTEXTURE2DMSARRAY = 419, - SUBPASSINPUT = 420, - SUBPASSINPUTMS = 421, - ISUBPASSINPUT = 422, - ISUBPASSINPUTMS = 423, - USUBPASSINPUT = 424, - USUBPASSINPUTMS = 425, - IMAGE1D = 426, - IIMAGE1D = 427, - UIMAGE1D = 428, - IMAGE2D = 429, - IIMAGE2D = 430, - UIMAGE2D = 431, - IMAGE3D = 432, - IIMAGE3D = 433, - UIMAGE3D = 434, - IMAGE2DRECT = 435, - IIMAGE2DRECT = 436, - UIMAGE2DRECT = 437, - IMAGECUBE = 438, - IIMAGECUBE = 439, - UIMAGECUBE = 440, - IMAGEBUFFER = 441, - IIMAGEBUFFER = 442, - UIMAGEBUFFER = 443, - IMAGE1DARRAY = 444, - IIMAGE1DARRAY = 445, - UIMAGE1DARRAY = 446, - IMAGE2DARRAY = 447, - IIMAGE2DARRAY = 448, - UIMAGE2DARRAY = 449, - IMAGECUBEARRAY = 450, - IIMAGECUBEARRAY = 451, - UIMAGECUBEARRAY = 452, - IMAGE2DMS = 453, - IIMAGE2DMS = 454, - UIMAGE2DMS = 455, - IMAGE2DMSARRAY = 456, - IIMAGE2DMSARRAY = 457, - UIMAGE2DMSARRAY = 458, - STRUCT = 459, - VOID = 460, - WHILE = 461, - IDENTIFIER = 462, - TYPE_NAME = 463, - FLOATCONSTANT = 464, - DOUBLECONSTANT = 465, - INTCONSTANT = 466, - UINTCONSTANT = 467, - INT64CONSTANT = 468, - UINT64CONSTANT = 469, - BOOLCONSTANT = 470, - LEFT_OP = 471, - RIGHT_OP = 472, - INC_OP = 473, - DEC_OP = 474, - LE_OP = 475, - GE_OP = 476, - EQ_OP = 477, - NE_OP = 478, - AND_OP = 479, - OR_OP = 480, - XOR_OP = 481, - MUL_ASSIGN = 482, - DIV_ASSIGN = 483, - ADD_ASSIGN = 484, - MOD_ASSIGN = 485, - LEFT_ASSIGN = 486, - RIGHT_ASSIGN = 487, - AND_ASSIGN = 488, - XOR_ASSIGN = 489, - OR_ASSIGN = 490, - SUB_ASSIGN = 491, - LEFT_PAREN = 492, - RIGHT_PAREN = 493, - LEFT_BRACKET = 494, - RIGHT_BRACKET = 495, - LEFT_BRACE = 496, - RIGHT_BRACE = 497, - DOT = 498, - COMMA = 499, - COLON = 500, - EQUAL = 501, - SEMICOLON = 502, - BANG = 503, - DASH = 504, - TILDE = 505, - PLUS = 506, - STAR = 507, - SLASH = 508, - PERCENT = 509, - LEFT_ANGLE = 510, - RIGHT_ANGLE = 511, - VERTICAL_BAR = 512, - CARET = 513, - AMPERSAND = 514, - QUESTION = 515, - INVARIANT = 516, - PRECISE = 517, - HIGH_PRECISION = 518, - MEDIUM_PRECISION = 519, - LOW_PRECISION = 520, - PRECISION = 521, - PACKED = 522, - RESOURCE = 523, - SUPERP = 524 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ATTRIBUTE = 258, + VARYING = 259, + CONST = 260, + BOOL = 261, + FLOAT = 262, + DOUBLE = 263, + INT = 264, + UINT = 265, + INT64_T = 266, + UINT64_T = 267, + FLOAT16_T = 268, + BREAK = 269, + CONTINUE = 270, + DO = 271, + ELSE = 272, + FOR = 273, + IF = 274, + DISCARD = 275, + RETURN = 276, + SWITCH = 277, + CASE = 278, + DEFAULT = 279, + SUBROUTINE = 280, + BVEC2 = 281, + BVEC3 = 282, + BVEC4 = 283, + IVEC2 = 284, + IVEC3 = 285, + IVEC4 = 286, + I64VEC2 = 287, + I64VEC3 = 288, + I64VEC4 = 289, + UVEC2 = 290, + UVEC3 = 291, + UVEC4 = 292, + U64VEC2 = 293, + U64VEC3 = 294, + U64VEC4 = 295, + VEC2 = 296, + VEC3 = 297, + VEC4 = 298, + MAT2 = 299, + MAT3 = 300, + MAT4 = 301, + CENTROID = 302, + IN = 303, + OUT = 304, + INOUT = 305, + UNIFORM = 306, + PATCH = 307, + SAMPLE = 308, + BUFFER = 309, + SHARED = 310, + COHERENT = 311, + VOLATILE = 312, + RESTRICT = 313, + READONLY = 314, + WRITEONLY = 315, + DVEC2 = 316, + DVEC3 = 317, + DVEC4 = 318, + DMAT2 = 319, + DMAT3 = 320, + DMAT4 = 321, + F16VEC2 = 322, + F16VEC3 = 323, + F16VEC4 = 324, + F16MAT2 = 325, + F16MAT3 = 326, + F16MAT4 = 327, + NOPERSPECTIVE = 328, + FLAT = 329, + SMOOTH = 330, + LAYOUT = 331, + __EXPLICITINTERPAMD = 332, + MAT2X2 = 333, + MAT2X3 = 334, + MAT2X4 = 335, + MAT3X2 = 336, + MAT3X3 = 337, + MAT3X4 = 338, + MAT4X2 = 339, + MAT4X3 = 340, + MAT4X4 = 341, + DMAT2X2 = 342, + DMAT2X3 = 343, + DMAT2X4 = 344, + DMAT3X2 = 345, + DMAT3X3 = 346, + DMAT3X4 = 347, + DMAT4X2 = 348, + DMAT4X3 = 349, + DMAT4X4 = 350, + F16MAT2X2 = 351, + F16MAT2X3 = 352, + F16MAT2X4 = 353, + F16MAT3X2 = 354, + F16MAT3X3 = 355, + F16MAT3X4 = 356, + F16MAT4X2 = 357, + F16MAT4X3 = 358, + F16MAT4X4 = 359, + ATOMIC_UINT = 360, + SAMPLER1D = 361, + SAMPLER2D = 362, + SAMPLER3D = 363, + SAMPLERCUBE = 364, + SAMPLER1DSHADOW = 365, + SAMPLER2DSHADOW = 366, + SAMPLERCUBESHADOW = 367, + SAMPLER1DARRAY = 368, + SAMPLER2DARRAY = 369, + SAMPLER1DARRAYSHADOW = 370, + SAMPLER2DARRAYSHADOW = 371, + ISAMPLER1D = 372, + ISAMPLER2D = 373, + ISAMPLER3D = 374, + ISAMPLERCUBE = 375, + ISAMPLER1DARRAY = 376, + ISAMPLER2DARRAY = 377, + USAMPLER1D = 378, + USAMPLER2D = 379, + USAMPLER3D = 380, + USAMPLERCUBE = 381, + USAMPLER1DARRAY = 382, + USAMPLER2DARRAY = 383, + SAMPLER2DRECT = 384, + SAMPLER2DRECTSHADOW = 385, + ISAMPLER2DRECT = 386, + USAMPLER2DRECT = 387, + SAMPLERBUFFER = 388, + ISAMPLERBUFFER = 389, + USAMPLERBUFFER = 390, + SAMPLERCUBEARRAY = 391, + SAMPLERCUBEARRAYSHADOW = 392, + ISAMPLERCUBEARRAY = 393, + USAMPLERCUBEARRAY = 394, + SAMPLER2DMS = 395, + ISAMPLER2DMS = 396, + USAMPLER2DMS = 397, + SAMPLER2DMSARRAY = 398, + ISAMPLER2DMSARRAY = 399, + USAMPLER2DMSARRAY = 400, + SAMPLEREXTERNALOES = 401, + SAMPLER = 402, + SAMPLERSHADOW = 403, + TEXTURE1D = 404, + TEXTURE2D = 405, + TEXTURE3D = 406, + TEXTURECUBE = 407, + TEXTURE1DARRAY = 408, + TEXTURE2DARRAY = 409, + ITEXTURE1D = 410, + ITEXTURE2D = 411, + ITEXTURE3D = 412, + ITEXTURECUBE = 413, + ITEXTURE1DARRAY = 414, + ITEXTURE2DARRAY = 415, + UTEXTURE1D = 416, + UTEXTURE2D = 417, + UTEXTURE3D = 418, + UTEXTURECUBE = 419, + UTEXTURE1DARRAY = 420, + UTEXTURE2DARRAY = 421, + TEXTURE2DRECT = 422, + ITEXTURE2DRECT = 423, + UTEXTURE2DRECT = 424, + TEXTUREBUFFER = 425, + ITEXTUREBUFFER = 426, + UTEXTUREBUFFER = 427, + TEXTURECUBEARRAY = 428, + ITEXTURECUBEARRAY = 429, + UTEXTURECUBEARRAY = 430, + TEXTURE2DMS = 431, + ITEXTURE2DMS = 432, + UTEXTURE2DMS = 433, + TEXTURE2DMSARRAY = 434, + ITEXTURE2DMSARRAY = 435, + UTEXTURE2DMSARRAY = 436, + SUBPASSINPUT = 437, + SUBPASSINPUTMS = 438, + ISUBPASSINPUT = 439, + ISUBPASSINPUTMS = 440, + USUBPASSINPUT = 441, + USUBPASSINPUTMS = 442, + IMAGE1D = 443, + IIMAGE1D = 444, + UIMAGE1D = 445, + IMAGE2D = 446, + IIMAGE2D = 447, + UIMAGE2D = 448, + IMAGE3D = 449, + IIMAGE3D = 450, + UIMAGE3D = 451, + IMAGE2DRECT = 452, + IIMAGE2DRECT = 453, + UIMAGE2DRECT = 454, + IMAGECUBE = 455, + IIMAGECUBE = 456, + UIMAGECUBE = 457, + IMAGEBUFFER = 458, + IIMAGEBUFFER = 459, + UIMAGEBUFFER = 460, + IMAGE1DARRAY = 461, + IIMAGE1DARRAY = 462, + UIMAGE1DARRAY = 463, + IMAGE2DARRAY = 464, + IIMAGE2DARRAY = 465, + UIMAGE2DARRAY = 466, + IMAGECUBEARRAY = 467, + IIMAGECUBEARRAY = 468, + UIMAGECUBEARRAY = 469, + IMAGE2DMS = 470, + IIMAGE2DMS = 471, + UIMAGE2DMS = 472, + IMAGE2DMSARRAY = 473, + IIMAGE2DMSARRAY = 474, + UIMAGE2DMSARRAY = 475, + STRUCT = 476, + VOID = 477, + WHILE = 478, + IDENTIFIER = 479, + TYPE_NAME = 480, + FLOATCONSTANT = 481, + DOUBLECONSTANT = 482, + INTCONSTANT = 483, + UINTCONSTANT = 484, + INT64CONSTANT = 485, + UINT64CONSTANT = 486, + BOOLCONSTANT = 487, + FLOAT16CONSTANT = 488, + LEFT_OP = 489, + RIGHT_OP = 490, + INC_OP = 491, + DEC_OP = 492, + LE_OP = 493, + GE_OP = 494, + EQ_OP = 495, + NE_OP = 496, + AND_OP = 497, + OR_OP = 498, + XOR_OP = 499, + MUL_ASSIGN = 500, + DIV_ASSIGN = 501, + ADD_ASSIGN = 502, + MOD_ASSIGN = 503, + LEFT_ASSIGN = 504, + RIGHT_ASSIGN = 505, + AND_ASSIGN = 506, + XOR_ASSIGN = 507, + OR_ASSIGN = 508, + SUB_ASSIGN = 509, + LEFT_PAREN = 510, + RIGHT_PAREN = 511, + LEFT_BRACKET = 512, + RIGHT_BRACKET = 513, + LEFT_BRACE = 514, + RIGHT_BRACE = 515, + DOT = 516, + COMMA = 517, + COLON = 518, + EQUAL = 519, + SEMICOLON = 520, + BANG = 521, + DASH = 522, + TILDE = 523, + PLUS = 524, + STAR = 525, + SLASH = 526, + PERCENT = 527, + LEFT_ANGLE = 528, + RIGHT_ANGLE = 529, + VERTICAL_BAR = 530, + CARET = 531, + AMPERSAND = 532, + QUESTION = 533, + INVARIANT = 534, + PRECISE = 535, + HIGH_PRECISION = 536, + MEDIUM_PRECISION = 537, + LOW_PRECISION = 538, + PRECISION = 539, + PACKED = 540, + RESOURCE = 541, + SUPERP = 542 + }; #endif -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE { -#line 66 "MachineIndependent/glslang.y" /* yacc.c:355 */ +/* Line 387 of yacc.c */ +#line 66 "glslang.y" struct { glslang::TSourceLoc loc; @@ -431,22 +452,35 @@ union YYSTYPE }; } interm; -#line 435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ -}; -typedef union YYSTYPE YYSTYPE; +/* Line 387 of yacc.c */ +#line 458 "glslang_tab.cpp" +} YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif - +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus int yyparse (glslang::TParseContext* pParseContext); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ -#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ +#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 100 "MachineIndependent/glslang.y" /* yacc.c:358 */ +/* Line 390 of yacc.c */ +#line 100 "glslang.y" /* windows only pragma */ @@ -462,7 +496,8 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +/* Line 390 of yacc.c */ +#line 501 "glslang_tab.cpp" #ifdef short # undef short @@ -476,8 +511,11 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#else +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; +#else +typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -497,7 +535,8 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -519,33 +558,6 @@ typedef short int yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -553,25 +565,23 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(N) (N) #else -# define YY_INITIAL_VALUE(Value) Value +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; #endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END +{ + return yyi; +} #endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - #if ! defined yyoverflow || YYERROR_VERBOSE @@ -590,7 +600,8 @@ typedef short int yytype_int16; # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -602,8 +613,8 @@ typedef short int yytype_int16; # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -619,7 +630,7 @@ typedef short int yytype_int16; # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -627,13 +638,15 @@ typedef short int yytype_int16; # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -643,7 +656,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -668,16 +681,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) #endif @@ -696,35 +709,33 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (0) + while (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 248 +#define YYFINAL 265 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 5943 +#define YYLAST 6373 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 270 +#define YYNTOKENS 288 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 100 /* YYNRULES -- Number of rules. */ -#define YYNRULES 421 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 553 +#define YYNRULES 439 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 571 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 524 +#define YYMAXUTOK 542 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -779,56 +790,224 @@ static const yytype_uint16 yytranslate[] = 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269 + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 7, 9, 11, 13, 15, 17, + 19, 21, 23, 27, 29, 34, 36, 40, 43, 46, + 48, 50, 52, 55, 58, 61, 63, 66, 70, 73, + 75, 77, 79, 82, 85, 88, 90, 92, 94, 96, + 98, 102, 106, 110, 112, 116, 120, 122, 126, 130, + 132, 136, 140, 144, 148, 150, 154, 158, 160, 164, + 166, 170, 172, 176, 178, 182, 184, 188, 190, 194, + 196, 197, 204, 206, 210, 212, 214, 216, 218, 220, + 222, 224, 226, 228, 230, 232, 234, 238, 240, 243, + 246, 251, 254, 258, 263, 266, 270, 275, 276, 283, + 286, 290, 293, 295, 297, 300, 304, 308, 311, 315, + 318, 320, 323, 325, 327, 329, 333, 338, 345, 351, + 353, 356, 360, 366, 371, 373, 376, 378, 380, 382, + 384, 386, 391, 393, 397, 399, 403, 405, 407, 409, + 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, + 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, + 452, 454, 456, 458, 460, 465, 467, 471, 473, 476, + 479, 483, 487, 492, 494, 496, 498, 500, 502, 504, + 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, + 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, + 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, + 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, + 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, + 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, + 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, + 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, + 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, + 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, + 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, + 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, + 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, + 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, + 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, + 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, + 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, + 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, + 866, 868, 870, 872, 873, 880, 881, 887, 889, 892, + 896, 901, 903, 907, 909, 912, 914, 918, 923, 925, + 929, 931, 933, 935, 937, 939, 941, 943, 945, 947, + 949, 952, 953, 954, 960, 962, 964, 965, 968, 969, + 972, 975, 979, 981, 984, 986, 989, 995, 999, 1001, + 1003, 1008, 1009, 1018, 1019, 1021, 1025, 1028, 1029, 1036, + 1037, 1046, 1047, 1055, 1057, 1059, 1061, 1062, 1065, 1069, + 1072, 1075, 1078, 1082, 1085, 1087, 1090, 1092, 1094, 1095 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 384, 0, -1, 224, -1, 289, -1, 228, -1, 229, + -1, 230, -1, 231, -1, 226, -1, 227, -1, 233, + -1, 232, -1, 255, 317, 256, -1, 290, -1, 291, + 257, 292, 258, -1, 293, -1, 291, 261, 224, -1, + 291, 236, -1, 291, 237, -1, 317, -1, 294, -1, + 295, -1, 297, 256, -1, 296, 256, -1, 298, 222, + -1, 298, -1, 298, 315, -1, 297, 262, 315, -1, + 299, 255, -1, 343, -1, 291, -1, 291, -1, 236, + 300, -1, 237, 300, -1, 301, 300, -1, 269, -1, + 267, -1, 266, -1, 268, -1, 300, -1, 302, 270, + 300, -1, 302, 271, 300, -1, 302, 272, 300, -1, + 302, -1, 303, 269, 302, -1, 303, 267, 302, -1, + 303, -1, 304, 234, 303, -1, 304, 235, 303, -1, + 304, -1, 305, 273, 304, -1, 305, 274, 304, -1, + 305, 238, 304, -1, 305, 239, 304, -1, 305, -1, + 306, 240, 305, -1, 306, 241, 305, -1, 306, -1, + 307, 277, 306, -1, 307, -1, 308, 276, 307, -1, + 308, -1, 309, 275, 308, -1, 309, -1, 310, 242, + 309, -1, 310, -1, 311, 244, 310, -1, 311, -1, + 312, 243, 311, -1, 312, -1, -1, 312, 278, 314, + 317, 263, 315, -1, 313, -1, 300, 316, 315, -1, + 264, -1, 245, -1, 246, -1, 248, -1, 247, -1, + 254, -1, 249, -1, 250, -1, 251, -1, 252, -1, + 253, -1, 315, -1, 317, 262, 315, -1, 313, -1, + 323, 265, -1, 330, 265, -1, 284, 346, 343, 265, + -1, 320, 265, -1, 320, 224, 265, -1, 320, 224, + 344, 265, -1, 339, 265, -1, 339, 224, 265, -1, + 339, 224, 322, 265, -1, -1, 339, 224, 259, 321, + 350, 260, -1, 262, 224, -1, 322, 262, 224, -1, + 324, 256, -1, 326, -1, 325, -1, 326, 328, -1, + 325, 262, 328, -1, 332, 224, 255, -1, 343, 224, + -1, 343, 224, 344, -1, 339, 327, -1, 327, -1, + 339, 329, -1, 329, -1, 343, -1, 331, -1, 330, + 262, 224, -1, 330, 262, 224, 344, -1, 330, 262, + 224, 344, 264, 354, -1, 330, 262, 224, 264, 354, + -1, 332, -1, 332, 224, -1, 332, 224, 344, -1, + 332, 224, 344, 264, 354, -1, 332, 224, 264, 354, + -1, 343, -1, 339, 343, -1, 279, -1, 75, -1, + 74, -1, 73, -1, 77, -1, 76, 255, 336, 256, + -1, 337, -1, 336, 262, 337, -1, 224, -1, 224, + 264, 318, -1, 55, -1, 280, -1, 340, -1, 339, + 340, -1, 341, -1, 335, -1, 346, -1, 334, -1, + 333, -1, 338, -1, 5, -1, 3, -1, 4, -1, + 50, -1, 48, -1, 49, -1, 47, -1, 52, -1, + 53, -1, 51, -1, 54, -1, 55, -1, 56, -1, + 57, -1, 58, -1, 59, -1, 60, -1, 25, -1, + 25, 255, 342, 256, -1, 225, -1, 342, 262, 225, + -1, 345, -1, 345, 344, -1, 257, 258, -1, 257, + 313, 258, -1, 344, 257, 258, -1, 344, 257, 313, + 258, -1, 222, -1, 7, -1, 8, -1, 13, -1, + 9, -1, 10, -1, 11, -1, 12, -1, 6, -1, + 41, -1, 42, -1, 43, -1, 61, -1, 62, -1, + 63, -1, 67, -1, 68, -1, 69, -1, 26, -1, + 27, -1, 28, -1, 29, -1, 30, -1, 31, -1, + 32, -1, 33, -1, 34, -1, 35, -1, 36, -1, + 37, -1, 38, -1, 39, -1, 40, -1, 44, -1, + 45, -1, 46, -1, 78, -1, 79, -1, 80, -1, + 81, -1, 82, -1, 83, -1, 84, -1, 85, -1, + 86, -1, 64, -1, 65, -1, 66, -1, 87, -1, + 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, + 93, -1, 94, -1, 95, -1, 70, -1, 71, -1, + 72, -1, 96, -1, 97, -1, 98, -1, 99, -1, + 100, -1, 101, -1, 102, -1, 103, -1, 104, -1, + 105, -1, 106, -1, 107, -1, 108, -1, 109, -1, + 110, -1, 111, -1, 112, -1, 113, -1, 114, -1, + 115, -1, 116, -1, 136, -1, 137, -1, 117, -1, + 118, -1, 119, -1, 120, -1, 121, -1, 122, -1, + 138, -1, 123, -1, 124, -1, 125, -1, 126, -1, + 127, -1, 128, -1, 139, -1, 129, -1, 130, -1, + 131, -1, 132, -1, 133, -1, 134, -1, 135, -1, + 140, -1, 141, -1, 142, -1, 143, -1, 144, -1, + 145, -1, 147, -1, 148, -1, 149, -1, 150, -1, + 151, -1, 152, -1, 153, -1, 154, -1, 173, -1, + 155, -1, 156, -1, 157, -1, 158, -1, 159, -1, + 160, -1, 174, -1, 161, -1, 162, -1, 163, -1, + 164, -1, 165, -1, 166, -1, 175, -1, 167, -1, + 168, -1, 169, -1, 170, -1, 171, -1, 172, -1, + 176, -1, 177, -1, 178, -1, 179, -1, 180, -1, + 181, -1, 188, -1, 189, -1, 190, -1, 191, -1, + 192, -1, 193, -1, 194, -1, 195, -1, 196, -1, + 197, -1, 198, -1, 199, -1, 200, -1, 201, -1, + 202, -1, 203, -1, 204, -1, 205, -1, 206, -1, + 207, -1, 208, -1, 209, -1, 210, -1, 211, -1, + 212, -1, 213, -1, 214, -1, 215, -1, 216, -1, + 217, -1, 218, -1, 219, -1, 220, -1, 146, -1, + 182, -1, 183, -1, 184, -1, 185, -1, 186, -1, + 187, -1, 347, -1, 225, -1, 281, -1, 282, -1, + 283, -1, -1, 221, 224, 259, 348, 350, 260, -1, + -1, 221, 259, 349, 350, 260, -1, 351, -1, 350, + 351, -1, 343, 352, 265, -1, 339, 343, 352, 265, + -1, 353, -1, 352, 262, 353, -1, 224, -1, 224, + 344, -1, 315, -1, 259, 355, 260, -1, 259, 355, + 262, 260, -1, 354, -1, 355, 262, 354, -1, 319, + -1, 359, -1, 358, -1, 356, -1, 368, -1, 369, + -1, 372, -1, 375, -1, 376, -1, 383, -1, 259, + 260, -1, -1, -1, 259, 360, 367, 361, 260, -1, + 366, -1, 358, -1, -1, 364, 359, -1, -1, 365, + 358, -1, 259, 260, -1, 259, 367, 260, -1, 357, + -1, 367, 357, -1, 265, -1, 317, 265, -1, 19, + 255, 317, 256, 370, -1, 363, 17, 363, -1, 363, + -1, 317, -1, 332, 224, 264, 354, -1, -1, 22, + 255, 317, 256, 373, 259, 374, 260, -1, -1, 367, + -1, 23, 317, 263, -1, 24, 263, -1, -1, 223, + 255, 377, 371, 256, 362, -1, -1, 16, 378, 357, + 223, 255, 317, 256, 265, -1, -1, 18, 255, 379, + 380, 382, 256, 362, -1, 368, -1, 356, -1, 371, + -1, -1, 381, 265, -1, 381, 265, 317, -1, 15, + 265, -1, 14, 265, -1, 21, 265, -1, 21, 317, + 265, -1, 20, 265, -1, 385, -1, 384, 385, -1, + 386, -1, 319, -1, -1, 323, 387, 366, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 246, 246, 252, 255, 258, 262, 266, 270, 273, - 277, 280, 288, 291, 294, 297, 300, 305, 313, 320, - 327, 333, 337, 344, 347, 353, 360, 370, 378, 383, - 413, 419, 423, 427, 447, 448, 449, 450, 456, 457, - 462, 467, 476, 477, 482, 490, 491, 497, 506, 507, - 512, 517, 522, 530, 531, 539, 550, 551, 560, 561, - 570, 571, 580, 581, 589, 590, 598, 599, 607, 608, - 608, 626, 627, 642, 646, 650, 654, 659, 663, 667, - 671, 675, 679, 683, 690, 693, 703, 710, 715, 720, - 728, 732, 736, 740, 745, 750, 759, 759, 770, 774, - 781, 788, 791, 798, 806, 826, 844, 859, 882, 893, - 903, 913, 923, 932, 935, 939, 943, 948, 956, 961, - 966, 971, 976, 985, 996, 1023, 1032, 1039, 1046, 1056, - 1062, 1065, 1072, 1076, 1080, 1088, 1097, 1100, 1111, 1114, - 1117, 1120, 1124, 1128, 1135, 1139, 1151, 1165, 1170, 1176, - 1182, 1189, 1195, 1200, 1205, 1210, 1217, 1221, 1225, 1229, - 1233, 1237, 1243, 1255, 1258, 1263, 1267, 1276, 1281, 1289, - 1293, 1303, 1307, 1311, 1316, 1320, 1325, 1330, 1335, 1339, - 1344, 1349, 1354, 1360, 1366, 1372, 1377, 1382, 1387, 1392, - 1397, 1402, 1408, 1414, 1420, 1426, 1432, 1438, 1444, 1450, - 1456, 1461, 1466, 1471, 1476, 1481, 1486, 1491, 1496, 1501, - 1506, 1511, 1516, 1522, 1528, 1534, 1540, 1546, 1552, 1558, - 1564, 1570, 1576, 1582, 1588, 1593, 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, 2139, 2145, 2151, 2157, 2163, 2169, - 2175, 2180, 2196, 2202, 2208, 2217, 2217, 2228, 2228, 2238, - 2241, 2254, 2272, 2296, 2300, 2306, 2311, 2322, 2325, 2331, - 2340, 2343, 2349, 2353, 2354, 2360, 2361, 2362, 2363, 2364, - 2365, 2366, 2370, 2371, 2375, 2371, 2387, 2388, 2392, 2392, - 2399, 2399, 2413, 2416, 2424, 2432, 2443, 2444, 2448, 2455, - 2459, 2467, 2471, 2484, 2484, 2504, 2507, 2513, 2525, 2537, - 2537, 2552, 2552, 2568, 2568, 2589, 2592, 2598, 2601, 2607, - 2611, 2618, 2623, 2628, 2635, 2638, 2647, 2651, 2658, 2661, - 2667, 2667 + 0, 250, 250, 256, 259, 262, 266, 270, 274, 277, + 281, 287, 290, 298, 301, 304, 307, 310, 315, 323, + 330, 337, 343, 347, 354, 357, 363, 370, 380, 388, + 393, 423, 429, 433, 437, 457, 458, 459, 460, 466, + 467, 472, 477, 486, 487, 492, 500, 501, 507, 516, + 517, 522, 527, 532, 540, 541, 549, 560, 561, 570, + 571, 580, 581, 590, 591, 599, 600, 608, 609, 617, + 618, 618, 636, 637, 652, 656, 660, 664, 669, 673, + 677, 681, 685, 689, 693, 700, 703, 714, 721, 726, + 731, 739, 743, 747, 751, 756, 761, 770, 770, 781, + 785, 792, 799, 802, 809, 817, 837, 855, 870, 893, + 904, 914, 924, 934, 943, 946, 950, 954, 959, 967, + 972, 977, 982, 987, 996, 1007, 1034, 1043, 1050, 1057, + 1064, 1076, 1082, 1085, 1092, 1096, 1100, 1108, 1117, 1120, + 1131, 1134, 1137, 1141, 1145, 1149, 1156, 1160, 1172, 1186, + 1191, 1197, 1203, 1210, 1216, 1221, 1226, 1231, 1238, 1242, + 1246, 1250, 1254, 1258, 1264, 1276, 1279, 1284, 1288, 1297, + 1302, 1310, 1314, 1324, 1328, 1332, 1337, 1344, 1348, 1353, + 1358, 1363, 1367, 1372, 1377, 1382, 1388, 1394, 1400, 1408, + 1416, 1424, 1429, 1434, 1439, 1444, 1449, 1454, 1460, 1466, + 1472, 1478, 1484, 1490, 1496, 1502, 1508, 1513, 1518, 1523, + 1528, 1533, 1538, 1543, 1548, 1553, 1558, 1563, 1568, 1574, + 1580, 1586, 1592, 1598, 1604, 1610, 1616, 1622, 1628, 1634, + 1640, 1648, 1656, 1664, 1672, 1680, 1688, 1696, 1704, 1712, + 1720, 1728, 1736, 1741, 1746, 1751, 1756, 1761, 1766, 1771, + 1776, 1781, 1786, 1791, 1796, 1801, 1806, 1811, 1816, 1821, + 1826, 1831, 1836, 1841, 1846, 1851, 1856, 1861, 1866, 1871, + 1876, 1881, 1886, 1891, 1896, 1901, 1906, 1911, 1916, 1921, + 1926, 1931, 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971, + 1976, 1981, 1986, 1991, 1996, 2001, 2006, 2011, 2016, 2021, + 2026, 2031, 2036, 2041, 2046, 2051, 2056, 2061, 2066, 2071, + 2076, 2081, 2086, 2091, 2096, 2101, 2106, 2111, 2116, 2121, + 2126, 2131, 2136, 2141, 2146, 2151, 2156, 2161, 2166, 2171, + 2176, 2181, 2186, 2191, 2196, 2201, 2206, 2211, 2216, 2221, + 2226, 2231, 2236, 2241, 2246, 2251, 2256, 2261, 2266, 2271, + 2276, 2281, 2287, 2293, 2299, 2305, 2311, 2317, 2323, 2328, + 2344, 2349, 2354, 2362, 2362, 2373, 2373, 2383, 2386, 2399, + 2417, 2441, 2445, 2451, 2456, 2467, 2470, 2476, 2485, 2488, + 2494, 2498, 2499, 2505, 2506, 2507, 2508, 2509, 2510, 2511, + 2515, 2516, 2520, 2516, 2532, 2533, 2537, 2537, 2544, 2544, + 2558, 2561, 2569, 2577, 2588, 2589, 2593, 2600, 2604, 2612, + 2616, 2629, 2629, 2649, 2652, 2658, 2670, 2682, 2682, 2697, + 2697, 2713, 2713, 2734, 2737, 2743, 2746, 2752, 2756, 2763, + 2768, 2773, 2780, 2783, 2792, 2796, 2803, 2806, 2812, 2812 }; #endif @@ -838,62 +1017,66 @@ static const yytype_uint16 yyrline[] = static const char *const yytname[] = { "$end", "error", "$undefined", "ATTRIBUTE", "VARYING", "CONST", "BOOL", - "FLOAT", "DOUBLE", "INT", "UINT", "INT64_T", "UINT64_T", "BREAK", - "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "SWITCH", - "CASE", "DEFAULT", "SUBROUTINE", "BVEC2", "BVEC3", "BVEC4", "IVEC2", - "IVEC3", "IVEC4", "I64VEC2", "I64VEC3", "I64VEC4", "UVEC2", "UVEC3", - "UVEC4", "U64VEC2", "U64VEC3", "U64VEC4", "VEC2", "VEC3", "VEC4", "MAT2", - "MAT3", "MAT4", "CENTROID", "IN", "OUT", "INOUT", "UNIFORM", "PATCH", - "SAMPLE", "BUFFER", "SHARED", "COHERENT", "VOLATILE", "RESTRICT", - "READONLY", "WRITEONLY", "DVEC2", "DVEC3", "DVEC4", "DMAT2", "DMAT3", - "DMAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT", "MAT2X2", "MAT2X3", - "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", - "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", - "DMAT4X2", "DMAT4X3", "DMAT4X4", "ATOMIC_UINT", "SAMPLER1D", "SAMPLER2D", - "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW", "SAMPLER2DSHADOW", - "SAMPLERCUBESHADOW", "SAMPLER1DARRAY", "SAMPLER2DARRAY", - "SAMPLER1DARRAYSHADOW", "SAMPLER2DARRAYSHADOW", "ISAMPLER1D", - "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER1DARRAY", - "ISAMPLER2DARRAY", "USAMPLER1D", "USAMPLER2D", "USAMPLER3D", - "USAMPLERCUBE", "USAMPLER1DARRAY", "USAMPLER2DARRAY", "SAMPLER2DRECT", - "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT", - "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLERCUBEARRAY", - "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", - "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", - "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", - "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D", "TEXTURE2D", "TEXTURE3D", - "TEXTURECUBE", "TEXTURE1DARRAY", "TEXTURE2DARRAY", "ITEXTURE1D", - "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", "ITEXTURE1DARRAY", - "ITEXTURE2DARRAY", "UTEXTURE1D", "UTEXTURE2D", "UTEXTURE3D", - "UTEXTURECUBE", "UTEXTURE1DARRAY", "UTEXTURE2DARRAY", "TEXTURE2DRECT", - "ITEXTURE2DRECT", "UTEXTURE2DRECT", "TEXTUREBUFFER", "ITEXTUREBUFFER", - "UTEXTUREBUFFER", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY", - "UTEXTURECUBEARRAY", "TEXTURE2DMS", "ITEXTURE2DMS", "UTEXTURE2DMS", - "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY", "UTEXTURE2DMSARRAY", - "SUBPASSINPUT", "SUBPASSINPUTMS", "ISUBPASSINPUT", "ISUBPASSINPUTMS", - "USUBPASSINPUT", "USUBPASSINPUTMS", "IMAGE1D", "IIMAGE1D", "UIMAGE1D", - "IMAGE2D", "IIMAGE2D", "UIMAGE2D", "IMAGE3D", "IIMAGE3D", "UIMAGE3D", - "IMAGE2DRECT", "IIMAGE2DRECT", "UIMAGE2DRECT", "IMAGECUBE", "IIMAGECUBE", - "UIMAGECUBE", "IMAGEBUFFER", "IIMAGEBUFFER", "UIMAGEBUFFER", - "IMAGE1DARRAY", "IIMAGE1DARRAY", "UIMAGE1DARRAY", "IMAGE2DARRAY", - "IIMAGE2DARRAY", "UIMAGE2DARRAY", "IMAGECUBEARRAY", "IIMAGECUBEARRAY", - "UIMAGECUBEARRAY", "IMAGE2DMS", "IIMAGE2DMS", "UIMAGE2DMS", - "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY", "STRUCT", "VOID", - "WHILE", "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT", "DOUBLECONSTANT", - "INTCONSTANT", "UINTCONSTANT", "INT64CONSTANT", "UINT64CONSTANT", - "BOOLCONSTANT", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", - "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", - "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", - "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", - "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", - "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", - "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", - "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND", "QUESTION", - "INVARIANT", "PRECISE", "HIGH_PRECISION", "MEDIUM_PRECISION", - "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", "SUPERP", "$accept", - "variable_identifier", "primary_expression", "postfix_expression", - "integer_expression", "function_call", "function_call_or_method", - "function_call_generic", "function_call_header_no_parameters", + "FLOAT", "DOUBLE", "INT", "UINT", "INT64_T", "UINT64_T", "FLOAT16_T", + "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", + "SWITCH", "CASE", "DEFAULT", "SUBROUTINE", "BVEC2", "BVEC3", "BVEC4", + "IVEC2", "IVEC3", "IVEC4", "I64VEC2", "I64VEC3", "I64VEC4", "UVEC2", + "UVEC3", "UVEC4", "U64VEC2", "U64VEC3", "U64VEC4", "VEC2", "VEC3", + "VEC4", "MAT2", "MAT3", "MAT4", "CENTROID", "IN", "OUT", "INOUT", + "UNIFORM", "PATCH", "SAMPLE", "BUFFER", "SHARED", "COHERENT", "VOLATILE", + "RESTRICT", "READONLY", "WRITEONLY", "DVEC2", "DVEC3", "DVEC4", "DMAT2", + "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", + "F16MAT4", "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT", + "__EXPLICITINTERPAMD", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", + "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", "DMAT2X2", "DMAT2X3", "DMAT2X4", + "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", + "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", + "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4", "ATOMIC_UINT", + "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW", + "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER1DARRAY", + "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW", "SAMPLER2DARRAYSHADOW", + "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", + "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D", "USAMPLER2D", + "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY", "USAMPLER2DARRAY", + "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", + "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", + "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", + "USAMPLERCUBEARRAY", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", + "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", + "SAMPLEREXTERNALOES", "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D", + "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE1DARRAY", + "TEXTURE2DARRAY", "ITEXTURE1D", "ITEXTURE2D", "ITEXTURE3D", + "ITEXTURECUBE", "ITEXTURE1DARRAY", "ITEXTURE2DARRAY", "UTEXTURE1D", + "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", "UTEXTURE1DARRAY", + "UTEXTURE2DARRAY", "TEXTURE2DRECT", "ITEXTURE2DRECT", "UTEXTURE2DRECT", + "TEXTUREBUFFER", "ITEXTUREBUFFER", "UTEXTUREBUFFER", "TEXTURECUBEARRAY", + "ITEXTURECUBEARRAY", "UTEXTURECUBEARRAY", "TEXTURE2DMS", "ITEXTURE2DMS", + "UTEXTURE2DMS", "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY", + "UTEXTURE2DMSARRAY", "SUBPASSINPUT", "SUBPASSINPUTMS", "ISUBPASSINPUT", + "ISUBPASSINPUTMS", "USUBPASSINPUT", "USUBPASSINPUTMS", "IMAGE1D", + "IIMAGE1D", "UIMAGE1D", "IMAGE2D", "IIMAGE2D", "UIMAGE2D", "IMAGE3D", + "IIMAGE3D", "UIMAGE3D", "IMAGE2DRECT", "IIMAGE2DRECT", "UIMAGE2DRECT", + "IMAGECUBE", "IIMAGECUBE", "UIMAGECUBE", "IMAGEBUFFER", "IIMAGEBUFFER", + "UIMAGEBUFFER", "IMAGE1DARRAY", "IIMAGE1DARRAY", "UIMAGE1DARRAY", + "IMAGE2DARRAY", "IIMAGE2DARRAY", "UIMAGE2DARRAY", "IMAGECUBEARRAY", + "IIMAGECUBEARRAY", "UIMAGECUBEARRAY", "IMAGE2DMS", "IIMAGE2DMS", + "UIMAGE2DMS", "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY", + "STRUCT", "VOID", "WHILE", "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT", + "DOUBLECONSTANT", "INTCONSTANT", "UINTCONSTANT", "INT64CONSTANT", + "UINT64CONSTANT", "BOOLCONSTANT", "FLOAT16CONSTANT", "LEFT_OP", + "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", + "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", + "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", + "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", + "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", + "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", + "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", + "AMPERSAND", "QUESTION", "INVARIANT", "PRECISE", "HIGH_PRECISION", + "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", + "SUPERP", "$accept", "variable_identifier", "primary_expression", + "postfix_expression", "integer_expression", "function_call", + "function_call_or_method", "function_call_generic", + "function_call_header_no_parameters", "function_call_header_with_parameters", "function_call_header", "function_identifier", "unary_expression", "unary_operator", "multiplicative_expression", "additive_expression", "shift_expression", @@ -923,13 +1106,13 @@ static const char *const yytname[] = "switch_statement_list", "case_label", "iteration_statement", "$@10", "$@11", "$@12", "for_init_statement", "conditionopt", "for_rest_statement", "jump_statement", "translation_unit", - "external_declaration", "function_definition", "$@13", YY_NULLPTR + "external_declaration", "function_definition", "$@13", YY_NULL }; #endif # ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -958,290 +1141,335 @@ static const yytype_uint16 yytoknum[] = 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524 + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 541, 542 }; # endif -#define YYPACT_NINF -496 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-496))) - -#define YYTABLE_NINF -379 - -#define yytable_value_is_error(Yytable_value) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = { - 2394, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -199, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -187, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -180, -496, -496, -496, -496, -496, -496, -496, -134, - -496, -191, -181, -155, -131, 3871, -133, -496, -69, -496, - -496, -496, -496, 2900, -496, -496, -496, -92, -496, -496, - 546, -496, -496, -68, -45, -91, -496, 5735, -200, -496, - -496, -85, -496, 3871, -496, -496, -496, 3871, -50, -49, - -496, -209, -193, -496, -496, -496, 4323, -80, -496, -496, - -496, -202, -496, -86, -171, -496, -496, 3871, -84, -496, - -198, 810, -496, -496, -496, -496, -92, -214, -496, 4558, - -176, -496, -46, -496, -127, -496, -496, -496, -496, -496, - -496, -496, -496, 5271, 5271, 5271, -496, -496, -496, -496, - -496, -496, -496, -175, -496, -496, -496, -73, -169, 5503, - -71, -496, 5271, -118, -170, -195, -197, -90, -89, -87, - -88, -57, -58, -208, -67, -496, 4804, -496, -36, 5271, - -496, -45, 3871, 3871, -33, 3145, -496, -496, -496, -72, - -70, -496, -61, -59, -66, 5039, -55, 5271, -62, -51, - -54, -496, -496, -141, -496, -496, -125, -496, -181, -48, - -496, -496, -496, -496, 1074, -496, -496, -496, -496, -496, - -496, -80, 4558, -174, 4558, -496, -496, 4558, 3871, -496, - -23, -496, -496, -496, -167, -496, -496, 5271, -20, -496, - -496, 5271, -43, -496, -496, -496, 5271, 5271, 5271, 5271, - 5271, 5271, 5271, 5271, 5271, 5271, 5271, 5271, 5271, 5271, - 5271, 5271, 5271, 5271, 5271, -496, -496, -496, -44, -496, - -496, -496, -496, 3387, -33, -92, -121, -496, -496, -496, - -496, -496, 1338, -496, 5271, -496, -496, -120, 5271, -102, - -496, -496, -496, 1338, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, 5271, 5271, -496, -496, -496, - -496, 4558, -496, -105, -496, 3629, -496, -496, -42, -52, - -496, -496, -496, -496, -496, -118, -118, -170, -170, -195, - -195, -195, -195, -197, -197, -90, -89, -87, -88, -57, - -58, 5271, -496, -496, -119, -80, -33, -496, -16, 2130, - -164, -496, -160, -496, 2637, 1338, -496, -496, -496, -496, - 4077, -496, -496, -99, -496, -496, -40, -496, -496, 2637, - -41, -496, -52, -8, 3871, -35, -38, -496, -496, 5271, - 5271, -496, -39, -32, 191, -31, 1866, -496, -30, -34, - 1602, -496, -496, -138, 5271, 1602, -41, -496, -496, 1338, - 4558, -496, -496, -496, -29, -52, -496, -496, 1338, -27, - -496, -496, -496 + 0, 288, 289, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 291, 291, 291, 291, 291, 291, 292, + 293, 294, 295, 295, 296, 296, 297, 297, 298, 299, + 299, 300, 300, 300, 300, 301, 301, 301, 301, 302, + 302, 302, 302, 303, 303, 303, 304, 304, 304, 305, + 305, 305, 305, 305, 306, 306, 306, 307, 307, 308, + 308, 309, 309, 310, 310, 311, 311, 312, 312, 313, + 314, 313, 315, 315, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 317, 317, 318, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 321, 320, 322, + 322, 323, 324, 324, 325, 325, 326, 327, 327, 328, + 328, 328, 328, 329, 330, 330, 330, 330, 330, 331, + 331, 331, 331, 331, 332, 332, 333, 334, 334, 334, + 334, 335, 336, 336, 337, 337, 337, 338, 339, 339, + 340, 340, 340, 340, 340, 340, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 342, 342, 343, 343, 344, + 344, 344, 344, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 348, 347, 349, 347, 350, 350, 351, + 351, 352, 352, 353, 353, 354, 354, 354, 355, 355, + 356, 357, 357, 358, 358, 358, 358, 358, 358, 358, + 359, 360, 361, 359, 362, 362, 364, 363, 365, 363, + 366, 366, 367, 367, 368, 368, 369, 370, 370, 371, + 371, 373, 372, 374, 374, 375, 375, 377, 376, 378, + 376, 379, 376, 380, 380, 381, 381, 382, 382, 383, + 383, 383, 383, 383, 384, 384, 385, 385, 387, 386 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 1, 4, 1, 3, 2, 2, 1, + 1, 1, 2, 2, 2, 1, 2, 3, 2, 1, + 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, + 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, + 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, + 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, + 0, 6, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, + 4, 2, 3, 4, 2, 3, 4, 0, 6, 2, + 3, 2, 1, 1, 2, 3, 3, 2, 3, 2, + 1, 2, 1, 1, 1, 3, 4, 6, 5, 1, + 2, 3, 5, 4, 1, 2, 1, 1, 1, 1, + 1, 4, 1, 3, 1, 3, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 4, 1, 3, 1, 2, 2, + 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 6, 0, 5, 1, 2, 3, + 4, 1, 3, 1, 2, 1, 3, 4, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 0, 5, 1, 1, 0, 2, 0, 2, + 2, 3, 1, 2, 1, 2, 5, 3, 1, 1, + 4, 0, 8, 0, 1, 3, 2, 0, 6, 0, + 8, 0, 7, 1, 1, 1, 0, 2, 3, 2, + 2, 2, 3, 2, 1, 2, 1, 1, 0, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 145, 146, 144, 178, 172, 173, 174, 175, 176, - 177, 161, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 179, 180, 181, - 200, 201, 202, 150, 148, 149, 147, 153, 151, 152, - 154, 155, 156, 157, 158, 159, 160, 182, 183, 184, - 212, 213, 214, 128, 127, 126, 0, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, - 241, 242, 243, 245, 246, 247, 248, 249, 250, 252, - 253, 254, 255, 256, 257, 258, 236, 237, 244, 251, - 259, 260, 261, 262, 263, 264, 333, 265, 266, 267, - 268, 269, 270, 271, 272, 274, 275, 276, 277, 278, - 279, 281, 282, 283, 284, 285, 286, 288, 289, 290, - 291, 292, 293, 273, 280, 287, 294, 295, 296, 297, - 298, 299, 334, 335, 336, 337, 338, 339, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 0, 171, 341, 125, 135, 342, 343, 344, 0, - 419, 0, 420, 0, 102, 101, 0, 113, 118, 142, - 141, 139, 143, 0, 136, 138, 123, 165, 140, 340, - 0, 416, 418, 0, 0, 0, 347, 0, 0, 90, - 87, 0, 100, 0, 109, 103, 111, 0, 112, 0, - 88, 119, 0, 93, 137, 124, 0, 166, 1, 417, - 163, 0, 134, 132, 0, 130, 345, 0, 0, 91, - 0, 0, 421, 104, 108, 110, 106, 114, 105, 0, - 120, 96, 0, 94, 0, 2, 8, 9, 4, 5, - 6, 7, 10, 0, 0, 0, 167, 36, 35, 37, - 34, 3, 12, 30, 14, 19, 20, 0, 0, 24, - 0, 38, 0, 42, 45, 48, 53, 56, 58, 60, - 62, 64, 66, 68, 0, 28, 0, 162, 0, 0, - 129, 0, 0, 0, 0, 0, 349, 89, 92, 0, - 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, - 373, 382, 386, 38, 71, 84, 0, 362, 0, 123, - 365, 384, 364, 363, 0, 366, 367, 368, 369, 370, - 371, 107, 0, 115, 0, 357, 122, 0, 0, 98, - 0, 95, 31, 32, 0, 16, 17, 0, 0, 22, - 21, 0, 171, 25, 27, 33, 0, 0, 0, 0, + 0, 147, 148, 146, 181, 174, 175, 177, 178, 179, + 180, 176, 163, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 182, 183, + 184, 206, 207, 208, 152, 150, 151, 149, 155, 153, + 154, 156, 157, 158, 159, 160, 161, 162, 185, 186, + 187, 218, 219, 220, 188, 189, 190, 230, 231, 232, + 129, 128, 127, 0, 130, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 256, 257, 258, 259, 260, 261, + 263, 264, 265, 266, 267, 268, 270, 271, 272, 273, + 274, 275, 276, 254, 255, 262, 269, 277, 278, 279, + 280, 281, 282, 351, 283, 284, 285, 286, 287, 288, + 289, 290, 292, 293, 294, 295, 296, 297, 299, 300, + 301, 302, 303, 304, 306, 307, 308, 309, 310, 311, + 291, 298, 305, 312, 313, 314, 315, 316, 317, 352, + 353, 354, 355, 356, 357, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 0, 173, + 359, 126, 137, 360, 361, 362, 0, 437, 0, 438, + 0, 103, 102, 0, 114, 119, 144, 143, 141, 145, + 0, 138, 140, 124, 167, 142, 358, 0, 434, 436, + 0, 0, 0, 365, 0, 0, 91, 88, 0, 101, + 0, 110, 104, 112, 0, 113, 0, 89, 120, 0, + 94, 139, 125, 0, 168, 1, 435, 165, 0, 136, + 134, 0, 132, 363, 0, 0, 92, 0, 0, 439, + 105, 109, 111, 107, 115, 106, 0, 121, 97, 0, + 95, 0, 2, 8, 9, 4, 5, 6, 7, 11, + 10, 0, 0, 0, 169, 37, 36, 38, 35, 3, + 13, 31, 15, 20, 21, 0, 0, 25, 0, 39, + 0, 43, 46, 49, 54, 57, 59, 61, 63, 65, + 67, 69, 0, 29, 0, 164, 0, 0, 131, 0, + 0, 0, 0, 0, 367, 90, 93, 0, 0, 419, + 0, 0, 0, 0, 0, 0, 0, 0, 391, 400, + 404, 39, 72, 85, 0, 380, 0, 124, 383, 402, + 382, 381, 0, 384, 385, 386, 387, 388, 389, 108, + 0, 116, 0, 375, 123, 0, 0, 99, 0, 96, + 32, 33, 0, 17, 18, 0, 0, 23, 22, 0, + 173, 26, 28, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 69, 168, 169, 0, 164, - 86, 133, 131, 0, 0, 355, 0, 353, 348, 350, - 412, 411, 0, 403, 0, 415, 413, 0, 0, 0, - 398, 399, 372, 0, 74, 75, 77, 76, 79, 80, - 81, 82, 83, 78, 73, 0, 0, 387, 383, 385, - 117, 0, 360, 0, 121, 0, 99, 11, 0, 18, - 15, 26, 39, 40, 41, 44, 43, 46, 47, 51, - 52, 49, 50, 54, 55, 57, 59, 61, 63, 65, - 67, 0, 170, 346, 0, 356, 0, 351, 0, 0, - 0, 414, 0, 397, 0, 374, 72, 85, 116, 358, - 0, 97, 13, 0, 352, 354, 0, 406, 405, 408, - 380, 393, 391, 0, 0, 0, 0, 359, 361, 0, - 0, 407, 0, 0, 390, 0, 0, 388, 0, 0, - 0, 375, 70, 0, 409, 0, 380, 379, 381, 395, - 0, 377, 400, 376, 0, 410, 404, 389, 396, 0, - 392, 402, 394 + 0, 0, 0, 70, 170, 171, 0, 166, 87, 135, + 133, 0, 0, 373, 0, 371, 366, 368, 430, 429, + 0, 421, 0, 433, 431, 0, 0, 0, 416, 417, + 390, 0, 75, 76, 78, 77, 80, 81, 82, 83, + 84, 79, 74, 0, 0, 405, 401, 403, 118, 0, + 378, 0, 122, 0, 100, 12, 0, 19, 16, 27, + 40, 41, 42, 45, 44, 47, 48, 52, 53, 50, + 51, 55, 56, 58, 60, 62, 64, 66, 68, 0, + 172, 364, 0, 374, 0, 369, 0, 0, 0, 432, + 0, 415, 0, 392, 73, 86, 117, 376, 0, 98, + 14, 0, 370, 372, 0, 424, 423, 426, 398, 411, + 409, 0, 0, 0, 0, 377, 379, 0, 0, 425, + 0, 0, 408, 0, 0, 406, 0, 0, 0, 393, + 71, 0, 427, 0, 398, 397, 399, 413, 0, 395, + 418, 394, 0, 428, 422, 407, 414, 0, 410, 420, + 412 }; - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -496, -496, -496, -496, -496, -496, -496, -496, -496, -496, - -496, -496, -53, -496, -237, -288, -286, -243, -183, -179, - -184, -177, -168, -185, -496, -234, -496, -266, -496, -280, - -496, 4, -496, -496, -496, 6, -496, -496, -496, -15, - -10, -9, -496, -496, -475, -496, -496, -496, -496, -83, - -496, -204, -211, -496, -496, 0, -221, -496, 33, -496, - -496, -496, -308, -314, -178, -247, -349, -496, -248, -346, - -495, -283, -496, -496, -292, -291, -496, -496, 13, -423, - -242, -496, -496, -263, -496, -496, -496, -496, -496, -496, - -496, -496, -496, -496, -496, -496, -496, 28, -496, -496 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 291, 292, 293, 458, 294, 295, 296, 297, 298, - 299, 300, 343, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 344, 481, 345, 445, 346, - 411, 347, 201, 368, 274, 348, 203, 204, 205, 234, - 235, 236, 206, 207, 208, 209, 210, 211, 254, 255, - 212, 213, 214, 215, 251, 315, 247, 217, 218, 219, - 322, 257, 325, 326, 416, 417, 366, 453, 350, 351, - 352, 353, 433, 516, 542, 524, 525, 526, 543, 354, - 355, 356, 527, 515, 357, 528, 549, 358, 359, 494, - 422, 489, 509, 522, 523, 360, 220, 221, 222, 231 + -1, 309, 310, 311, 476, 312, 313, 314, 315, 316, + 317, 318, 361, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 362, 499, 363, 463, 364, + 429, 365, 218, 386, 291, 366, 220, 221, 222, 251, + 252, 253, 223, 224, 225, 226, 227, 228, 271, 272, + 229, 230, 231, 232, 268, 333, 264, 234, 235, 236, + 340, 274, 343, 344, 434, 435, 384, 471, 368, 369, + 370, 371, 451, 534, 560, 542, 543, 544, 561, 372, + 373, 374, 545, 533, 375, 546, 567, 376, 377, 512, + 440, 507, 527, 540, 541, 378, 237, 238, 239, 248 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -512 +static const yytype_int16 yypact[] = +{ + 2538, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -235, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -201, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, -512, -203, -512, + -512, -512, -512, -512, -512, -512, -153, -512, -210, -220, + -152, -189, 4119, -160, -512, -128, -512, -512, -512, -512, + 3079, -512, -512, -512, -122, -512, -512, 564, -512, -512, + -72, -46, -105, -512, 6148, -216, -512, -512, -102, -512, + 4119, -512, -512, -512, 4119, -68, -66, -512, -225, -187, + -512, -512, -512, 4606, -98, -512, -512, -512, -179, -512, + -104, -172, -512, -512, 4119, -101, -512, -186, 846, -512, + -512, -512, -512, -122, -233, -512, 4870, -217, -512, -63, + -512, -151, -512, -512, -512, -512, -512, -512, -512, -512, + -512, 5648, 5648, 5648, -512, -512, -512, -512, -512, -512, + -512, -209, -512, -512, -512, -94, -170, 5898, -92, -512, + 5648, -139, -133, -109, -223, -103, -111, -108, -106, -71, + -74, -218, -86, -512, 5134, -512, -52, 5648, -512, -46, + 4119, 4119, -50, 3342, -512, -512, -512, -90, -89, -512, + -78, -76, -85, 5398, -70, 5648, -80, -69, -64, -512, + -512, -184, -512, -512, -150, -512, -220, -67, -512, -512, + -512, -512, 1128, -512, -512, -512, -512, -512, -512, -98, + 4870, -183, 4870, -512, -512, 4870, 4119, -512, -40, -512, + -512, -512, -169, -512, -512, 5648, -35, -512, -512, 5648, + -65, -512, -512, -512, 5648, 5648, 5648, 5648, 5648, 5648, + 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, + 5648, 5648, 5648, -512, -512, -512, -61, -512, -512, -512, + -512, 3601, -50, -122, -144, -512, -512, -512, -512, -512, + 1410, -512, 5648, -512, -512, -142, 5648, -123, -512, -512, + -512, 1410, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -512, 5648, 5648, -512, -512, -512, -512, 4870, + -512, -226, -512, 3860, -512, -512, -60, -62, -512, -512, + -512, -512, -512, -139, -139, -133, -133, -109, -109, -109, + -109, -223, -223, -103, -111, -108, -106, -71, -74, 5648, + -512, -512, -138, -98, -50, -512, -33, 2256, -168, -512, + -167, -512, 2798, 1410, -512, -512, -512, -512, 4342, -512, + -512, -121, -512, -512, -56, -512, -512, 2798, -58, -512, + -62, -32, 4119, -49, -51, -512, -512, 5648, 5648, -512, + -57, -45, 177, -55, 1974, -512, -47, -44, 1692, -512, + -512, -165, 5648, 1692, -58, -512, -512, 1410, 4870, -512, + -512, -512, -48, -62, -512, -512, 1410, -42, -512, -512, + -512 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -512, -512, -512, -512, -512, -512, -512, -512, -512, -512, + -512, -512, -96, -512, -263, -262, -304, -264, -204, -199, + -205, -197, -206, -196, -512, -252, -512, -282, -512, -296, + -512, 3, -512, -512, -512, 6, -512, -512, -512, -29, + -23, -26, -512, -512, -489, -512, -512, -512, -512, -118, + -512, -221, -228, -512, -512, 0, -240, -512, 13, -512, + -512, -512, -328, -330, -200, -271, -363, -512, -273, -364, + -511, -308, -512, -512, -314, -309, -512, -512, -2, -441, + -260, -512, -512, -279, -512, -512, -512, -512, -512, -512, + -512, -512, -512, -512, -512, -512, -512, 12, -512, -512 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -397 static const yytype_int16 yytable[] = { - 216, 237, 244, 365, 200, 374, 202, 260, 449, 252, - 495, 419, 314, 450, 413, 452, 228, 404, 454, 513, - 270, 391, 392, 393, 394, 246, 244, 225, 268, 237, - 246, 538, 362, 383, 513, 541, 317, 269, 223, 246, - 541, 316, 318, 375, 376, 361, 363, 259, 271, 328, - 224, 272, 405, 323, 273, 427, 229, 429, 395, 396, - 455, 226, -29, 316, 377, 316, 230, 320, 378, 380, - 367, 457, 451, 321, 510, 381, 488, 446, 511, 389, - 446, 390, 408, 232, 446, 410, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 365, 459, 365, 419, - 544, 365, 498, 467, 468, 444, 446, 469, 470, 471, - 472, 239, 244, 233, 240, 461, 548, 370, 323, 446, - 371, 323, 447, 486, 446, 486, 487, 491, 504, 196, - 197, 198, 397, 398, 386, 387, 388, 499, 241, 500, - 250, 419, 446, 493, 490, 446, 519, 246, 492, 449, - 256, 518, 465, 466, 473, 474, 261, 266, 267, 316, - 319, 369, 253, 327, 323, 379, 384, 402, 403, 401, - 399, 400, 409, 406, 415, 420, 423, 421, 424, 496, - 497, 425, 428, 430, 456, 365, 431, 460, 432, -28, - 506, 550, 446, 301, 485, -23, 482, 520, 502, 529, - -378, 503, 449, 530, 531, 238, 535, 536, 534, 323, - 340, 539, 540, 245, 512, 552, 475, 477, 551, 480, - 216, 476, 264, 263, 200, 478, 202, 258, 265, 512, - 372, 373, 227, 238, 365, 479, 484, 238, 412, 505, - 533, 507, 537, 546, 262, 547, 521, 508, 249, 385, - 0, 323, 0, 532, 545, 0, 0, 324, 0, 0, - 0, 349, 0, 301, 0, 0, 301, 0, 0, 0, - 0, 0, 0, 0, 365, 0, 0, 0, 0, 0, + 233, 254, 261, 217, 383, 277, 219, 392, 467, 269, + 513, 332, 431, 437, 245, 411, 412, 468, 287, 470, + 240, 242, 472, 531, 263, 422, 261, 393, 394, 254, + 285, 380, 263, 556, 517, 401, 518, 559, 531, 286, + 334, 263, 559, 379, 381, 247, -30, 385, 395, 276, + 413, 414, 396, 341, 241, 246, 243, 445, 473, 447, + 423, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 334, 288, 250, 334, 289, 506, 335, 290, 346, + 462, 469, 426, 336, 338, 428, 398, 475, 528, 529, + 339, 562, 399, 464, 464, 464, 258, 464, 383, 477, + 383, 437, 256, 383, 249, 257, 516, 487, 488, 489, + 490, 388, 464, 261, 389, 465, 566, 479, 504, 341, + 464, 505, 341, 509, 504, 409, 410, 522, 213, 214, + 215, 404, 405, 406, 407, 263, 408, 415, 416, 464, + 511, 464, 537, 437, 483, 484, 508, 485, 486, 467, + 510, 491, 492, 267, 273, 536, 283, 278, 284, 334, + 337, 387, 397, 402, 345, 341, 417, 319, 418, 419, + 421, 420, 424, 427, 433, 438, 439, 441, 270, 442, + 443, 514, 515, 448, 474, 446, 449, 383, -29, 478, + 524, -24, 547, 503, 554, 568, 450, 500, 520, 538, + 464, -396, 467, 521, 358, 390, 391, 548, 552, 549, + 341, 553, 557, 493, 495, 497, 530, 569, 570, 494, + 558, 430, 255, 496, 403, 281, 498, 280, 282, 244, + 262, 530, 502, 523, 525, 555, 383, 233, 319, 564, + 217, 319, 551, 219, 275, 565, 279, 526, 539, 266, + 255, 0, 341, 0, 255, 550, 563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 244, 0, 514, 0, 0, 0, 0, + 0, 0, 0, 0, 342, 0, 383, 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 324, 414, 0, 324, 0, 0, 0, 0, - 0, 0, 0, 462, 463, 464, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 0, 0, 349, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 324, 0, + 0, 532, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 261, 0, 532, 0, 480, 481, + 482, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 342, 432, 0, 342, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 324, 0, 0, 0, 0, 0, 0, - 0, 0, 349, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 349, 0, 0, 0, 0, 0, 0, + 0, 342, 0, 0, 0, 0, 0, 0, 0, 0, + 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, + 0, 0, 0, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, - 0, 0, 0, 0, 349, 349, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, - 0, 0, 0, 0, 245, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 349, 0, 0, 0, - 349, 0, 0, 0, 0, 349, 0, 0, 0, 349, - 0, 0, 0, 0, 0, 0, 248, 0, 349, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 0, 0, 193, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 194, 195, 196, - 197, 198, 199, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 329, 330, 331, 0, 332, 333, 334, - 335, 336, 337, 338, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 339, 275, 193, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 285, 0, 0, - 0, 340, 341, 0, 0, 0, 0, 342, 287, 288, - 289, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 194, 195, 196, 197, 198, 199, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 329, 330, 331, - 0, 332, 333, 334, 335, 336, 337, 338, 11, 12, + 0, 0, 0, 0, 0, 0, 0, 367, 0, 0, + 0, 0, 367, 367, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 367, 0, 0, + 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 367, 0, 0, 0, 367, 0, + 0, 0, 0, 367, 0, 0, 0, 367, 0, 0, + 0, 0, 0, 0, 265, 0, 367, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, @@ -1260,15 +1488,45 @@ static const yytype_int16 yytable[] = 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 339, 275, 193, 276, 277, 278, 279, 280, 281, 282, - 0, 0, 283, 284, 0, 0, 0, 0, 0, 0, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 285, 0, 0, 0, 340, 448, 0, 0, 0, - 0, 342, 287, 288, 289, 290, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 194, 195, 196, 197, 198, - 199, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 329, 330, 331, 0, 332, 333, 334, 335, 336, - 337, 338, 11, 12, 13, 14, 15, 16, 17, 18, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 211, 212, 213, 214, 215, 216, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, + 356, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 357, + 292, 210, 293, 294, 295, 296, 297, 298, 299, 300, + 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 303, 0, 0, 0, 358, 359, 0, 0, 0, + 0, 360, 305, 306, 307, 308, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 211, 212, 213, 214, 215, + 216, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 347, 348, 349, 0, 350, 351, 352, 353, + 354, 355, 356, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, @@ -1286,68 +1544,17 @@ static const yytype_int16 yytable[] = 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 339, 275, 193, 276, 277, 278, - 279, 280, 281, 282, 0, 0, 283, 284, 0, 0, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 357, 292, 210, 293, 294, 295, 296, 297, 298, + 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 285, 0, 0, 0, 340, - 0, 0, 0, 0, 0, 342, 287, 288, 289, 290, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, - 195, 196, 197, 198, 199, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 329, 330, 331, 0, 332, - 333, 334, 335, 336, 337, 338, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 339, 275, - 193, 276, 277, 278, 279, 280, 281, 282, 0, 0, - 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 285, - 0, 0, 0, 261, 0, 0, 0, 0, 0, 342, - 287, 288, 289, 290, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 194, 195, 196, 197, 198, 199, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 329, - 330, 331, 0, 332, 333, 334, 335, 336, 337, 338, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 339, 275, 193, 276, 277, 278, 279, 280, - 281, 282, 0, 0, 283, 284, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 285, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 342, 287, 288, 289, 290, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 194, 195, 196, - 197, 198, 199, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 12, 13, 14, 15, 16, + 0, 0, 0, 303, 0, 0, 0, 358, 466, 0, + 0, 0, 0, 360, 305, 306, 307, 308, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 211, 212, 213, + 214, 215, 216, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 347, 348, 349, 0, 350, 351, + 352, 353, 354, 355, 356, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, @@ -1365,15 +1572,45 @@ static const yytype_int16 yytable[] = 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 0, 275, 193, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 283, 284, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 357, 292, 210, 293, 294, 295, 296, + 297, 298, 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 285, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 342, 287, 288, - 289, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 194, 195, 196, 197, 198, 199, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, + 0, 0, 0, 0, 0, 303, 0, 0, 0, 358, + 0, 0, 0, 0, 0, 360, 305, 306, 307, 308, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, + 212, 213, 214, 215, 216, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 347, 348, 349, 0, + 350, 351, 352, 353, 354, 355, 356, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 357, 292, 210, 293, 294, + 295, 296, 297, 298, 299, 300, 0, 0, 301, 302, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 303, 0, 0, + 0, 278, 0, 0, 0, 0, 0, 360, 305, 306, + 307, 308, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 211, 212, 213, 214, 215, 216, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 347, 348, + 349, 0, 350, 351, 352, 353, 354, 355, 356, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, @@ -1392,209 +1629,49 @@ static const yytype_int16 yytable[] = 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 0, 0, 193, 0, 0, 0, 0, 0, 0, 0, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 357, 292, 210, + 293, 294, 295, 296, 297, 298, 299, 300, 0, 0, + 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 360, + 305, 306, 307, 308, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 211, 212, 213, 214, 215, 216, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 0, + 292, 210, 293, 294, 295, 296, 297, 298, 299, 300, + 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 0, 0, 0, 0, 0, 194, 195, 196, 197, 198, - 199, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 0, 275, 193, 276, 277, 278, 279, - 280, 281, 282, 0, 0, 283, 284, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 285, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 194, 195, - 196, 197, 198, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 0, 242, 193, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 243, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, - 0, 194, 195, 196, 197, 198, 0, 0, 0, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 0, 0, 193, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 418, 0, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 0, 0, 0, 0, 0, 0, 194, 195, 196, 197, - 198, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 0, 0, 193, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 483, - 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 0, 0, 0, 0, 0, 0, 194, 195, - 196, 197, 198, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 0, 0, 193, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 501, 0, 0, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, - 194, 195, 196, 197, 198, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 0, 0, 193, - 0, 0, 0, 4, 5, 6, 7, 8, 9, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 194, 195, 196, 197, 198, 47, 48, 49, - 50, 51, 52, 0, 0, 0, 0, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 0, 275, 193, 276, 277, 278, 279, - 280, 281, 282, 0, 0, 283, 284, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 285, 0, 0, 0, 364, 517, - 0, 0, 0, 0, 0, 287, 288, 289, 290, 4, - 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 47, 48, 49, 50, 51, 52, 0, - 0, 0, 0, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 0, - 275, 193, 276, 277, 278, 279, 280, 281, 282, 0, - 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 285, 0, 0, 286, 4, 5, 6, 7, 8, 9, - 10, 287, 288, 289, 290, 0, 0, 0, 0, 0, + 0, 303, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 360, 305, 306, 307, 308, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 211, 212, 213, 214, 215, + 216, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 48, - 49, 50, 51, 52, 0, 0, 0, 0, 57, 58, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, @@ -1608,292 +1685,44 @@ static const yytype_int16 yytable[] = 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 0, 275, 193, 276, 277, 278, - 279, 280, 281, 282, 0, 0, 283, 284, 0, 0, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 285, 0, 0, 0, 364, - 0, 0, 0, 0, 0, 0, 287, 288, 289, 290, - 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 0, 0, 0, 0, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 0, 275, 193, 276, 277, 278, 279, 280, 281, 282, - 0, 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 285, 0, 0, 407, 4, 5, 6, 7, 8, - 9, 10, 287, 288, 289, 290, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 0, 0, 0, 0, 211, 212, 213, + 214, 215, 216, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 0, 292, 210, 293, 294, 295, 296, 297, 298, + 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 303, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 305, 306, 307, 308, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 211, 212, 213, + 214, 215, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, - 48, 49, 50, 51, 52, 0, 0, 0, 0, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 0, 275, 193, 276, 277, - 278, 279, 280, 281, 282, 0, 0, 283, 284, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 285, 4, 5, 6, - 7, 8, 9, 10, 0, 0, 426, 287, 288, 289, - 290, 0, 0, 0, 0, 0, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 47, 48, 49, 50, 51, 52, 0, 0, 0, - 0, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 0, 275, 193, - 276, 277, 278, 279, 280, 281, 282, 0, 0, 283, - 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 285, 4, - 5, 6, 7, 8, 9, 10, 0, 0, 0, 287, - 288, 289, 290, 0, 0, 0, 0, 0, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 47, 48, 49, 50, 51, 52, 0, - 0, 0, 0, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 382, 0, - 275, 193, 276, 277, 278, 279, 280, 281, 282, 0, - 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 285, 4, 5, 6, 7, 8, 9, 10, 0, 0, - 0, 287, 288, 289, 290, 0, 0, 0, 0, 0, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 47, 48, 49, 50, 51, - 52, 0, 0, 0, 0, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 0, 0, 193 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 205, 213, 269, 0, 285, 0, 228, 354, 54, - 433, 325, 246, 362, 322, 364, 207, 225, 367, 494, - 241, 216, 217, 220, 221, 239, 237, 207, 237, 233, - 239, 526, 246, 299, 509, 530, 238, 246, 237, 239, - 535, 239, 244, 218, 219, 266, 267, 247, 241, 247, - 237, 244, 260, 257, 247, 335, 247, 337, 255, 256, - 368, 241, 237, 239, 239, 239, 247, 238, 243, 238, - 246, 238, 246, 244, 238, 244, 422, 244, 238, 249, - 244, 251, 316, 238, 244, 319, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 362, 377, 364, 413, - 238, 367, 451, 391, 392, 246, 244, 393, 394, 395, - 396, 244, 323, 244, 247, 381, 539, 244, 322, 244, - 247, 325, 247, 244, 244, 244, 247, 247, 247, 263, - 264, 265, 222, 223, 252, 253, 254, 242, 207, 244, - 208, 455, 244, 245, 424, 244, 245, 239, 428, 495, - 241, 500, 389, 390, 397, 398, 241, 207, 207, 239, - 246, 207, 207, 247, 368, 238, 237, 224, 226, 257, - 259, 258, 208, 240, 207, 247, 237, 247, 237, 445, - 446, 247, 237, 245, 207, 451, 237, 207, 242, 237, - 206, 540, 244, 246, 415, 238, 240, 237, 240, 207, - 241, 481, 548, 238, 242, 205, 238, 16, 247, 413, - 241, 241, 246, 213, 494, 242, 399, 401, 247, 404, - 220, 400, 237, 233, 220, 402, 220, 227, 237, 509, - 283, 284, 199, 233, 500, 403, 414, 237, 321, 486, - 520, 489, 525, 535, 231, 536, 509, 489, 220, 302, - -1, 455, -1, 519, 534, -1, -1, 257, -1, -1, - -1, 261, -1, 316, -1, -1, 319, -1, -1, -1, - -1, -1, -1, -1, 540, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 494, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 514, -1, 509, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 322, 323, -1, 325, -1, -1, -1, -1, - -1, -1, -1, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, -1, -1, 354, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 368, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 413, -1, -1, -1, -1, -1, -1, - -1, -1, 422, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 433, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 455, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, - -1, -1, -1, -1, 494, 495, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 509, - -1, -1, -1, -1, 514, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 526, -1, -1, -1, - 530, -1, -1, -1, -1, 535, -1, -1, -1, 539, - -1, -1, -1, -1, -1, -1, 0, -1, 548, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, -1, -1, 208, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, - 264, 265, 266, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, -1, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, -1, -1, 218, 219, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 237, -1, -1, - -1, 241, 242, -1, -1, -1, -1, 247, 248, 249, - 250, 251, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 261, 262, 263, 264, 265, 266, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - -1, -1, 218, 219, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 237, -1, -1, -1, 241, 242, -1, -1, -1, - -1, 247, 248, 249, 250, 251, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 261, 262, 263, 264, 265, - 266, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, -1, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, -1, -1, 218, 219, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 237, -1, -1, -1, 241, - -1, -1, -1, -1, -1, 247, 248, 249, 250, 251, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, - 262, 263, 264, 265, 266, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, -1, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, @@ -1912,14 +1741,411 @@ static const yytype_int16 yycheck[] = 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, -1, -1, - 218, 219, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 237, - -1, -1, -1, 241, -1, -1, -1, -1, -1, 247, - 248, 249, 250, 251, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 261, 262, 263, 264, 265, 266, 3, + 208, 209, 0, 259, 210, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 260, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 0, 0, 211, 212, + 213, 214, 215, 0, 0, 0, 0, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 0, 0, 210, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 436, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, + 0, 211, 212, 213, 214, 215, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 0, 0, 210, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 501, 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, + 211, 212, 213, 214, 215, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 0, 0, 210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 519, 0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 0, 0, 0, 0, 0, 0, 211, + 212, 213, 214, 215, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 0, 0, 210, 0, 0, 0, 4, 5, + 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 211, 212, + 213, 214, 215, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 0, 0, 0, 0, 0, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 0, 292, 210, 293, 294, + 295, 296, 297, 298, 299, 300, 0, 0, 301, 302, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 303, 0, 0, + 0, 382, 535, 0, 0, 0, 0, 0, 305, 306, + 307, 308, 4, 5, 6, 7, 8, 9, 10, 11, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 0, + 0, 0, 0, 0, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 0, + 292, 210, 293, 294, 295, 296, 297, 298, 299, 300, + 0, 0, 301, 302, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 303, 0, 0, 304, 0, 0, 0, 0, 0, + 0, 0, 305, 306, 307, 308, 4, 5, 6, 7, + 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 0, 0, 0, 0, 0, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 0, 292, 210, 293, 294, 295, 296, + 297, 298, 299, 300, 0, 0, 301, 302, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 303, 0, 0, 0, 382, + 0, 0, 0, 0, 0, 0, 305, 306, 307, 308, + 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 0, 0, 0, + 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 0, 292, 210, + 293, 294, 295, 296, 297, 298, 299, 300, 0, 0, + 301, 302, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 303, + 0, 0, 425, 0, 0, 0, 0, 0, 0, 0, + 305, 306, 307, 308, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 0, 292, 210, 293, 294, 295, 296, 297, 298, + 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 303, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 444, 305, 306, 307, 308, 0, 0, + 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 0, 292, 210, 293, 294, 295, 296, 297, 298, + 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 303, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 0, 305, 306, 307, 308, 0, 0, + 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 400, 0, 292, 210, 293, 294, 295, 296, 297, 298, + 299, 300, 0, 0, 301, 302, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 303, 4, 5, 6, 7, 8, 9, + 10, 11, 0, 0, 305, 306, 307, 308, 0, 0, + 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 0, 0, 0, 0, 0, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 0, 0, 210 +}; + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-512))) + +#define yytable_value_is_error(Yytable_value) \ + YYID (0) + +static const yytype_int16 yycheck[] = +{ + 0, 222, 230, 0, 286, 245, 0, 303, 372, 55, + 451, 263, 340, 343, 224, 238, 239, 380, 258, 382, + 255, 224, 385, 512, 257, 243, 254, 236, 237, 250, + 255, 264, 257, 544, 260, 317, 262, 548, 527, 264, + 257, 257, 553, 283, 284, 265, 255, 264, 257, 265, + 273, 274, 261, 274, 255, 265, 259, 353, 386, 355, + 278, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 257, 259, 262, 257, 262, 440, 256, 265, 265, + 264, 264, 334, 262, 256, 337, 256, 256, 256, 256, + 262, 256, 262, 262, 262, 262, 224, 262, 380, 395, + 382, 431, 262, 385, 256, 265, 469, 411, 412, 413, + 414, 262, 262, 341, 265, 265, 557, 399, 262, 340, + 262, 265, 343, 265, 262, 234, 235, 265, 281, 282, + 283, 270, 271, 272, 267, 257, 269, 240, 241, 262, + 263, 262, 263, 473, 407, 408, 442, 409, 410, 513, + 446, 415, 416, 225, 259, 518, 224, 259, 224, 257, + 264, 224, 256, 255, 265, 386, 277, 263, 276, 275, + 244, 242, 258, 225, 224, 265, 265, 255, 224, 255, + 265, 463, 464, 263, 224, 255, 255, 469, 255, 224, + 223, 256, 224, 433, 17, 558, 260, 258, 258, 255, + 262, 259, 566, 499, 259, 301, 302, 256, 265, 260, + 431, 256, 259, 417, 419, 421, 512, 265, 260, 418, + 264, 339, 222, 420, 320, 254, 422, 250, 254, 216, + 230, 527, 432, 504, 507, 543, 518, 237, 334, 553, + 237, 337, 538, 237, 244, 554, 248, 507, 527, 237, + 250, -1, 473, -1, 254, 537, 552, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 274, -1, 558, -1, 278, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 512, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 532, -1, 527, -1, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 340, 341, -1, 343, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 372, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 431, -1, -1, -1, -1, -1, -1, -1, -1, + 440, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 451, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 473, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 507, -1, -1, + -1, -1, 512, 513, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 527, -1, -1, + -1, -1, 532, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 544, -1, -1, -1, 548, -1, + -1, -1, -1, 553, -1, -1, -1, 557, -1, -1, + -1, -1, -1, -1, 0, -1, 566, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 279, 280, 281, 282, 283, 284, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, -1, 17, 18, 19, 20, 21, 22, 23, + 14, 15, 16, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, @@ -1939,14 +2165,44 @@ static const yytype_int16 yycheck[] = 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, -1, -1, 218, 219, -1, -1, -1, -1, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 247, 248, 249, 250, 251, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, - 264, 265, 266, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 24, 25, 26, 27, 28, 29, + -1, 255, -1, -1, -1, 259, 260, -1, -1, -1, + -1, 265, 266, 267, 268, 269, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 255, -1, -1, -1, 259, 260, -1, + -1, -1, -1, 265, 266, 267, 268, 269, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, + 282, 283, 284, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, -1, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, @@ -1964,15 +2220,45 @@ static const yytype_int16 yycheck[] = 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, -1, 207, 208, 209, - 210, 211, 212, 213, 214, 215, -1, -1, 218, 219, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 237, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 247, 248, 249, - 250, 251, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 261, 262, 263, 264, 265, 266, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 24, 25, + -1, -1, -1, -1, -1, 255, -1, -1, -1, 259, + -1, -1, -1, -1, -1, 265, 266, 267, 268, 269, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 279, + 280, 281, 282, 283, 284, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, -1, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, 236, 237, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 255, -1, -1, + -1, 259, -1, -1, -1, -1, -1, 265, 266, 267, + 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 279, 280, 281, 282, 283, 284, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, -1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, @@ -1991,112 +2277,99 @@ static const yytype_int16 yycheck[] = 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - -1, -1, 208, -1, -1, -1, -1, -1, -1, -1, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, + 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 265, + 266, 267, 268, 269, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 279, 280, 281, 282, 283, 284, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 255, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 265, 266, 267, 268, 269, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 279, 280, 281, 282, 283, + 284, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, -1, 225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - -1, -1, -1, -1, -1, 261, 262, 263, 264, 265, - 266, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, - 213, 214, 215, -1, -1, 218, 219, -1, -1, -1, + -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, -1, -1, -1, -1, -1, 279, 280, 281, + 282, 283, 284, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 237, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 248, 249, 250, 251, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 261, 262, - 263, 264, 265, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, -1, 207, 208, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 247, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, - -1, 261, 262, 263, 264, 265, -1, -1, -1, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, -1, -1, 208, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 242, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - -1, -1, -1, -1, -1, -1, 261, 262, 263, 264, - 265, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, -1, -1, 208, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 242, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, -1, -1, -1, -1, -1, -1, 261, 262, - 263, 264, 265, 24, 25, 26, 27, 28, 29, 30, + -1, -1, -1, 255, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 266, 267, 268, 269, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 279, 280, 281, + 282, 283, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, @@ -2114,13 +2387,41 @@ static const yytype_int16 yycheck[] = 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, -1, -1, 208, -1, -1, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, -1, 224, 225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 242, -1, -1, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, - 261, 262, 263, 264, 265, 24, 25, 26, 27, 28, + -1, -1, -1, -1, 265, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, -1, -1, 279, 280, + 281, 282, 283, -1, -1, -1, -1, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, -1, -1, 225, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 260, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, -1, -1, -1, -1, -1, + -1, 279, 280, 281, 282, 283, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, @@ -2138,110 +2439,45 @@ static const yytype_int16 yycheck[] = 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, -1, -1, 208, - -1, -1, -1, 6, 7, 8, 9, 10, 11, 12, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, -1, -1, 225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 261, 262, 263, 264, 265, 60, 61, 62, - 63, 64, 65, -1, -1, -1, -1, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, -1, 207, 208, 209, 210, 211, 212, - 213, 214, 215, -1, -1, 218, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 237, -1, -1, -1, 241, 242, - -1, -1, -1, -1, -1, 248, 249, 250, 251, 6, - 7, 8, 9, 10, 11, 12, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 60, 61, 62, 63, 64, 65, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, -1, - 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, - -1, 218, 219, -1, -1, -1, -1, -1, -1, -1, + -1, 260, -1, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, + 279, 280, 281, 282, 283, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, -1, -1, 225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 237, -1, -1, 240, 6, 7, 8, 9, 10, 11, - 12, 248, 249, 250, 251, -1, -1, -1, -1, -1, - -1, -1, -1, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, - 62, 63, 64, 65, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, -1, 207, 208, 209, 210, 211, - 212, 213, 214, 215, -1, -1, 218, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 237, -1, -1, -1, 241, - -1, -1, -1, -1, -1, -1, 248, 249, 250, 251, - 6, 7, 8, 9, 10, 11, 12, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, 61, 62, 63, 64, 65, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - -1, 207, 208, 209, 210, 211, 212, 213, 214, 215, - -1, -1, 218, 219, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 237, -1, -1, 240, 6, 7, 8, 9, 10, - 11, 12, 248, 249, 250, 251, -1, -1, -1, -1, - -1, -1, -1, -1, 25, 26, 27, 28, 29, 30, + 260, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, -1, -1, -1, -1, -1, -1, 279, + 280, 281, 282, 283, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, - 61, 62, 63, 64, 65, -1, -1, -1, -1, 70, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, @@ -2255,85 +2491,220 @@ static const yytype_int16 yycheck[] = 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, -1, 207, 208, 209, 210, - 211, 212, 213, 214, 215, -1, -1, 218, 219, -1, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, -1, -1, 225, -1, -1, -1, 6, 7, + 8, 9, 10, 11, 12, 13, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 279, 280, + 281, 282, 283, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, -1, -1, -1, -1, -1, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, -1, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 237, 6, 7, 8, - 9, 10, 11, 12, -1, -1, 247, 248, 249, 250, - 251, -1, -1, -1, -1, -1, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 255, -1, -1, + -1, 259, 260, -1, -1, -1, -1, -1, 266, 267, + 268, 269, 6, 7, 8, 9, 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 60, 61, 62, 63, 64, 65, -1, -1, -1, - -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, -1, 207, 208, - 209, 210, 211, 212, 213, 214, 215, -1, -1, 218, - 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 237, 6, - 7, 8, 9, 10, 11, 12, -1, -1, -1, 248, - 249, 250, 251, -1, -1, -1, -1, -1, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, -1, + -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, -1, + -1, -1, -1, -1, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + -1, -1, 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 60, 61, 62, 63, 64, 65, -1, - -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, -1, - 207, 208, 209, 210, 211, 212, 213, 214, 215, -1, - -1, 218, 219, -1, -1, -1, -1, -1, -1, -1, + -1, 255, -1, -1, 258, -1, -1, -1, -1, -1, + -1, -1, 266, 267, 268, 269, 6, 7, 8, 9, + 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 237, 6, 7, 8, 9, 10, 11, 12, -1, -1, - -1, 248, 249, 250, 251, -1, -1, -1, -1, -1, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 60, 61, 62, 63, 64, - 65, -1, -1, -1, -1, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, -1, -1, 208 + -1, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, -1, -1, -1, -1, -1, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, -1, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, -1, -1, 236, 237, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 255, -1, -1, -1, 259, + -1, -1, -1, -1, -1, -1, 266, 267, 268, 269, + 6, 7, 8, 9, 10, 11, 12, 13, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, -1, -1, -1, + -1, -1, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, -1, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, -1, -1, + 236, 237, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, + -1, -1, 258, -1, -1, -1, -1, -1, -1, -1, + 266, 267, 268, 269, 6, 7, 8, 9, 10, 11, + 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 255, 6, 7, 8, 9, 10, 11, + 12, 13, -1, 265, 266, 267, 268, 269, -1, -1, + -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 255, 6, 7, 8, 9, 10, 11, + 12, 13, -1, -1, 266, 267, 268, 269, -1, -1, + -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, -1, -1, 236, 237, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 255, 6, 7, 8, 9, 10, 11, + 12, 13, -1, -1, 266, 267, 268, 269, -1, -1, + -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, -1, -1, -1, -1, -1, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, -1, -1, 225 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 12, 13, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, @@ -2351,151 +2722,71 @@ static const yytype_uint16 yystos[] = 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 208, 261, 262, 263, 264, 265, 266, - 301, 302, 305, 306, 307, 308, 312, 313, 314, 315, - 316, 317, 320, 321, 322, 323, 325, 327, 328, 329, - 366, 367, 368, 237, 237, 207, 241, 328, 207, 247, - 247, 369, 238, 244, 309, 310, 311, 321, 325, 244, - 247, 207, 207, 247, 322, 325, 239, 326, 0, 367, - 208, 324, 54, 207, 318, 319, 241, 331, 325, 247, - 326, 241, 348, 310, 309, 311, 207, 207, 237, 246, - 326, 241, 244, 247, 304, 207, 209, 210, 211, 212, - 213, 214, 215, 218, 219, 237, 240, 248, 249, 250, - 251, 271, 272, 273, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 325, 239, 238, 244, 246, - 238, 244, 330, 321, 325, 332, 333, 247, 247, 13, - 14, 15, 17, 18, 19, 20, 21, 22, 23, 206, - 241, 242, 247, 282, 295, 297, 299, 301, 305, 325, - 338, 339, 340, 341, 349, 350, 351, 354, 357, 358, - 365, 326, 246, 326, 241, 297, 336, 246, 303, 207, - 244, 247, 282, 282, 299, 218, 219, 239, 243, 238, - 238, 244, 205, 297, 237, 282, 252, 253, 254, 249, - 251, 216, 217, 220, 221, 255, 256, 222, 223, 259, - 258, 257, 224, 226, 225, 260, 240, 240, 295, 208, - 295, 300, 319, 332, 325, 207, 334, 335, 242, 333, - 247, 247, 360, 237, 237, 247, 247, 299, 237, 299, - 245, 237, 242, 342, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 246, 298, 244, 247, 242, 339, - 336, 246, 336, 337, 336, 332, 207, 238, 274, 299, - 207, 297, 282, 282, 282, 284, 284, 285, 285, 286, - 286, 286, 286, 287, 287, 288, 289, 290, 291, 292, - 293, 296, 240, 242, 334, 326, 244, 247, 339, 361, - 299, 247, 299, 245, 359, 349, 297, 297, 336, 242, - 244, 242, 240, 299, 247, 335, 206, 338, 350, 362, - 238, 238, 299, 314, 321, 353, 343, 242, 336, 245, - 237, 353, 363, 364, 345, 346, 347, 352, 355, 207, - 238, 242, 297, 299, 247, 238, 16, 341, 340, 241, - 246, 340, 344, 348, 238, 299, 344, 345, 349, 356, - 336, 247, 242 + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 225, 279, 280, 281, 282, 283, 284, 319, 320, 323, + 324, 325, 326, 330, 331, 332, 333, 334, 335, 338, + 339, 340, 341, 343, 345, 346, 347, 384, 385, 386, + 255, 255, 224, 259, 346, 224, 265, 265, 387, 256, + 262, 327, 328, 329, 339, 343, 262, 265, 224, 224, + 265, 340, 343, 257, 344, 0, 385, 225, 342, 55, + 224, 336, 337, 259, 349, 343, 265, 344, 259, 366, + 328, 327, 329, 224, 224, 255, 264, 344, 259, 262, + 265, 322, 224, 226, 227, 228, 229, 230, 231, 232, + 233, 236, 237, 255, 258, 266, 267, 268, 269, 289, + 290, 291, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 343, 257, 256, 262, 264, 256, 262, + 348, 339, 343, 350, 351, 265, 265, 14, 15, 16, + 18, 19, 20, 21, 22, 23, 24, 223, 259, 260, + 265, 300, 313, 315, 317, 319, 323, 343, 356, 357, + 358, 359, 367, 368, 369, 372, 375, 376, 383, 344, + 264, 344, 259, 315, 354, 264, 321, 224, 262, 265, + 300, 300, 317, 236, 237, 257, 261, 256, 256, 262, + 222, 315, 255, 300, 270, 271, 272, 267, 269, 234, + 235, 238, 239, 273, 274, 240, 241, 277, 276, 275, + 242, 244, 243, 278, 258, 258, 313, 225, 313, 318, + 337, 350, 343, 224, 352, 353, 260, 351, 265, 265, + 378, 255, 255, 265, 265, 317, 255, 317, 263, 255, + 260, 360, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 264, 316, 262, 265, 260, 357, 354, 264, + 354, 355, 354, 350, 224, 256, 292, 317, 224, 315, + 300, 300, 300, 302, 302, 303, 303, 304, 304, 304, + 304, 305, 305, 306, 307, 308, 309, 310, 311, 314, + 258, 260, 352, 344, 262, 265, 357, 379, 317, 265, + 317, 263, 377, 367, 315, 315, 354, 260, 262, 260, + 258, 317, 265, 353, 223, 356, 368, 380, 256, 256, + 317, 332, 339, 371, 361, 260, 354, 263, 255, 371, + 381, 382, 363, 364, 365, 370, 373, 224, 256, 260, + 315, 317, 265, 256, 17, 359, 358, 259, 264, 358, + 362, 366, 256, 317, 362, 363, 367, 374, 354, 265, + 260 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 270, 271, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 273, 273, 273, 273, 273, 273, 274, 275, - 276, 277, 277, 278, 278, 279, 279, 280, 281, 281, - 282, 282, 282, 282, 283, 283, 283, 283, 284, 284, - 284, 284, 285, 285, 285, 286, 286, 286, 287, 287, - 287, 287, 287, 288, 288, 288, 289, 289, 290, 290, - 291, 291, 292, 292, 293, 293, 294, 294, 295, 296, - 295, 297, 297, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 299, 299, 300, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 303, 302, 304, 304, - 305, 306, 306, 307, 307, 308, 309, 309, 310, 310, - 310, 310, 311, 312, 312, 312, 312, 312, 313, 313, - 313, 313, 313, 314, 314, 315, 316, 316, 316, 317, - 318, 318, 319, 319, 319, 320, 321, 321, 322, 322, - 322, 322, 322, 322, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 324, 324, 325, 325, 326, 326, 326, - 326, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 328, 328, 328, 330, 329, 331, 329, 332, - 332, 333, 333, 334, 334, 335, 335, 336, 336, 336, - 337, 337, 338, 339, 339, 340, 340, 340, 340, 340, - 340, 340, 341, 342, 343, 341, 344, 344, 346, 345, - 347, 345, 348, 348, 349, 349, 350, 350, 351, 352, - 352, 353, 353, 355, 354, 356, 356, 357, 357, 359, - 358, 360, 358, 361, 358, 362, 362, 363, 363, 364, - 364, 365, 365, 365, 365, 365, 366, 366, 367, 367, - 369, 368 -}; +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 4, 1, 3, 2, 2, 1, 1, - 1, 2, 2, 2, 1, 2, 3, 2, 1, 1, - 1, 2, 2, 2, 1, 1, 1, 1, 1, 3, - 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, - 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, - 6, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 2, 2, 4, - 2, 3, 4, 2, 3, 4, 0, 6, 2, 3, - 2, 1, 1, 2, 3, 3, 2, 3, 2, 1, - 2, 1, 1, 1, 3, 4, 6, 5, 1, 2, - 3, 5, 4, 1, 2, 1, 1, 1, 1, 4, - 1, 3, 1, 3, 1, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 4, 1, 3, 1, 2, 2, 3, 3, - 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 6, 0, 5, 1, - 2, 3, 4, 1, 3, 1, 2, 1, 3, 4, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 0, 0, 5, 1, 1, 0, 2, - 0, 2, 2, 3, 1, 2, 1, 2, 5, 3, - 1, 1, 4, 0, 8, 0, 1, 3, 2, 0, - 6, 0, 8, 0, 7, 1, 1, 1, 0, 2, - 3, 2, 2, 2, 3, 2, 1, 2, 1, 1, - 0, 3 -}; +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif #define YYRECOVERING() (!!yyerrstatus) @@ -2512,15 +2803,27 @@ do \ else \ { \ yyerror (pParseContext, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) + YYERROR; \ + } \ +while (YYID (0)) /* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYTERROR 1 +#define YYERRCODE 256 +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, parseContext) +#endif /* Enable debugging if requested. */ #if YYDEBUG @@ -2530,47 +2833,58 @@ while (0) # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) -/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, pParseContext); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, pParseContext); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + glslang::TParseContext* pParseContext; +#endif { FILE *yyo = yyoutput; YYUSE (yyo); - YYUSE (pParseContext); if (!yyvaluep) return; + YYUSE (pParseContext); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); # endif - YYUSE (yytype); + switch (yytype) + { + default: + break; + } } @@ -2578,11 +2892,23 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue | Print this symbol on YYOUTPUT. | `--------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, pParseContext) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + glslang::TParseContext* pParseContext; +#endif { - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext); YYFPRINTF (yyoutput, ")"); @@ -2593,8 +2919,16 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, gls | TOP (included). | `------------------------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2605,42 +2939,50 @@ yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext) +yy_reduce_print (YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext) +#else +static void +yy_reduce_print (yyvsp, yyrule, pParseContext) + YYSTYPE *yyvsp; + int yyrule; + glslang::TParseContext* pParseContext; +#endif { - unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; + unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , pParseContext); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , pParseContext); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule, pParseContext); \ -} while (0) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule, pParseContext); \ +} while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -2654,7 +2996,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -2677,8 +3019,15 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -2694,8 +3043,16 @@ yystrlen (const char *yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif { char *yyd = yydest; const char *yys = yysrc; @@ -2725,27 +3082,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -2768,11 +3125,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; + const char *yyformat = YY_NULL; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -2780,6 +3137,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -2829,7 +3190,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -2896,18 +3257,33 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, pParseContext) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + glslang::TParseContext* pParseContext; +#endif { YYUSE (yyvaluep); YYUSE (pParseContext); + if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END + switch (yytype) + { + + default: + break; + } } @@ -2917,18 +3293,56 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseCon | yyparse. | `----------*/ +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) int yyparse (glslang::TParseContext* pParseContext) +#else +int +yyparse (pParseContext) + glslang::TParseContext* pParseContext; +#endif +#endif { /* The lookahead symbol. */ int yychar; -/* The semantic value of the lookahead symbol. */ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ -YY_INITIAL_VALUE (static YYSTYPE yyval_default;) -YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); +static YYSTYPE yyval_default; +# define YY_INITIAL_VALUE(Value) = Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); /* Number of syntax errors so far. */ int yynerrs; @@ -2938,8 +3352,8 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); int yyerrstatus; /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. + `yyss': related to states. + `yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -3007,23 +3421,23 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); - yyss = yyss1; - yyvs = yyvs1; + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -3031,22 +3445,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -3055,10 +3469,10 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -3087,7 +3501,7 @@ yybackup: if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (&yylval, parseContext); + yychar = YYLEX; } if (yychar <= YYEOF) @@ -3152,7 +3566,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. + `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -3166,247 +3580,259 @@ yyreduce: switch (yyn) { case 2: -#line 246 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 250 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); + (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[(1) - (1)].lex).loc, (yyvsp[(1) - (1)].lex).symbol, (yyvsp[(1) - (1)].lex).string); } -#line 3174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 3: -#line 252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 256 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 4: -#line 255 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 259 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 5: -#line 258 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 262 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 6: -#line 262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 266 "glslang.y" { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i64, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 7: -#line 266 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 270 "glslang.y" { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u64, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 8: -#line 270 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 274 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtFloat, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 9: -#line 273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 277 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtDouble, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 10: -#line 277 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 281 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtFloat16, (yyvsp[(1) - (1)].lex).loc, true); +#endif } -#line 3242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 11: -#line 280 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 287 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); - if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) - (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).b, (yyvsp[(1) - (1)].lex).loc, true); } -#line 3252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 12: -#line 288 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 290 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode); + if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) + (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 3260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 13: -#line 291 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 298 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 14: -#line 294 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 301 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.intermTypedNode), (yyvsp[(3) - (4)].interm.intermTypedNode)); } -#line 3276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 15: -#line 297 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 304 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 16: -#line 300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 307 "glslang.y" { - parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); - parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[(3) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode), *(yyvsp[(3) - (3)].lex).string); } -#line 3294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 17: -#line 305 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 310 "glslang.y" { - parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); - parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); + parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode)); + parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "++", (yyvsp[(1) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "++", EOpPostIncrement, (yyvsp[(1) - (2)].interm.intermTypedNode)); } -#line 3304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 18: -#line 313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 315 "glslang.y" { - parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode)); + parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "--", (yyvsp[(1) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "--", EOpPostDecrement, (yyvsp[(1) - (2)].interm.intermTypedNode)); } -#line 3313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 19: -#line 320 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 323 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); - delete (yyvsp[0].interm).function; + parseContext.integerCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "[]"); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 20: -#line 327 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 330 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); + (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[(1) - (1)].interm).loc, (yyvsp[(1) - (1)].interm).function, (yyvsp[(1) - (1)].interm).intermNode); + delete (yyvsp[(1) - (1)].interm).function; } -#line 3330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 21: -#line 333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 337 "glslang.y" { - (yyval.interm) = (yyvsp[-1].interm); - (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm) = (yyvsp[(1) - (1)].interm); } -#line 3339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 22: -#line 337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 343 "glslang.y" { - (yyval.interm) = (yyvsp[-1].interm); - (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm) = (yyvsp[(1) - (2)].interm); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; } -#line 3348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 23: -#line 344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 347 "glslang.y" { - (yyval.interm) = (yyvsp[-1].interm); + (yyval.interm) = (yyvsp[(1) - (2)].interm); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; } -#line 3356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 24: -#line 347 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 354 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); + (yyval.interm) = (yyvsp[(1) - (2)].interm); } -#line 3364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 25: -#line 353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 357 "glslang.y" { - TParameter param = { 0, new TType }; - param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); - (yyvsp[-1].interm).function->addParameter(param); - (yyval.interm).function = (yyvsp[-1].interm).function; - (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); + (yyval.interm) = (yyvsp[(1) - (1)].interm); } -#line 3376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 26: -#line 360 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 363 "glslang.y" { TParameter param = { 0, new TType }; - param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); - (yyvsp[-2].interm).function->addParameter(param); - (yyval.interm).function = (yyvsp[-2].interm).function; - (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); + param.type->shallowCopy((yyvsp[(2) - (2)].interm.intermTypedNode)->getType()); + (yyvsp[(1) - (2)].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[(1) - (2)].interm).function; + (yyval.interm).intermNode = (yyvsp[(2) - (2)].interm.intermTypedNode); } -#line 3388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 27: -#line 370 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 370 "glslang.y" { - (yyval.interm) = (yyvsp[-1].interm); + TParameter param = { 0, new TType }; + param.type->shallowCopy((yyvsp[(3) - (3)].interm.intermTypedNode)->getType()); + (yyvsp[(1) - (3)].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[(1) - (3)].interm).function; + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc); } -#line 3396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 28: -#line 378 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 380 "glslang.y" { - // Constructor - (yyval.interm).intermNode = 0; - (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); + (yyval.interm) = (yyvsp[(1) - (2)].interm); } -#line 3406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 29: -#line 383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 388 "glslang.y" + { + // Constructor + (yyval.interm).intermNode = 0; + (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type)); + } + break; + + case 30: +/* Line 1792 of yacc.c */ +#line 393 "glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -3414,18 +3840,18 @@ yyreduce: (yyval.interm).function = 0; (yyval.interm).intermNode = 0; - TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode(); + TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode(); if (method) { (yyval.interm).function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); (yyval.interm).intermNode = method->getObject(); } else { - TIntermSymbol* symbol = (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode(); + TIntermSymbol* symbol = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsSymbolNode(); if (symbol) { parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName()); TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid)); (yyval.interm).function = function; } else - parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", ""); + parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", ""); } if ((yyval.interm).function == 0) { @@ -3434,3696 +3860,3916 @@ yyreduce: (yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull); } } -#line 3438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 30: -#line 413 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) - parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); - } -#line 3449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 31: -#line 419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 423 "glslang.y" { - parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); + parseContext.variableCheck((yyvsp[(1) - (1)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + if (TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode()) + parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 3458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 32: -#line 423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 429 "glslang.y" { - parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); + parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "++", (yyvsp[(2) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "++", EOpPreIncrement, (yyvsp[(2) - (2)].interm.intermTypedNode)); } -#line 3467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 33: -#line 427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 433 "glslang.y" { - if ((yyvsp[-1].interm).op != EOpNull) { + parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "--", (yyvsp[(2) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "--", EOpPreDecrement, (yyvsp[(2) - (2)].interm.intermTypedNode)); + } + break; + + case 34: +/* Line 1792 of yacc.c */ +#line 437 "glslang.y" + { + if ((yyvsp[(1) - (2)].interm).op != EOpNull) { char errorOp[2] = {0, 0}; - switch((yyvsp[-1].interm).op) { + switch((yyvsp[(1) - (2)].interm).op) { case EOpNegative: errorOp[0] = '-'; break; case EOpLogicalNot: errorOp[0] = '!'; break; case EOpBitwiseNot: errorOp[0] = '~'; break; default: break; // some compilers want this } - (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].interm).loc, errorOp, (yyvsp[-1].interm).op, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].interm).loc, errorOp, (yyvsp[(1) - (2)].interm).op, (yyvsp[(2) - (2)].interm.intermTypedNode)); } else { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 3488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 34: -#line 447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 3494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 35: -#line 448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 3500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 457 "glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNull; } break; case 36: -#line 449 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 3506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 458 "glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNegative; } break; case 37: -#line 450 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 3513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 459 "glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLogicalNot; } break; case 38: -#line 456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 460 "glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpBitwiseNot; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise not"); } break; case 39: -#line 457 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); - } -#line 3529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 466 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 40: -#line 462 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 467 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "*", EOpMul, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); } -#line 3539 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 41: -#line 467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 472 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "/", EOpDiv, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); } -#line 3550 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 42: -#line 476 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 477 "glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "%"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "%", EOpMod, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 43: -#line 477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); - } -#line 3566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 486 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 44: -#line 482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 487 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "+", EOpAdd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); } -#line 3576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 45: -#line 490 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 492 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "-", EOpSub, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 46: -#line 491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); - } -#line 3593 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 500 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 47: -#line 497 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 501 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift left"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<<", EOpLeftShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); } -#line 3604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 48: -#line 506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 507 "glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift right"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">>", EOpRightShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 49: -#line 507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); - } -#line 3620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 516 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 50: -#line 512 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 517 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<", EOpLessThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); } -#line 3630 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 51: -#line 517 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 522 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">", EOpGreaterThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); } -#line 3640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 52: -#line 522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 527 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<=", EOpLessThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); } -#line 3650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 53: -#line 530 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 532 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } break; case 54: -#line 531 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); - parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); - parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "==", EOpEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); - } -#line 3669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 540 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 55: -#line 539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 541 "glslang.y" { - parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); - parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); - parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "!=", EOpNotEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=="); + parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=="); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "==", EOpEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); } -#line 3682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 56: -#line 550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 549 "glslang.y" + { + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!="); + parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!="); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "!=", EOpNotEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } break; case 57: -#line 551 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); - } -#line 3699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 560 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 58: -#line 560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 561 "glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise and"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&", EOpAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 59: -#line 561 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); - } -#line 3716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 570 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 60: -#line 570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 571 "glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise exclusive or"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^", EOpExclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 61: -#line 571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); - } -#line 3733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 580 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 62: -#line 580 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 581 "glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise inclusive or"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "|", EOpInclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } break; case 63: -#line 581 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); - } -#line 3749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 590 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 64: -#line 589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 591 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&&", EOpLogicalAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } break; case 65: -#line 590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); - } -#line 3765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 599 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 66: -#line 598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 600 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^^", EOpLogicalXor, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } break; case 67: -#line 599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); - } -#line 3781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 608 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 68: -#line 607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 609 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "||", EOpLogicalOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } break; case 69: -#line 608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - ++parseContext.controlFlowNestingLevel; - } -#line 3795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 617 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 70: -#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 618 "glslang.y" { - --parseContext.controlFlowNestingLevel; - parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); - parseContext.rValueErrorCheck((yyvsp[-4].lex).loc, "?", (yyvsp[-5].interm.intermTypedNode)); - parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)); - parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[0].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[-5].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-4].lex).loc); - if ((yyval.interm.intermTypedNode) == 0) { - parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } + ++parseContext.controlFlowNestingLevel; } -#line 3812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 71: -#line 626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 621 "glslang.y" + { + --parseContext.controlFlowNestingLevel; + parseContext.boolCheck((yyvsp[(2) - (6)].lex).loc, (yyvsp[(1) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(2) - (6)].lex).loc, "?", (yyvsp[(1) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(6) - (6)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[(1) - (6)].interm.intermTypedNode), (yyvsp[(4) - (6)].interm.intermTypedNode), (yyvsp[(6) - (6)].interm.intermTypedNode), (yyvsp[(2) - (6)].lex).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.binaryOpError((yyvsp[(2) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(6) - (6)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(6) - (6)].interm.intermTypedNode); + } + } break; case 72: -#line 627 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); - parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); - parseContext.specializationCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); - parseContext.lValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)); - parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode)); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].interm).loc); - if ((yyval.interm.intermTypedNode) == 0) { - parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); - } - } -#line 3835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 636 "glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } break; case 73: -#line 642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 637 "glslang.y" { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpAssign; + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array assignment"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "="); + parseContext.specializationCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "="); + parseContext.lValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(3) - (3)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[(2) - (3)].interm).op, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].interm).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.assignError((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } } -#line 3844 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 74: -#line 646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 652 "glslang.y" { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpMulAssign; + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpAssign; } -#line 3853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 75: -#line 650 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 656 "glslang.y" { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpDivAssign; + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpMulAssign; } -#line 3862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 76: -#line 654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 660 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpModAssign; + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpDivAssign; } -#line 3872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 77: -#line 659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 664 "glslang.y" { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpAddAssign; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "%="); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpModAssign; } -#line 3881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 78: -#line 663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 669 "glslang.y" { - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).op = EOpSubAssign; + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpAddAssign; } -#line 3890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 79: -#line 667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 673 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpSubAssign; } -#line 3899 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 80: -#line 671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 677 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift left assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 3908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 81: -#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 681 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift right assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 3917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 82: -#line 679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 685 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-and assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 3926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 83: -#line 683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 689 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); - (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-xor assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 3935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 84: -#line 690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 693 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-or assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 3943 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 85: -#line 693 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 700 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); - if ((yyval.interm.intermTypedNode) == 0) { - parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 86: -#line 703 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 703 "glslang.y" { - parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + parseContext.samplerConstructorLocationCheck((yyvsp[(2) - (3)].lex).loc, ",", (yyvsp[(3) - (3)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.binaryOpError((yyvsp[(2) - (3)].lex).loc, ",", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(3) - (3)].interm.intermTypedNode); + } } -#line 3964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 87: -#line 710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 714 "glslang.y" { - parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); - (yyval.interm.intermNode) = 0; - // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature + parseContext.constantValueCheck((yyvsp[(1) - (1)].interm.intermTypedNode), ""); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 3974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 88: -#line 715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 721 "glslang.y" { - if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) - (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); - (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; + parseContext.handleFunctionDeclarator((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).function, true /* prototype */); + (yyval.interm.intermNode) = 0; + // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 3984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 89: -#line 720 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 726 "glslang.y" { - parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); - - // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope - parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); - parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); - (yyval.interm.intermNode) = 0; + if ((yyvsp[(1) - (2)].interm).intermNode && (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate()) + (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(1) - (2)].interm).intermNode; } -#line 3997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 90: -#line 728 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 731 "glslang.y" { - parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); + parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ENoProfile, 130, 0, "precision statement"); + + // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope + parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); + parseContext.setDefaultPrecision((yyvsp[(1) - (4)].lex).loc, (yyvsp[(3) - (4)].interm.type), (yyvsp[(2) - (4)].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 4006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 91: -#line 732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 739 "glslang.y" { - parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); + parseContext.declareBlock((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 4015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 92: -#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 743 "glslang.y" { - parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); + parseContext.declareBlock((yyvsp[(1) - (3)].interm).loc, *(yyvsp[(1) - (3)].interm).typeList, (yyvsp[(2) - (3)].lex).string); (yyval.interm.intermNode) = 0; } -#line 4024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 93: -#line 740 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 747 "glslang.y" { - parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); - parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); + parseContext.declareBlock((yyvsp[(1) - (4)].interm).loc, *(yyvsp[(1) - (4)].interm).typeList, (yyvsp[(2) - (4)].lex).string, (yyvsp[(3) - (4)].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 4034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 94: -#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 751 "glslang.y" { - parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); - parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); + parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier); + parseContext.updateStandaloneQualifierDefaults((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type)); (yyval.interm.intermNode) = 0; } -#line 4044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 95: -#line 750 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 756 "glslang.y" { - parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); - (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); - parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); + parseContext.checkNoShaderLayouts((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).shaderQualifiers); + parseContext.addQualifierToExisting((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).qualifier, *(yyvsp[(2) - (3)].lex).string); (yyval.interm.intermNode) = 0; } -#line 4055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 96: -#line 759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 4061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 761 "glslang.y" + { + parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers); + (yyvsp[(3) - (4)].interm.identifierList)->push_back((yyvsp[(2) - (4)].lex).string); + parseContext.addQualifierToExisting((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier, *(yyvsp[(3) - (4)].interm.identifierList)); + (yyval.interm.intermNode) = 0; + } break; case 97: -#line 759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - --parseContext.structNestingLevel; - parseContext.blockName = (yyvsp[-4].lex).string; - parseContext.globalQualifierFixCheck((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).qualifier); - parseContext.checkNoShaderLayouts((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).shaderQualifiers); - parseContext.currentBlockQualifier = (yyvsp[-5].interm.type).qualifier; - (yyval.interm).loc = (yyvsp[-5].interm.type).loc; - (yyval.interm).typeList = (yyvsp[-1].interm.typeList); - } -#line 4075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 770 "glslang.y" + { parseContext.nestedBlockCheck((yyvsp[(1) - (3)].interm.type).loc); } break; case 98: -#line 770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 770 "glslang.y" { - (yyval.interm.identifierList) = new TIdentifierList; - (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); + --parseContext.structNestingLevel; + parseContext.blockName = (yyvsp[(2) - (6)].lex).string; + parseContext.globalQualifierFixCheck((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).qualifier); + parseContext.checkNoShaderLayouts((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).shaderQualifiers); + parseContext.currentBlockQualifier = (yyvsp[(1) - (6)].interm.type).qualifier; + (yyval.interm).loc = (yyvsp[(1) - (6)].interm.type).loc; + (yyval.interm).typeList = (yyvsp[(5) - (6)].interm.typeList); } -#line 4084 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 99: -#line 774 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 781 "glslang.y" { - (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); - (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); + (yyval.interm.identifierList) = new TIdentifierList; + (yyval.interm.identifierList)->push_back((yyvsp[(2) - (2)].lex).string); } -#line 4093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 100: -#line 781 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 785 "glslang.y" { - (yyval.interm).function = (yyvsp[-1].interm.function); - (yyval.interm).loc = (yyvsp[0].lex).loc; + (yyval.interm.identifierList) = (yyvsp[(1) - (3)].interm.identifierList); + (yyval.interm.identifierList)->push_back((yyvsp[(3) - (3)].lex).string); } -#line 4102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 101: -#line 788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 792 "glslang.y" { - (yyval.interm.function) = (yyvsp[0].interm.function); + (yyval.interm).function = (yyvsp[(1) - (2)].interm.function); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; } -#line 4110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 102: -#line 791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 799 "glslang.y" { - (yyval.interm.function) = (yyvsp[0].interm.function); + (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); } -#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 103: -#line 798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 802 "glslang.y" { - // Add the parameter - (yyval.interm.function) = (yyvsp[-1].interm.function); - if ((yyvsp[0].interm).param.type->getBasicType() != EbtVoid) - (yyvsp[-1].interm.function)->addParameter((yyvsp[0].interm).param); - else - delete (yyvsp[0].interm).param.type; + (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); } -#line 4131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 104: -#line 806 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 809 "glslang.y" + { + // Add the parameter + (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function); + if ((yyvsp[(2) - (2)].interm).param.type->getBasicType() != EbtVoid) + (yyvsp[(1) - (2)].interm.function)->addParameter((yyvsp[(2) - (2)].interm).param); + else + delete (yyvsp[(2) - (2)].interm).param.type; + } + break; + + case 105: +/* Line 1792 of yacc.c */ +#line 817 "glslang.y" { // // Only first parameter of one-parameter functions can be void // The check for named parameters not being void is done in parameter_declarator // - if ((yyvsp[0].interm).param.type->getBasicType() == EbtVoid) { + if ((yyvsp[(3) - (3)].interm).param.type->getBasicType() == EbtVoid) { // // This parameter > first is void // - parseContext.error((yyvsp[-1].lex).loc, "cannot be an argument type except for '(void)'", "void", ""); - delete (yyvsp[0].interm).param.type; + parseContext.error((yyvsp[(2) - (3)].lex).loc, "cannot be an argument type except for '(void)'", "void", ""); + delete (yyvsp[(3) - (3)].interm).param.type; } else { // Add the parameter - (yyval.interm.function) = (yyvsp[-2].interm.function); - (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); + (yyval.interm.function) = (yyvsp[(1) - (3)].interm.function); + (yyvsp[(1) - (3)].interm.function)->addParameter((yyvsp[(3) - (3)].interm).param); } } -#line 4153 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 105: -#line 826 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { - parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", - GetStorageQualifierString((yyvsp[-2].interm.type).qualifier.storage), ""); - } - if ((yyvsp[-2].interm.type).arraySizes) - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); - - // Add the function as a prototype after parsing it (we do not support recursion) - TFunction *function; - TType type((yyvsp[-2].interm.type)); - function = new TFunction((yyvsp[-1].lex).string, type); - (yyval.interm.function) = function; - } -#line 4172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 106: -#line 844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 837 "glslang.y" { - if ((yyvsp[-1].interm.type).arraySizes) { - parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - parseContext.arraySizeRequiredCheck((yyvsp[-1].interm.type).loc, *(yyvsp[-1].interm.type).arraySizes); + if ((yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqGlobal && (yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqTemporary) { + parseContext.error((yyvsp[(2) - (3)].lex).loc, "no qualifiers allowed for function return", + GetStorageQualifierString((yyvsp[(1) - (3)].interm.type).qualifier.storage), ""); } - if ((yyvsp[-1].interm.type).basicType == EbtVoid) { - parseContext.error((yyvsp[0].lex).loc, "illegal use of type 'void'", (yyvsp[0].lex).string->c_str(), ""); - } - parseContext.reservedErrorCheck((yyvsp[0].lex).loc, *(yyvsp[0].lex).string); + if ((yyvsp[(1) - (3)].interm.type).arraySizes) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); - TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type))}; - (yyval.interm).loc = (yyvsp[0].lex).loc; - (yyval.interm).param = param; + // Add the function as a prototype after parsing it (we do not support recursion) + TFunction *function; + TType type((yyvsp[(1) - (3)].interm.type)); + function = new TFunction((yyvsp[(2) - (3)].lex).string, type); + (yyval.interm.function) = function; } -#line 4192 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 107: -#line 859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 855 "glslang.y" { - if ((yyvsp[-2].interm.type).arraySizes) { - parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); + if ((yyvsp[(1) - (2)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (2)].interm.type).loc, *(yyvsp[(1) - (2)].interm.type).arraySizes); } - parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.type).arraySizes, (yyvsp[0].interm).arraySizes); + if ((yyvsp[(1) - (2)].interm.type).basicType == EbtVoid) { + parseContext.error((yyvsp[(2) - (2)].lex).loc, "illegal use of type 'void'", (yyvsp[(2) - (2)].lex).string->c_str(), ""); + } + parseContext.reservedErrorCheck((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string); - parseContext.arraySizeRequiredCheck((yyvsp[0].interm).loc, *(yyvsp[0].interm).arraySizes); - parseContext.reservedErrorCheck((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string); - - (yyvsp[-2].interm.type).arraySizes = (yyvsp[0].interm).arraySizes; - - TParameter param = { (yyvsp[-1].lex).string, new TType((yyvsp[-2].interm.type))}; - (yyval.interm).loc = (yyvsp[-1].lex).loc; + TParameter param = {(yyvsp[(2) - (2)].lex).string, new TType((yyvsp[(1) - (2)].interm.type))}; + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; (yyval.interm).param = param; } -#line 4214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 108: -#line 882 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 870 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); - if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) - (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; - parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + if ((yyvsp[(1) - (3)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); + } + parseContext.arrayDimCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.type).arraySizes, (yyvsp[(3) - (3)].interm).arraySizes); - parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); - parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); - parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); + parseContext.arraySizeRequiredCheck((yyvsp[(3) - (3)].interm).loc, *(yyvsp[(3) - (3)].interm).arraySizes); + parseContext.reservedErrorCheck((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string); + (yyvsp[(1) - (3)].interm.type).arraySizes = (yyvsp[(3) - (3)].interm).arraySizes; + + TParameter param = { (yyvsp[(2) - (3)].lex).string, new TType((yyvsp[(1) - (3)].interm.type))}; + (yyval.interm).loc = (yyvsp[(2) - (3)].lex).loc; + (yyval.interm).param = param; } -#line 4230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 109: -#line 893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 893 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); - - parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); - parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone) + (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision; parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + + parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type); + } -#line 4242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 110: -#line 903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 904 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); - if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) - (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; - parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + (yyval.interm) = (yyvsp[(1) - (1)].interm); - parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); - parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); - parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); + parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 4257 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 111: -#line 913 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 914 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone) + (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision; + parseContext.precisionQualifierCheck((yyvsp[(1) - (2)].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); - parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); - parseContext.paramCheckFix((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); - parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type); } -#line 4269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 112: -#line 923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 924 "glslang.y" { - TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; - (yyval.interm).param = param; - if ((yyvsp[0].interm.type).arraySizes) - parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); + (yyval.interm) = (yyvsp[(1) - (1)].interm); + + parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 4280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 113: -#line 932 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 934 "glslang.y" { - (yyval.interm) = (yyvsp[0].interm); + TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) }; + (yyval.interm).param = param; + if ((yyvsp[(1) - (1)].interm.type).arraySizes) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (1)].interm.type).loc, *(yyvsp[(1) - (1)].interm.type).arraySizes); } -#line 4288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 114: -#line 935 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 943 "glslang.y" { - (yyval.interm) = (yyvsp[-2].interm); - parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); + (yyval.interm) = (yyvsp[(1) - (1)].interm); } -#line 4297 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 115: -#line 939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 946 "glslang.y" { - (yyval.interm) = (yyvsp[-3].interm); - parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); + (yyval.interm) = (yyvsp[(1) - (3)].interm); + parseContext.declareVariable((yyvsp[(3) - (3)].lex).loc, *(yyvsp[(3) - (3)].lex).string, (yyvsp[(1) - (3)].interm).type); } -#line 4306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 116: -#line 943 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 950 "glslang.y" { - (yyval.interm).type = (yyvsp[-5].interm).type; - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); + (yyval.interm) = (yyvsp[(1) - (4)].interm); + parseContext.declareVariable((yyvsp[(3) - (4)].lex).loc, *(yyvsp[(3) - (4)].lex).string, (yyvsp[(1) - (4)].interm).type, (yyvsp[(4) - (4)].interm).arraySizes); } -#line 4316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 117: -#line 948 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 954 "glslang.y" { - (yyval.interm).type = (yyvsp[-4].interm).type; - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); + (yyval.interm).type = (yyvsp[(1) - (6)].interm).type; + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (6)].lex).loc, *(yyvsp[(3) - (6)].lex).string, (yyvsp[(1) - (6)].interm).type, (yyvsp[(4) - (6)].interm).arraySizes, (yyvsp[(6) - (6)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, initNode, (yyvsp[(5) - (6)].lex).loc); } -#line 4326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 118: -#line 956 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 959 "glslang.y" { - (yyval.interm).type = (yyvsp[0].interm.type); - (yyval.interm).intermNode = 0; - parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); + (yyval.interm).type = (yyvsp[(1) - (5)].interm).type; + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (5)].lex).loc, *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, 0, (yyvsp[(5) - (5)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (5)].interm).intermNode, initNode, (yyvsp[(4) - (5)].lex).loc); } -#line 4336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 119: -#line 961 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 967 "glslang.y" { - (yyval.interm).type = (yyvsp[-1].interm.type); + (yyval.interm).type = (yyvsp[(1) - (1)].interm.type); (yyval.interm).intermNode = 0; - parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); + parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 4346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 120: -#line 966 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 972 "glslang.y" { - (yyval.interm).type = (yyvsp[-2].interm.type); + (yyval.interm).type = (yyvsp[(1) - (2)].interm.type); (yyval.interm).intermNode = 0; - parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); + parseContext.declareVariable((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string, (yyvsp[(1) - (2)].interm.type)); } -#line 4356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 121: -#line 971 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 977 "glslang.y" { - (yyval.interm).type = (yyvsp[-4].interm.type); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); + (yyval.interm).type = (yyvsp[(1) - (3)].interm.type); + (yyval.interm).intermNode = 0; + parseContext.declareVariable((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string, (yyvsp[(1) - (3)].interm.type), (yyvsp[(3) - (3)].interm).arraySizes); } -#line 4366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 122: -#line 976 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 982 "glslang.y" { - (yyval.interm).type = (yyvsp[-3].interm.type); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); + (yyval.interm).type = (yyvsp[(1) - (5)].interm.type); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (5)].lex).loc, *(yyvsp[(2) - (5)].lex).string, (yyvsp[(1) - (5)].interm.type), (yyvsp[(3) - (5)].interm).arraySizes, (yyvsp[(5) - (5)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(4) - (5)].lex).loc); } -#line 4376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 123: -#line 985 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 987 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm).type = (yyvsp[(1) - (4)].interm.type); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(3) - (4)].lex).loc); + } + break; - parseContext.globalQualifierTypeCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyval.interm.type)); - if ((yyvsp[0].interm.type).arraySizes) { - parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + case 124: +/* Line 1792 of yacc.c */ +#line 996 "glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + + parseContext.globalQualifierTypeCheck((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type).qualifier, (yyval.interm.type)); + if ((yyvsp[(1) - (1)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 4392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 124: -#line 996 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 125: +/* Line 1792 of yacc.c */ +#line 1007 "glslang.y" { - parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); - parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); + parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier); + parseContext.globalQualifierTypeCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, (yyvsp[(2) - (2)].interm.type)); - if ((yyvsp[0].interm.type).arraySizes) { - parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + if ((yyvsp[(2) - (2)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); } - if ((yyvsp[0].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).qualifier)) - (yyvsp[0].interm.type).arraySizes = 0; + if ((yyvsp[(2) - (2)].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier)) + (yyvsp[(2) - (2)].interm.type).arraySizes = 0; - parseContext.checkNoShaderLayouts((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); - (yyvsp[0].interm.type).shaderQualifiers.merge((yyvsp[-1].interm.type).shaderQualifiers); - parseContext.mergeQualifiers((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyvsp[-1].interm.type).qualifier, true); - parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier); + parseContext.checkNoShaderLayouts((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + (yyvsp[(2) - (2)].interm.type).shaderQualifiers.merge((yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.mergeQualifiers((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).qualifier, (yyvsp[(1) - (2)].interm.type).qualifier, true); + parseContext.precisionQualifierCheck((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).basicType, (yyvsp[(2) - (2)].interm.type).qualifier); - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type); if (! (yyval.interm.type).qualifier.isInterpolation() && ((parseContext.language == EShLangVertex && (yyval.interm.type).qualifier.storage == EvqVaryingOut) || (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 4421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 125: -#line 1023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); - parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.invariant = true; - } -#line 4432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 126: -#line 1032 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1034 "glslang.y" { - parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "smooth"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.smooth = true; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "invariant"); + parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.invariant = true; } -#line 4444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 127: -#line 1039 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1043 "glslang.y" { - parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "flat"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.flat = true; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "smooth"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "smooth"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "smooth"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.smooth = true; } -#line 4456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 128: -#line 1046 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1050 "glslang.y" { - parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); - parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "noperspective"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.nopersp = true; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "flat"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "flat"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "flat"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.flat = true; } -#line 4468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 129: -#line 1056 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1057 "glslang.y" { - (yyval.interm.type) = (yyvsp[-1].interm.type); + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "noperspective"); + parseContext.requireProfile((yyvsp[(1) - (1)].lex).loc, ~EEsProfile, "noperspective"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "noperspective"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.nopersp = true; } -#line 4476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 130: -#line 1062 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1064 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); +#ifdef AMD_EXTENSIONS + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "__explicitInterpAMD"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.explicitInterp = true; +#endif } -#line 4484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 131: -#line 1065 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1076 "glslang.y" { - (yyval.interm.type) = (yyvsp[-2].interm.type); - (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); - parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); + (yyval.interm.type) = (yyvsp[(3) - (4)].interm.type); } -#line 4494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 132: -#line 1072 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1082 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 133: -#line 1076 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1085 "glslang.y" { - (yyval.interm.type).init((yyvsp[-2].lex).loc); - parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.type) = (yyvsp[(1) - (3)].interm.type); + (yyval.interm.type).shaderQualifiers.merge((yyvsp[(3) - (3)].interm.type).shaderQualifiers); + parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[(3) - (3)].interm.type).qualifier, false); } -#line 4512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 134: -#line 1080 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { // because "shared" is both an identifier and a keyword - (yyval.interm.type).init((yyvsp[0].lex).loc); - TString strShared("shared"); - parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); +/* Line 1792 of yacc.c */ +#line 1092 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (1)].lex).string); } -#line 4522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 135: -#line 1088 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1096 "glslang.y" { - parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.noContraction = true; + (yyval.interm.type).init((yyvsp[(1) - (3)].lex).loc); + parseContext.setLayoutQualifier((yyvsp[(1) - (3)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (3)].lex).string, (yyvsp[(3) - (3)].interm.intermTypedNode)); } -#line 4533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 136: -#line 1097 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); +/* Line 1792 of yacc.c */ +#line 1100 "glslang.y" + { // because "shared" is both an identifier and a keyword + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + TString strShared("shared"); + parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), strShared); } -#line 4541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 137: -#line 1100 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1108 "glslang.y" { - (yyval.interm.type) = (yyvsp[-1].interm.type); - if ((yyval.interm.type).basicType == EbtVoid) - (yyval.interm.type).basicType = (yyvsp[0].interm.type).basicType; - - (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); - parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); + parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.noContraction = true; } -#line 4554 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 138: -#line 1111 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1117 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 139: -#line 1114 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1120 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type); + if ((yyval.interm.type).basicType == EbtVoid) + (yyval.interm.type).basicType = (yyvsp[(2) - (2)].interm.type).basicType; + + (yyval.interm.type).shaderQualifiers.merge((yyvsp[(2) - (2)].interm.type).shaderQualifiers); + parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[(2) - (2)].interm.type).qualifier, false); } -#line 4570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 140: -#line 1117 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1131 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 141: -#line 1120 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1134 "glslang.y" { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 142: -#line 1124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1137 "glslang.y" { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); + parseContext.checkPrecisionQualifier((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type).qualifier.precision); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 143: -#line 1128 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1141 "glslang.y" { // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4605 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 144: -#line 1135 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1145 "glslang.y" { - (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 + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 145: -#line 1139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1149 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "attribute"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "attribute"); - - parseContext.globalCheck((yyvsp[0].lex).loc, "attribute"); - - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqVaryingIn; + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); } -#line 4631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 146: -#line 1151 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1156 "glslang.y" { - parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "varying"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant + } + break; - parseContext.globalCheck((yyvsp[0].lex).loc, "varying"); + case 147: +/* Line 1792 of yacc.c */ +#line 1160 "glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangVertex, "attribute"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "attribute"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "attribute"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "attribute"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "attribute"); - (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "attribute"); + + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqVaryingIn; + } + break; + + case 148: +/* Line 1792 of yacc.c */ +#line 1172 "glslang.y" + { + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "varying"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "varying"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "varying"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "varying"); + + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "varying"); + + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); if (parseContext.language == EShLangVertex) (yyval.interm.type).qualifier.storage = EvqVaryingOut; else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 4650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 147: -#line 1165 "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 4660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 148: -#line 1170 "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 4671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 149: -#line 1176 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1186 "glslang.y" { - 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; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "inout"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 4682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 150: -#line 1182 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1191 "glslang.y" { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); - parseContext.globalCheck((yyvsp[0].lex).loc, "centroid"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.centroid = true; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "in"); + (yyval.interm.type).init((yyvsp[(1) - (1)].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 4694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 151: -#line 1189 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1197 "glslang.y" { - 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; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "out"); + (yyval.interm.type).init((yyvsp[(1) - (1)].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 4705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 152: -#line 1195 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1203 "glslang.y" { - parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.sample = true; + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 120, 0, "centroid"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "centroid"); + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "centroid"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.centroid = true; } -#line 4715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 153: -#line 1200 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1210 "glslang.y" { - parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqUniform; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "patch"); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.patch = true; } -#line 4725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 154: -#line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1216 "glslang.y" { - parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqBuffer; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "sample"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.sample = true; } -#line 4735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 155: -#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1221 "glslang.y" { - 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"); - parseContext.requireStage((yyvsp[0].lex).loc, EShLangCompute, "shared"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqShared; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "uniform"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 4747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 156: -#line 1217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1226 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.coherent = true; + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "buffer"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 4756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 157: -#line 1221 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1231 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.volatil = true; + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 310, 0, "shared"); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangCompute, "shared"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqShared; } -#line 4765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 158: -#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1238 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.restrict = true; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.coherent = true; } -#line 4774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 159: -#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1242 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.readonly = true; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.volatil = true; } -#line 4783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 160: -#line 1233 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1246 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.writeonly = true; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.restrict = true; } -#line 4792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 161: -#line 1237 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1250 "glslang.y" { - 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; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.readonly = true; } -#line 4803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 162: -#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1254 "glslang.y" { - parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); - parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); - (yyval.interm.type).init((yyvsp[-3].lex).loc); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.writeonly = true; + } + break; + + case 163: +/* Line 1792 of yacc.c */ +#line 1258 "glslang.y" + { + parseContext.spvRemoved((yyvsp[(1) - (1)].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqUniform; + } + break; + + case 164: +/* Line 1792 of yacc.c */ +#line 1264 "glslang.y" + { + parseContext.spvRemoved((yyvsp[(1) - (4)].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[(1) - (4)].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[(1) - (4)].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; // TODO: 4.0 semantics: subroutines // 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 4817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 163: -#line 1255 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // TODO: 4.0 functionality: subroutine type to list - } -#line 4825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 164: -#line 1258 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - } -#line 4832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 165: -#line 1263 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1276 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); - (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); + // TODO: 4.0 functionality: subroutine type to list } -#line 4841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 166: -#line 1267 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1279 "glslang.y" { - 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 4852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 167: -#line 1276 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1284 "glslang.y" { - (yyval.interm).loc = (yyvsp[-1].lex).loc; - (yyval.interm).arraySizes = new TArraySizes; - (yyval.interm).arraySizes->addInnerSize(); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); } -#line 4862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 168: -#line 1281 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1288 "glslang.y" { - (yyval.interm).loc = (yyvsp[-2].lex).loc; - (yyval.interm).arraySizes = new TArraySizes; - - TArraySize size; - parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size); - (yyval.interm).arraySizes->addInnerSize(size); + parseContext.arrayDimCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0); + (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type); + (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); + (yyval.interm.type).arraySizes = (yyvsp[(2) - (2)].interm).arraySizes; } -#line 4875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 169: -#line 1289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1297 "glslang.y" { - (yyval.interm) = (yyvsp[-2].interm); + (yyval.interm).loc = (yyvsp[(1) - (2)].lex).loc; + (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 4884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 170: -#line 1293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1302 "glslang.y" { - (yyval.interm) = (yyvsp[-3].interm); + (yyval.interm).loc = (yyvsp[(1) - (3)].lex).loc; + (yyval.interm).arraySizes = new TArraySizes; TArraySize size; - parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size); + parseContext.arraySizeCheck((yyvsp[(2) - (3)].interm.intermTypedNode)->getLoc(), (yyvsp[(2) - (3)].interm.intermTypedNode), size); (yyval.interm).arraySizes->addInnerSize(size); } -#line 4896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 171: -#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1310 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtVoid; + (yyval.interm) = (yyvsp[(1) - (3)].interm); + (yyval.interm).arraySizes->addInnerSize(); } -#line 4905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 172: -#line 1307 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1314 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; + (yyval.interm) = (yyvsp[(1) - (4)].interm); + + TArraySize size; + parseContext.arraySizeCheck((yyvsp[(3) - (4)].interm.intermTypedNode)->getLoc(), (yyvsp[(3) - (4)].interm.intermTypedNode), size); + (yyval.interm).arraySizes->addInnerSize(size); } -#line 4914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 173: -#line 1311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1324 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtVoid; } -#line 4924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 174: -#line 1316 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1328 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; } -#line 4933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 175: -#line 1320 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1332 "glslang.y" { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; } -#line 4943 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 176: -#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1337 "glslang.y" { - 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; +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; +#endif } -#line 4953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 177: -#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1344 "glslang.y" { - 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; + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; } -#line 4963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 178: -#line 1335 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1348 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; } -#line 4972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 179: -#line 1339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1353 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; } -#line 4982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 180: -#line 1344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1358 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; } -#line 4992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 181: -#line 1349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1363 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(4); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; } -#line 5002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 182: -#line 1354 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1367 "glslang.y" { - 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).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 183: -#line 1360 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1372 "glslang.y" { - 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).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 5024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 184: -#line 1366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1377 "glslang.y" { - 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).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 5035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 185: -#line 1372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1382 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 5045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 186: -#line 1377 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1388 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 5055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 187: -#line 1382 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1394 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 5065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 188: -#line 1387 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1400 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); +#endif } -#line 5075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 189: -#line 1392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1408 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); +#endif } -#line 5085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 190: -#line 1397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1416 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); +#endif } -#line 5095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 191: -#line 1402 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1424 "glslang.y" { - 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).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 5106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 192: -#line 1408 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1429 "glslang.y" { - 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).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 193: -#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1434 "glslang.y" { - 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).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 5128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 194: -#line 1420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1439 "glslang.y" { - 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).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 5139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 195: -#line 1426 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1444 "glslang.y" { - 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).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 5150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 196: -#line 1432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1449 "glslang.y" { - 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).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 5161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 197: -#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1454 "glslang.y" { - 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; + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 5172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 198: -#line 1444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1460 "glslang.y" { - 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; + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 5183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 199: -#line 1450 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1466 "glslang.y" { - 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; + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 5194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 200: -#line 1456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1472 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); } -#line 5204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 201: -#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1478 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); } -#line 5214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 202: -#line 1466 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1484 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(4); } -#line 5224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 203: -#line 1471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1490 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(2); } -#line 5234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 204: -#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1496 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 3); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(3); } -#line 5244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 205: -#line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1502 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 4); + parseContext.int64Check((yyvsp[(1) - (1)].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(4); } -#line 5254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 206: -#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1508 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).setMatrix(2, 2); } -#line 5264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 207: -#line 1491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1513 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 5274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 208: -#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1518 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).setMatrix(4, 4); } -#line 5284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 209: -#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1523 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).setMatrix(2, 2); } -#line 5294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 210: -#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1528 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).setMatrix(2, 3); } -#line 5304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 211: -#line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1533 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).setMatrix(2, 4); } -#line 5314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 212: -#line 1516 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1538 "glslang.y" { - 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); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 2); } -#line 5325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 213: -#line 1522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1543 "glslang.y" { - 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).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 5336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 214: -#line 1528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1548 "glslang.y" { - 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); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 4); } -#line 5347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 215: -#line 1534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1553 "glslang.y" { - 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); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 2); } -#line 5358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 216: -#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1558 "glslang.y" { - 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); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 3); } -#line 5369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 217: -#line 1546 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1563 "glslang.y" { - 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); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); } -#line 5380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 218: -#line 1552 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1568 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).setMatrix(2, 2); } -#line 5391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 219: -#line 1558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1574 "glslang.y" { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 5402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 220: -#line 1564 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1580 "glslang.y" { - 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 5413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 221: -#line 1570 "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 5424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 222: -#line 1576 "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 5435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 223: -#line 1582 "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()); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 5446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 221: +/* Line 1792 of yacc.c */ +#line 1586 "glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); + } + break; + + case 222: +/* Line 1792 of yacc.c */ +#line 1592 "glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 3); + } + break; + + case 223: +/* Line 1792 of yacc.c */ +#line 1598 "glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 4); + } break; case 224: -#line 1588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1604 "glslang.y" { - 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; + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 2); } -#line 5456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 225: -#line 1593 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1610 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd1D); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); } -#line 5466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 226: -#line 1598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1616 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 4); } -#line 5476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 227: -#line 1603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1622 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd3D); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 2); } -#line 5486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 228: -#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1628 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdCube); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 3); } -#line 5496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 229: -#line 1613 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1634 "glslang.y" { - (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); + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); } -#line 5506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 230: -#line 1618 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1640 "glslang.y" { - (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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 2); +#endif } -#line 5516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 231: -#line 1623 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1648 "glslang.y" { - (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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 3); +#endif } -#line 5526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 232: -#line 1628 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1656 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 4); +#endif } -#line 5536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 233: -#line 1633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1664 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 2); +#endif } -#line 5546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 234: -#line 1638 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1672 "glslang.y" { - (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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 3); +#endif } -#line 5556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 235: -#line 1643 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1680 "glslang.y" { - (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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 4); +#endif } -#line 5566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 236: -#line 1648 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1688 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 2); +#endif } -#line 5576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 237: -#line 1653 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1696 "glslang.y" { - (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); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 3); +#endif } -#line 5586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 238: -#line 1658 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1704 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd1D); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 4); +#endif } -#line 5596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 239: -#line 1663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1712 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 2); +#endif } -#line 5606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 240: -#line 1668 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1720 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd3D); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 3); +#endif } -#line 5616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 241: -#line 1673 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1728 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdCube); +#ifdef AMD_EXTENSIONS + parseContext.float16Check((yyvsp[(1) - (1)].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 4); +#endif } -#line 5626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 242: -#line 1678 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1736 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); + parseContext.vulkanRemoved((yyvsp[(1) - (1)].lex).loc, "atomic counter types"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtAtomicUint; } -#line 5636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 243: -#line 1683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1741 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 5646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 244: -#line 1688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1746 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 5656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 245: -#line 1693 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1751 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd1D); + (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 5666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 246: -#line 1698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1756 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D); + (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 5676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 247: -#line 1703 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1761 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd3D); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 5686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 248: -#line 1708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1766 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdCube); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 5696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 249: -#line 1713 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1771 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 5706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 250: -#line 1718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1776 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 5716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 251: -#line 1723 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1781 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 5726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 252: -#line 1728 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1786 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdRect); + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 5736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 253: -#line 1733 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1791 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 5746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 254: -#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1796 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdRect); + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 5756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 255: -#line 1743 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1801 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdRect); + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 5766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 256: -#line 1748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1806 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); + (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 5776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 257: -#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1811 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); + (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 5786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 258: -#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1816 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); + (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 5796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 259: -#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1821 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); + (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 5806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 260: -#line 1768 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1826 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); + (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 5816 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 261: -#line 1773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1831 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 5826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 262: -#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1836 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); + (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 5836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 263: -#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1841 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); + (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 5846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 264: -#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1846 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); + (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 5856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 265: -#line 1793 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1851 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setPureSampler(false); + (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 5866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 266: -#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1856 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setPureSampler(true); + (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 5876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 267: -#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1861 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); + (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 5886 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 268: -#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1866 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 5896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 269: -#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1871 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); + (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 5906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 270: -#line 1818 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1876 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); + (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 5916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 271: -#line 1823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1881 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); + (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 5926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 272: -#line 1828 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1886 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); + (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 5936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 273: -#line 1833 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1891 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); + (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 5946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 274: -#line 1838 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1896 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); + (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 5956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 275: -#line 1843 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1901 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); + (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 5966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 276: -#line 1848 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1906 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); + (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 5976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 277: -#line 1853 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1911 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 5986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 278: -#line 1858 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1916 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 5996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 279: -#line 1863 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1921 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 6006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 280: -#line 1868 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1926 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 6016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 281: -#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1931 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 6026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 282: -#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1936 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 6036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 283: -#line 1883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1941 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); + (yyval.interm.type).sampler.setPureSampler(false); } -#line 6046 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 284: -#line 1888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1946 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); + (yyval.interm.type).sampler.setPureSampler(true); } -#line 6056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 285: -#line 1893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1951 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 6066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 286: -#line 1898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1956 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 6076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 287: -#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1961 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 6086 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 288: -#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1966 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 6096 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 289: -#line 1913 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1971 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 6106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 290: -#line 1918 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1976 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 6116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 291: -#line 1923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1981 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 6126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 292: -#line 1928 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1986 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 6136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 293: -#line 1933 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1991 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 6146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 294: -#line 1938 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1996 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 6156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 295: -#line 1943 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2001 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 6166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 296: -#line 1948 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2006 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 6176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 297: -#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2011 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 6186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 298: -#line 1958 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2016 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 6196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 299: -#line 1963 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2021 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 6206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 300: -#line 1968 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2026 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 6216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 301: -#line 1973 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2031 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 6226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 302: -#line 1978 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2036 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 6236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 303: -#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2041 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 6246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 304: -#line 1988 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2046 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 6256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 305: -#line 1993 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2051 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 6266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 306: -#line 1998 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2056 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 6276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 307: -#line 2003 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2061 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 6286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 308: -#line 2008 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2066 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 6296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 309: -#line 2013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2071 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 6306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 310: -#line 2018 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2076 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 6316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 311: -#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2081 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 6326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 312: -#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2086 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 6336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 313: -#line 2033 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2091 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 6346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 314: -#line 2038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2096 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 6356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 315: -#line 2043 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2101 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 6366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 316: -#line 2048 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2106 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 6376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 317: -#line 2053 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2111 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 6386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 318: -#line 2058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2116 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 6396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 319: -#line 2063 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2121 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 6406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 320: -#line 2068 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2126 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 6416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 321: -#line 2073 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2131 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 6426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 322: -#line 2078 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2136 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 6436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 323: -#line 2083 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2141 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 6446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 324: -#line 2088 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2146 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 6456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 325: -#line 2093 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2151 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 6466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 326: -#line 2098 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2156 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); + (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 6476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 327: -#line 2103 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2161 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 6486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 328: -#line 2108 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2166 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 329: -#line 2113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2171 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); + (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 6506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 330: -#line 2118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2176 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 6516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 331: -#line 2123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2181 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 6526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 332: -#line 2128 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2186 "glslang.y" { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 6536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 333: -#line 2133 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2191 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); + } + break; + + case 334: +/* Line 1792 of yacc.c */ +#line 2196 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); + } + break; + + case 335: +/* Line 1792 of yacc.c */ +#line 2201 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); + } + break; + + case 336: +/* Line 1792 of yacc.c */ +#line 2206 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); + } + break; + + case 337: +/* Line 1792 of yacc.c */ +#line 2211 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); + } + break; + + case 338: +/* Line 1792 of yacc.c */ +#line 2216 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); + } + break; + + case 339: +/* Line 1792 of yacc.c */ +#line 2221 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); + } + break; + + case 340: +/* Line 1792 of yacc.c */ +#line 2226 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); + } + break; + + case 341: +/* Line 1792 of yacc.c */ +#line 2231 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); + } + break; + + case 342: +/* Line 1792 of yacc.c */ +#line 2236 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); + } + break; + + case 343: +/* Line 1792 of yacc.c */ +#line 2241 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); + } + break; + + case 344: +/* Line 1792 of yacc.c */ +#line 2246 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); + } + break; + + case 345: +/* Line 1792 of yacc.c */ +#line 2251 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); + } + break; + + case 346: +/* Line 1792 of yacc.c */ +#line 2256 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); + } + break; + + case 347: +/* Line 1792 of yacc.c */ +#line 2261 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); + } + break; + + case 348: +/* Line 1792 of yacc.c */ +#line 2266 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); + } + break; + + case 349: +/* Line 1792 of yacc.c */ +#line 2271 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); + } + break; + + case 350: +/* Line 1792 of yacc.c */ +#line 2276 "glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); + } + break; + + case 351: +/* Line 1792 of yacc.c */ +#line 2281 "glslang.y" { // GL_OES_EGL_image_external - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 6547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 334: -#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 352: +/* Line 1792 of yacc.c */ +#line 2287 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 6558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 335: -#line 2145 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 353: +/* Line 1792 of yacc.c */ +#line 2293 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 6569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 336: -#line 2151 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 354: +/* Line 1792 of yacc.c */ +#line 2299 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 6580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 337: -#line 2157 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 355: +/* Line 1792 of yacc.c */ +#line 2305 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 6591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 338: -#line 2163 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 356: +/* Line 1792 of yacc.c */ +#line 2311 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 6602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 339: -#line 2169 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 357: +/* Line 1792 of yacc.c */ +#line 2317 "glslang.y" { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 6613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 340: -#line 2175 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 358: +/* Line 1792 of yacc.c */ +#line 2323 "glslang.y" { - (yyval.interm.type) = (yyvsp[0].interm.type); + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 6623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 341: -#line 2180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 359: +/* Line 1792 of yacc.c */ +#line 2328 "glslang.y" { // // This is for user defined type names. The lexical phase looked up the // type. // - if (const TVariable* variable = ((yyvsp[0].lex).symbol)->getAsVariable()) { + if (const TVariable* variable = ((yyvsp[(1) - (1)].lex).symbol)->getAsVariable()) { const TType& structure = variable->getType(); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtStruct; (yyval.interm.type).userDef = &structure; } else - parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); + parseContext.error((yyvsp[(1) - (1)].lex).loc, "expected type name", (yyvsp[(1) - (1)].lex).string->c_str(), ""); } -#line 6641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 342: -#line 2196 "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; - } -#line 6652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 343: -#line 2202 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - 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; - } -#line 6663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 344: -#line 2208 "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; - } -#line 6674 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 345: -#line 2217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 6680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 346: -#line 2217 "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); - TVariable* userTypeDef = new TVariable((yyvsp[-4].lex).string, *structure, true); - if (! parseContext.symbolTable.insert(*userTypeDef)) - parseContext.error((yyvsp[-4].lex).loc, "redefinition", (yyvsp[-4].lex).string->c_str(), "struct"); - (yyval.interm.type).init((yyvsp[-5].lex).loc); - (yyval.interm.type).basicType = EbtStruct; - (yyval.interm.type).userDef = structure; - --parseContext.structNestingLevel; - } -#line 6696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 347: -#line 2228 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 6702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 348: -#line 2228 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); - (yyval.interm.type).init((yyvsp[-4].lex).loc); - (yyval.interm.type).basicType = EbtStruct; - (yyval.interm.type).userDef = structure; - --parseContext.structNestingLevel; - } -#line 6714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 349: -#line 2238 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList) = (yyvsp[0].interm.typeList); - } -#line 6722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 350: -#line 2241 "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) { - for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) { - if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[0].interm.typeList))[i].type->getFieldName()) - parseContext.error((*(yyvsp[0].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[0].interm.typeList))[i].type->getFieldName().c_str()); - } - (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); - } - } -#line 6737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 351: -#line 2254 "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"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - if (parseContext.profile == EEsProfile) - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); - } - - (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); - - parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); - parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier); - - for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { - parseContext.arrayDimCheck((yyvsp[-2].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[-2].interm.type).arraySizes); - (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type)); - } - } -#line 6760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 352: -#line 2272 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalQualifierFixCheck((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier); - if ((yyvsp[-2].interm.type).arraySizes) { - parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); - if (parseContext.profile == EEsProfile) - parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); - } - - (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); - - parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); - parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); - parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true); - parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier); - - for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { - parseContext.arrayDimCheck((yyvsp[-3].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[-2].interm.type).arraySizes); - (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[-2].interm.type)); - } - } -#line 6786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 353: -#line 2296 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList) = new TTypeList; - (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); - } -#line 6795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 354: -#line 2300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); - } -#line 6803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 355: -#line 2306 "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 6813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 356: -#line 2311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.arrayDimCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes, 0); - - (yyval.interm.typeLine).type = new TType(EbtVoid); - (yyval.interm.typeLine).loc = (yyvsp[-1].lex).loc; - (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); - (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[0].interm).arraySizes); - } -#line 6826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 357: -#line 2322 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } -#line 6834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 358: -#line 2325 "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 6845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 359: -#line 2331 "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 6856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 360: -#line 2340 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2344 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 6864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 361: -#line 2343 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2349 "glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 6872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 362: -#line 2349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2354 "glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.handlePrecisionQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type).qualifier, EpqLow); + } break; case 363: -#line 2353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2362 "glslang.y" + { parseContext.nestedStructCheck((yyvsp[(1) - (3)].lex).loc); } break; case 364: -#line 2354 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2362 "glslang.y" + { + TType* structure = new TType((yyvsp[(5) - (6)].interm.typeList), *(yyvsp[(2) - (6)].lex).string); + parseContext.structArrayCheck((yyvsp[(2) - (6)].lex).loc, *structure); + TVariable* userTypeDef = new TVariable((yyvsp[(2) - (6)].lex).string, *structure, true); + if (! parseContext.symbolTable.insert(*userTypeDef)) + parseContext.error((yyvsp[(2) - (6)].lex).loc, "redefinition", (yyvsp[(2) - (6)].lex).string->c_str(), "struct"); + (yyval.interm.type).init((yyvsp[(1) - (6)].lex).loc); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = structure; + --parseContext.structNestingLevel; + } break; case 365: -#line 2360 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6896 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2373 "glslang.y" + { parseContext.nestedStructCheck((yyvsp[(1) - (2)].lex).loc); } break; case 366: -#line 2361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2373 "glslang.y" + { + TType* structure = new TType((yyvsp[(4) - (5)].interm.typeList), TString("")); + (yyval.interm.type).init((yyvsp[(1) - (5)].lex).loc); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = structure; + --parseContext.structNestingLevel; + } break; case 367: -#line 2362 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2383 "glslang.y" + { + (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList); + } break; case 368: -#line 2363 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2386 "glslang.y" + { + (yyval.interm.typeList) = (yyvsp[(1) - (2)].interm.typeList); + for (unsigned int i = 0; i < (yyvsp[(2) - (2)].interm.typeList)->size(); ++i) { + for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) { + if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName()) + parseContext.error((*(yyvsp[(2) - (2)].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName().c_str()); + } + (yyval.interm.typeList)->push_back((*(yyvsp[(2) - (2)].interm.typeList))[i]); + } + } break; case 369: -#line 2364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2399 "glslang.y" + { + if ((yyvsp[(1) - (3)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.profile == EEsProfile) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); + } + + (yyval.interm.typeList) = (yyvsp[(2) - (3)].interm.typeList); + + parseContext.voidErrorCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyvsp[(2) - (3)].interm.typeList))[0].type->getFieldName(), (yyvsp[(1) - (3)].interm.type).basicType); + parseContext.precisionQualifierCheck((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).basicType, (yyvsp[(1) - (3)].interm.type).qualifier); + + for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { + parseContext.arrayDimCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(1) - (3)].interm.type).arraySizes); + (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(1) - (3)].interm.type)); + } + } break; case 370: -#line 2365 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2417 "glslang.y" + { + parseContext.globalQualifierFixCheck((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier); + if ((yyvsp[(2) - (4)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.profile == EEsProfile) + parseContext.arraySizeRequiredCheck((yyvsp[(2) - (4)].interm.type).loc, *(yyvsp[(2) - (4)].interm.type).arraySizes); + } + + (yyval.interm.typeList) = (yyvsp[(3) - (4)].interm.typeList); + + parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers); + parseContext.voidErrorCheck((yyvsp[(2) - (4)].interm.type).loc, (*(yyvsp[(3) - (4)].interm.typeList))[0].type->getFieldName(), (yyvsp[(2) - (4)].interm.type).basicType); + parseContext.mergeQualifiers((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).qualifier, (yyvsp[(1) - (4)].interm.type).qualifier, true); + parseContext.precisionQualifierCheck((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).basicType, (yyvsp[(2) - (4)].interm.type).qualifier); + + for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { + parseContext.arrayDimCheck((yyvsp[(1) - (4)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(2) - (4)].interm.type).arraySizes); + (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(2) - (4)].interm.type)); + } + } break; case 371: -#line 2366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2441 "glslang.y" + { + (yyval.interm.typeList) = new TTypeList; + (yyval.interm.typeList)->push_back((yyvsp[(1) - (1)].interm.typeLine)); + } break; case 372: -#line 2370 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 6938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2445 "glslang.y" + { + (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine)); + } break; case 373: -#line 2371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2451 "glslang.y" { - parseContext.symbolTable.push(); - ++parseContext.statementNestingLevel; + (yyval.interm.typeLine).type = new TType(EbtVoid); + (yyval.interm.typeLine).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (1)].lex).string); } -#line 6947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 374: -#line 2375 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2456 "glslang.y" + { + parseContext.arrayDimCheck((yyvsp[(1) - (2)].lex).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0); + + (yyval.interm.typeLine).type = new TType(EbtVoid); + (yyval.interm.typeLine).loc = (yyvsp[(1) - (2)].lex).loc; + (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (2)].lex).string); + (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[(2) - (2)].interm).arraySizes); + } + break; + + case 375: +/* Line 1792 of yacc.c */ +#line 2467 "glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 376: +/* Line 1792 of yacc.c */ +#line 2470 "glslang.y" + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode); + } + break; + + case 377: +/* Line 1792 of yacc.c */ +#line 2476 "glslang.y" + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (4)].interm.intermTypedNode); + } + break; + + case 378: +/* Line 1792 of yacc.c */ +#line 2485 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[(1) - (1)].interm.intermTypedNode), (yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc()); + } + break; + + case 379: +/* Line 1792 of yacc.c */ +#line 2488 "glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + } + break; + + case 380: +/* Line 1792 of yacc.c */ +#line 2494 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 381: +/* Line 1792 of yacc.c */ +#line 2498 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 382: +/* Line 1792 of yacc.c */ +#line 2499 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 383: +/* Line 1792 of yacc.c */ +#line 2505 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 384: +/* Line 1792 of yacc.c */ +#line 2506 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 385: +/* Line 1792 of yacc.c */ +#line 2507 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 386: +/* Line 1792 of yacc.c */ +#line 2508 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 387: +/* Line 1792 of yacc.c */ +#line 2509 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 388: +/* Line 1792 of yacc.c */ +#line 2510 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 389: +/* Line 1792 of yacc.c */ +#line 2511 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 390: +/* Line 1792 of yacc.c */ +#line 2515 "glslang.y" + { (yyval.interm.intermNode) = 0; } + break; + + case 391: +/* Line 1792 of yacc.c */ +#line 2516 "glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } + break; + + case 392: +/* Line 1792 of yacc.c */ +#line 2520 "glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 6956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 375: -#line 2379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 393: +/* Line 1792 of yacc.c */ +#line 2524 "glslang.y" { - if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) - (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); - (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); + if ((yyvsp[(3) - (5)].interm.intermNode) && (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate()) + (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(3) - (5)].interm.intermNode); } -#line 6966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 376: -#line 2387 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 394: +/* Line 1792 of yacc.c */ +#line 2532 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; - case 377: -#line 2388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 6978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 395: +/* Line 1792 of yacc.c */ +#line 2533 "glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } break; - case 378: -#line 2392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 396: +/* Line 1792 of yacc.c */ +#line 2537 "glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 6986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 379: -#line 2395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 397: +/* Line 1792 of yacc.c */ +#line 2540 "glslang.y" { --parseContext.controlFlowNestingLevel; - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); } -#line 6995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 380: -#line 2399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 398: +/* Line 1792 of yacc.c */ +#line 2544 "glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 381: -#line 2404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 399: +/* Line 1792 of yacc.c */ +#line 2549 "glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); } -#line 7016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 382: -#line 2413 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 400: +/* Line 1792 of yacc.c */ +#line 2558 "glslang.y" { (yyval.interm.intermNode) = 0; } -#line 7024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 383: -#line 2416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 401: +/* Line 1792 of yacc.c */ +#line 2561 "glslang.y" { - if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) - (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); - (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); + if ((yyvsp[(2) - (3)].interm.intermNode) && (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate()) + (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermNode); } -#line 7034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 384: -#line 2424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 402: +/* Line 1792 of yacc.c */ +#line 2569 "glslang.y" { - (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 || - (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { - parseContext.wrapupSwitchSubsequence(0, (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode)); + if ((yyvsp[(1) - (1)].interm.intermNode) && (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || + (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence(0, (yyvsp[(1) - (1)].interm.intermNode)); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 7047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 385: -#line 2432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 403: +/* Line 1792 of yacc.c */ +#line 2577 "glslang.y" { - if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || - (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { - parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0, (yyvsp[0].interm.intermNode)); + if ((yyvsp[(2) - (2)].interm.intermNode) && (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || + (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence((yyvsp[(1) - (2)].interm.intermNode) ? (yyvsp[(1) - (2)].interm.intermNode)->getAsAggregate() : 0, (yyvsp[(2) - (2)].interm.intermNode)); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } else - (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode)); } -#line 7060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 386: -#line 2443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 404: +/* Line 1792 of yacc.c */ +#line 2588 "glslang.y" { (yyval.interm.intermNode) = 0; } -#line 7066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 387: -#line 2444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 7072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 405: +/* Line 1792 of yacc.c */ +#line 2589 "glslang.y" + { (yyval.interm.intermNode) = static_cast((yyvsp[(1) - (2)].interm.intermTypedNode)); } break; - case 388: -#line 2448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 406: +/* Line 1792 of yacc.c */ +#line 2593 "glslang.y" { - 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); + parseContext.boolCheck((yyvsp[(1) - (5)].lex).loc, (yyvsp[(3) - (5)].interm.intermTypedNode)); + (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yyvsp[(1) - (5)].lex).loc); } -#line 7081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 389: -#line 2455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 407: +/* Line 1792 of yacc.c */ +#line 2600 "glslang.y" { - (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); - (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode); + (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode); } -#line 7090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 390: -#line 2459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 408: +/* Line 1792 of yacc.c */ +#line 2604 "glslang.y" { - (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 7099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 391: -#line 2467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 409: +/* Line 1792 of yacc.c */ +#line 2612 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + parseContext.boolCheck((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), (yyvsp[(1) - (1)].interm.intermTypedNode)); } -#line 7108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 392: -#line 2471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 410: +/* Line 1792 of yacc.c */ +#line 2616 "glslang.y" { - parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); + parseContext.boolCheck((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.type)); - TType type((yyvsp[-3].interm.type)); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); + TType type((yyvsp[(1) - (4)].interm.type)); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode)); if (initNode) (yyval.interm.intermTypedNode) = initNode->getAsTyped(); else (yyval.interm.intermTypedNode) = 0; } -#line 7123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 393: -#line 2484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 411: +/* Line 1792 of yacc.c */ +#line 2629 "glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -7132,13 +7778,13 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 7136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 394: -#line 2492 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 412: +/* Line 1792 of yacc.c */ +#line 2637 "glslang.y" { - (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); + (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[(1) - (8)].lex).loc, (yyvsp[(3) - (8)].interm.intermTypedNode), (yyvsp[(7) - (8)].interm.intermNode) ? (yyvsp[(7) - (8)].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); parseContext.switchSequenceStack.pop_back(); parseContext.switchLevel.pop_back(); @@ -7146,287 +7792,287 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 395: -#line 2504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 413: +/* Line 1792 of yacc.c */ +#line 2649 "glslang.y" { (yyval.interm.intermNode) = 0; } -#line 7158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 396: -#line 2507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 414: +/* Line 1792 of yacc.c */ +#line 2652 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } -#line 7166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 397: -#line 2513 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 415: +/* Line 1792 of yacc.c */ +#line 2658 "glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) - parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", ""); + parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot appear outside switch statement", "case", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) - parseContext.error((yyvsp[-2].lex).loc, "cannot be nested inside control flow", "case", ""); + parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot be nested inside control flow", "case", ""); else { - parseContext.constantValueCheck((yyvsp[-1].interm.intermTypedNode), "case"); - parseContext.integerCheck((yyvsp[-1].interm.intermTypedNode), "case"); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); + parseContext.constantValueCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case"); + parseContext.integerCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).loc); } } -#line 7183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 398: -#line 2525 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 416: +/* Line 1792 of yacc.c */ +#line 2670 "glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) - parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", ""); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot appear outside switch statement", "default", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) - parseContext.error((yyvsp[-1].lex).loc, "cannot be nested inside control flow", "default", ""); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot be nested inside control flow", "default", ""); else - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[(1) - (2)].lex).loc); } -#line 7197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 399: -#line 2537 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 417: +/* Line 1792 of yacc.c */ +#line 2682 "glslang.y" { if (! parseContext.limits.whileLoops) - parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "while loops not available", "limitation", ""); parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 400: -#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 418: +/* Line 1792 of yacc.c */ +#line 2690 "glslang.y" { 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); + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(6) - (6)].interm.intermNode), (yyvsp[(4) - (6)].interm.intermTypedNode), 0, true, (yyvsp[(1) - (6)].lex).loc); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 401: -#line 2552 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 419: +/* Line 1792 of yacc.c */ +#line 2697 "glslang.y" { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 402: -#line 2557 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 420: +/* Line 1792 of yacc.c */ +#line 2702 "glslang.y" { if (! parseContext.limits.whileLoops) - parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); + parseContext.error((yyvsp[(1) - (8)].lex).loc, "do-while loops not available", "limitation", ""); - parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode)); + parseContext.boolCheck((yyvsp[(8) - (8)].lex).loc, (yyvsp[(6) - (8)].interm.intermTypedNode)); - (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc); + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(3) - (8)].interm.intermNode), (yyvsp[(6) - (8)].interm.intermTypedNode), 0, false, (yyvsp[(4) - (8)].lex).loc); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 403: -#line 2568 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 421: +/* Line 1792 of yacc.c */ +#line 2713 "glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 7259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 404: -#line 2574 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 422: +/* Line 1792 of yacc.c */ +#line 2719 "glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); - TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), reinterpret_cast((yyvsp[-2].interm.nodePair).node1), reinterpret_cast((yyvsp[-2].interm.nodePair).node2), true, (yyvsp[-6].lex).loc); + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(4) - (7)].interm.intermNode), (yyvsp[(2) - (7)].lex).loc); + TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[(7) - (7)].interm.intermNode), reinterpret_cast((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast((yyvsp[(5) - (7)].interm.nodePair).node2), true, (yyvsp[(1) - (7)].lex).loc); if (! parseContext.limits.nonInductiveForLoops) - parseContext.inductiveLoopCheck((yyvsp[-6].lex).loc, (yyvsp[-3].interm.intermNode), forLoop); - (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[-6].lex).loc); + parseContext.inductiveLoopCheck((yyvsp[(1) - (7)].lex).loc, (yyvsp[(4) - (7)].interm.intermNode), forLoop); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[(1) - (7)].lex).loc); (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 7276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 405: -#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 423: +/* Line 1792 of yacc.c */ +#line 2734 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } -#line 7284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 406: -#line 2592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 424: +/* Line 1792 of yacc.c */ +#line 2737 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } -#line 7292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 407: -#line 2598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 425: +/* Line 1792 of yacc.c */ +#line 2743 "glslang.y" { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } -#line 7300 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 408: -#line 2601 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 426: +/* Line 1792 of yacc.c */ +#line 2746 "glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 7308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 409: -#line 2607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 427: +/* Line 1792 of yacc.c */ +#line 2752 "glslang.y" { - (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 7317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 410: -#line 2611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 428: +/* Line 1792 of yacc.c */ +#line 2756 "glslang.y" { - (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); - (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode); + (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode); } -#line 7326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 411: -#line 2618 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 429: +/* Line 1792 of yacc.c */ +#line 2763 "glslang.y" { 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); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "continue statement only allowed in loops", "", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[(1) - (2)].lex).loc); } -#line 7336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 412: -#line 2623 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 430: +/* Line 1792 of yacc.c */ +#line 2768 "glslang.y" { 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); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "break statement only allowed in switch and loops", "", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[(1) - (2)].lex).loc); } -#line 7346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 413: -#line 2628 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 431: +/* Line 1792 of yacc.c */ +#line 2773 "glslang.y" { - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) - parseContext.error((yyvsp[-1].lex).loc, "non-void function must return a value", "return", ""); + parseContext.error((yyvsp[(1) - (2)].lex).loc, "non-void function must return a value", "return", ""); if (parseContext.inMain) parseContext.postMainReturn = true; } -#line 7358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 414: -#line 2635 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 432: +/* Line 1792 of yacc.c */ +#line 2780 "glslang.y" { - (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); + (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[(1) - (3)].lex).loc, (yyvsp[(2) - (3)].interm.intermTypedNode)); } -#line 7366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 415: -#line 2638 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 433: +/* Line 1792 of yacc.c */ +#line 2783 "glslang.y" { - parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); + parseContext.requireStage((yyvsp[(1) - (2)].lex).loc, EShLangFragment, "discard"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[(1) - (2)].lex).loc); } -#line 7375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 416: -#line 2647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 434: +/* Line 1792 of yacc.c */ +#line 2792 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 7384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 417: -#line 2651 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 435: +/* Line 1792 of yacc.c */ +#line 2796 "glslang.y" { - (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 7393 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 418: -#line 2658 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 436: +/* Line 1792 of yacc.c */ +#line 2803 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } -#line 7401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 419: -#line 2661 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 437: +/* Line 1792 of yacc.c */ +#line 2806 "glslang.y" { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } -#line 7409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 420: -#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 438: +/* Line 1792 of yacc.c */ +#line 2812 "glslang.y" { - (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); + (yyvsp[(1) - (1)].interm).function = parseContext.handleFunctionDeclarator((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function, false /* not prototype */); + (yyvsp[(1) - (1)].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function); } -#line 7418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 421: -#line 2671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 439: +/* Line 1792 of yacc.c */ +#line 2816 "glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) - parseContext.error((yyvsp[-2].interm).loc, "function does not return a value:", "", (yyvsp[-2].interm).function->getName().c_str()); + parseContext.error((yyvsp[(1) - (3)].interm).loc, "function does not return a value:", "", (yyvsp[(1) - (3)].interm).function->getName().c_str()); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermNode)); - parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[-2].interm).function->getType(), (yyvsp[-2].interm).loc); - (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[-2].interm).function->getMangledName().c_str()); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermNode)); + parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[(1) - (3)].interm).function->getType(), (yyvsp[(1) - (3)].interm).loc); + (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[(1) - (3)].interm).function->getMangledName().c_str()); // store the pragma information for debug and optimize and other vendor specific // information. This information can be queried from the parse tree @@ -7434,11 +8080,11 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable); } -#line 7438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 7442 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 8088 "glslang_tab.cpp" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -7460,7 +8106,7 @@ yyreduce: *++yyvsp = yyval; - /* Now 'shift' the result of the reduction. Determine what state + /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -7475,9 +8121,9 @@ yyreduce: goto yynewstate; -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -7528,20 +8174,20 @@ yyerrlab: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, pParseContext); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, pParseContext); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -7560,7 +8206,7 @@ yyerrorlab: if (/*CONSTCOND*/ 0) goto yyerrorlab; - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -7573,29 +8219,29 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yydestruct ("Error: popping", - yystos[yystate], yyvsp, pParseContext); + yystos[yystate], yyvsp, pParseContext); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -7646,14 +8292,14 @@ yyreturn: yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, pParseContext); } - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, pParseContext); + yystos[*yyssp], yyvsp, pParseContext); YYPOPSTACK (1); } #ifndef yyoverflow @@ -7664,7 +8310,11 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - return yyresult; + /* Make sure YYID is used. */ + return YYID (yyresult); } -#line 2688 "MachineIndependent/glslang.y" /* yacc.c:1906 */ + + +/* Line 2055 of yacc.c */ +#line 2833 "glslang.y" diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index e7d8fae8..b6d27993 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,13 +26,13 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -/* Debug traces. */ +#ifndef YY_YY_GLSLANG_TAB_CPP_H_INCLUDED +# define YY_YY_GLSLANG_TAB_CPP_H_INCLUDED +/* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif @@ -40,287 +40,306 @@ extern int yydebug; #endif -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - ATTRIBUTE = 258, - VARYING = 259, - CONST = 260, - BOOL = 261, - FLOAT = 262, - DOUBLE = 263, - INT = 264, - UINT = 265, - INT64_T = 266, - UINT64_T = 267, - BREAK = 268, - CONTINUE = 269, - DO = 270, - ELSE = 271, - FOR = 272, - IF = 273, - DISCARD = 274, - RETURN = 275, - SWITCH = 276, - CASE = 277, - DEFAULT = 278, - SUBROUTINE = 279, - BVEC2 = 280, - BVEC3 = 281, - BVEC4 = 282, - IVEC2 = 283, - IVEC3 = 284, - IVEC4 = 285, - I64VEC2 = 286, - I64VEC3 = 287, - I64VEC4 = 288, - UVEC2 = 289, - UVEC3 = 290, - UVEC4 = 291, - U64VEC2 = 292, - U64VEC3 = 293, - U64VEC4 = 294, - VEC2 = 295, - VEC3 = 296, - VEC4 = 297, - MAT2 = 298, - MAT3 = 299, - MAT4 = 300, - CENTROID = 301, - IN = 302, - OUT = 303, - INOUT = 304, - UNIFORM = 305, - PATCH = 306, - SAMPLE = 307, - BUFFER = 308, - SHARED = 309, - COHERENT = 310, - VOLATILE = 311, - RESTRICT = 312, - READONLY = 313, - WRITEONLY = 314, - DVEC2 = 315, - DVEC3 = 316, - DVEC4 = 317, - DMAT2 = 318, - DMAT3 = 319, - DMAT4 = 320, - NOPERSPECTIVE = 321, - FLAT = 322, - SMOOTH = 323, - LAYOUT = 324, - MAT2X2 = 325, - MAT2X3 = 326, - MAT2X4 = 327, - MAT3X2 = 328, - MAT3X3 = 329, - MAT3X4 = 330, - MAT4X2 = 331, - MAT4X3 = 332, - MAT4X4 = 333, - DMAT2X2 = 334, - DMAT2X3 = 335, - DMAT2X4 = 336, - DMAT3X2 = 337, - DMAT3X3 = 338, - DMAT3X4 = 339, - DMAT4X2 = 340, - DMAT4X3 = 341, - DMAT4X4 = 342, - ATOMIC_UINT = 343, - SAMPLER1D = 344, - SAMPLER2D = 345, - SAMPLER3D = 346, - SAMPLERCUBE = 347, - SAMPLER1DSHADOW = 348, - SAMPLER2DSHADOW = 349, - SAMPLERCUBESHADOW = 350, - SAMPLER1DARRAY = 351, - SAMPLER2DARRAY = 352, - SAMPLER1DARRAYSHADOW = 353, - SAMPLER2DARRAYSHADOW = 354, - ISAMPLER1D = 355, - ISAMPLER2D = 356, - ISAMPLER3D = 357, - ISAMPLERCUBE = 358, - ISAMPLER1DARRAY = 359, - ISAMPLER2DARRAY = 360, - USAMPLER1D = 361, - USAMPLER2D = 362, - USAMPLER3D = 363, - USAMPLERCUBE = 364, - USAMPLER1DARRAY = 365, - USAMPLER2DARRAY = 366, - SAMPLER2DRECT = 367, - SAMPLER2DRECTSHADOW = 368, - ISAMPLER2DRECT = 369, - USAMPLER2DRECT = 370, - SAMPLERBUFFER = 371, - ISAMPLERBUFFER = 372, - USAMPLERBUFFER = 373, - SAMPLERCUBEARRAY = 374, - SAMPLERCUBEARRAYSHADOW = 375, - ISAMPLERCUBEARRAY = 376, - USAMPLERCUBEARRAY = 377, - SAMPLER2DMS = 378, - ISAMPLER2DMS = 379, - USAMPLER2DMS = 380, - SAMPLER2DMSARRAY = 381, - ISAMPLER2DMSARRAY = 382, - USAMPLER2DMSARRAY = 383, - SAMPLEREXTERNALOES = 384, - SAMPLER = 385, - SAMPLERSHADOW = 386, - TEXTURE1D = 387, - TEXTURE2D = 388, - TEXTURE3D = 389, - TEXTURECUBE = 390, - TEXTURE1DARRAY = 391, - TEXTURE2DARRAY = 392, - ITEXTURE1D = 393, - ITEXTURE2D = 394, - ITEXTURE3D = 395, - ITEXTURECUBE = 396, - ITEXTURE1DARRAY = 397, - ITEXTURE2DARRAY = 398, - UTEXTURE1D = 399, - UTEXTURE2D = 400, - UTEXTURE3D = 401, - UTEXTURECUBE = 402, - UTEXTURE1DARRAY = 403, - UTEXTURE2DARRAY = 404, - TEXTURE2DRECT = 405, - ITEXTURE2DRECT = 406, - UTEXTURE2DRECT = 407, - TEXTUREBUFFER = 408, - ITEXTUREBUFFER = 409, - UTEXTUREBUFFER = 410, - TEXTURECUBEARRAY = 411, - ITEXTURECUBEARRAY = 412, - UTEXTURECUBEARRAY = 413, - TEXTURE2DMS = 414, - ITEXTURE2DMS = 415, - UTEXTURE2DMS = 416, - TEXTURE2DMSARRAY = 417, - ITEXTURE2DMSARRAY = 418, - UTEXTURE2DMSARRAY = 419, - SUBPASSINPUT = 420, - SUBPASSINPUTMS = 421, - ISUBPASSINPUT = 422, - ISUBPASSINPUTMS = 423, - USUBPASSINPUT = 424, - USUBPASSINPUTMS = 425, - IMAGE1D = 426, - IIMAGE1D = 427, - UIMAGE1D = 428, - IMAGE2D = 429, - IIMAGE2D = 430, - UIMAGE2D = 431, - IMAGE3D = 432, - IIMAGE3D = 433, - UIMAGE3D = 434, - IMAGE2DRECT = 435, - IIMAGE2DRECT = 436, - UIMAGE2DRECT = 437, - IMAGECUBE = 438, - IIMAGECUBE = 439, - UIMAGECUBE = 440, - IMAGEBUFFER = 441, - IIMAGEBUFFER = 442, - UIMAGEBUFFER = 443, - IMAGE1DARRAY = 444, - IIMAGE1DARRAY = 445, - UIMAGE1DARRAY = 446, - IMAGE2DARRAY = 447, - IIMAGE2DARRAY = 448, - UIMAGE2DARRAY = 449, - IMAGECUBEARRAY = 450, - IIMAGECUBEARRAY = 451, - UIMAGECUBEARRAY = 452, - IMAGE2DMS = 453, - IIMAGE2DMS = 454, - UIMAGE2DMS = 455, - IMAGE2DMSARRAY = 456, - IIMAGE2DMSARRAY = 457, - UIMAGE2DMSARRAY = 458, - STRUCT = 459, - VOID = 460, - WHILE = 461, - IDENTIFIER = 462, - TYPE_NAME = 463, - FLOATCONSTANT = 464, - DOUBLECONSTANT = 465, - INTCONSTANT = 466, - UINTCONSTANT = 467, - INT64CONSTANT = 468, - UINT64CONSTANT = 469, - BOOLCONSTANT = 470, - LEFT_OP = 471, - RIGHT_OP = 472, - INC_OP = 473, - DEC_OP = 474, - LE_OP = 475, - GE_OP = 476, - EQ_OP = 477, - NE_OP = 478, - AND_OP = 479, - OR_OP = 480, - XOR_OP = 481, - MUL_ASSIGN = 482, - DIV_ASSIGN = 483, - ADD_ASSIGN = 484, - MOD_ASSIGN = 485, - LEFT_ASSIGN = 486, - RIGHT_ASSIGN = 487, - AND_ASSIGN = 488, - XOR_ASSIGN = 489, - OR_ASSIGN = 490, - SUB_ASSIGN = 491, - LEFT_PAREN = 492, - RIGHT_PAREN = 493, - LEFT_BRACKET = 494, - RIGHT_BRACKET = 495, - LEFT_BRACE = 496, - RIGHT_BRACE = 497, - DOT = 498, - COMMA = 499, - COLON = 500, - EQUAL = 501, - SEMICOLON = 502, - BANG = 503, - DASH = 504, - TILDE = 505, - PLUS = 506, - STAR = 507, - SLASH = 508, - PERCENT = 509, - LEFT_ANGLE = 510, - RIGHT_ANGLE = 511, - VERTICAL_BAR = 512, - CARET = 513, - AMPERSAND = 514, - QUESTION = 515, - INVARIANT = 516, - PRECISE = 517, - HIGH_PRECISION = 518, - MEDIUM_PRECISION = 519, - LOW_PRECISION = 520, - PRECISION = 521, - PACKED = 522, - RESOURCE = 523, - SUPERP = 524 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ATTRIBUTE = 258, + VARYING = 259, + CONST = 260, + BOOL = 261, + FLOAT = 262, + DOUBLE = 263, + INT = 264, + UINT = 265, + INT64_T = 266, + UINT64_T = 267, + FLOAT16_T = 268, + BREAK = 269, + CONTINUE = 270, + DO = 271, + ELSE = 272, + FOR = 273, + IF = 274, + DISCARD = 275, + RETURN = 276, + SWITCH = 277, + CASE = 278, + DEFAULT = 279, + SUBROUTINE = 280, + BVEC2 = 281, + BVEC3 = 282, + BVEC4 = 283, + IVEC2 = 284, + IVEC3 = 285, + IVEC4 = 286, + I64VEC2 = 287, + I64VEC3 = 288, + I64VEC4 = 289, + UVEC2 = 290, + UVEC3 = 291, + UVEC4 = 292, + U64VEC2 = 293, + U64VEC3 = 294, + U64VEC4 = 295, + VEC2 = 296, + VEC3 = 297, + VEC4 = 298, + MAT2 = 299, + MAT3 = 300, + MAT4 = 301, + CENTROID = 302, + IN = 303, + OUT = 304, + INOUT = 305, + UNIFORM = 306, + PATCH = 307, + SAMPLE = 308, + BUFFER = 309, + SHARED = 310, + COHERENT = 311, + VOLATILE = 312, + RESTRICT = 313, + READONLY = 314, + WRITEONLY = 315, + DVEC2 = 316, + DVEC3 = 317, + DVEC4 = 318, + DMAT2 = 319, + DMAT3 = 320, + DMAT4 = 321, + F16VEC2 = 322, + F16VEC3 = 323, + F16VEC4 = 324, + F16MAT2 = 325, + F16MAT3 = 326, + F16MAT4 = 327, + NOPERSPECTIVE = 328, + FLAT = 329, + SMOOTH = 330, + LAYOUT = 331, + __EXPLICITINTERPAMD = 332, + MAT2X2 = 333, + MAT2X3 = 334, + MAT2X4 = 335, + MAT3X2 = 336, + MAT3X3 = 337, + MAT3X4 = 338, + MAT4X2 = 339, + MAT4X3 = 340, + MAT4X4 = 341, + DMAT2X2 = 342, + DMAT2X3 = 343, + DMAT2X4 = 344, + DMAT3X2 = 345, + DMAT3X3 = 346, + DMAT3X4 = 347, + DMAT4X2 = 348, + DMAT4X3 = 349, + DMAT4X4 = 350, + F16MAT2X2 = 351, + F16MAT2X3 = 352, + F16MAT2X4 = 353, + F16MAT3X2 = 354, + F16MAT3X3 = 355, + F16MAT3X4 = 356, + F16MAT4X2 = 357, + F16MAT4X3 = 358, + F16MAT4X4 = 359, + ATOMIC_UINT = 360, + SAMPLER1D = 361, + SAMPLER2D = 362, + SAMPLER3D = 363, + SAMPLERCUBE = 364, + SAMPLER1DSHADOW = 365, + SAMPLER2DSHADOW = 366, + SAMPLERCUBESHADOW = 367, + SAMPLER1DARRAY = 368, + SAMPLER2DARRAY = 369, + SAMPLER1DARRAYSHADOW = 370, + SAMPLER2DARRAYSHADOW = 371, + ISAMPLER1D = 372, + ISAMPLER2D = 373, + ISAMPLER3D = 374, + ISAMPLERCUBE = 375, + ISAMPLER1DARRAY = 376, + ISAMPLER2DARRAY = 377, + USAMPLER1D = 378, + USAMPLER2D = 379, + USAMPLER3D = 380, + USAMPLERCUBE = 381, + USAMPLER1DARRAY = 382, + USAMPLER2DARRAY = 383, + SAMPLER2DRECT = 384, + SAMPLER2DRECTSHADOW = 385, + ISAMPLER2DRECT = 386, + USAMPLER2DRECT = 387, + SAMPLERBUFFER = 388, + ISAMPLERBUFFER = 389, + USAMPLERBUFFER = 390, + SAMPLERCUBEARRAY = 391, + SAMPLERCUBEARRAYSHADOW = 392, + ISAMPLERCUBEARRAY = 393, + USAMPLERCUBEARRAY = 394, + SAMPLER2DMS = 395, + ISAMPLER2DMS = 396, + USAMPLER2DMS = 397, + SAMPLER2DMSARRAY = 398, + ISAMPLER2DMSARRAY = 399, + USAMPLER2DMSARRAY = 400, + SAMPLEREXTERNALOES = 401, + SAMPLER = 402, + SAMPLERSHADOW = 403, + TEXTURE1D = 404, + TEXTURE2D = 405, + TEXTURE3D = 406, + TEXTURECUBE = 407, + TEXTURE1DARRAY = 408, + TEXTURE2DARRAY = 409, + ITEXTURE1D = 410, + ITEXTURE2D = 411, + ITEXTURE3D = 412, + ITEXTURECUBE = 413, + ITEXTURE1DARRAY = 414, + ITEXTURE2DARRAY = 415, + UTEXTURE1D = 416, + UTEXTURE2D = 417, + UTEXTURE3D = 418, + UTEXTURECUBE = 419, + UTEXTURE1DARRAY = 420, + UTEXTURE2DARRAY = 421, + TEXTURE2DRECT = 422, + ITEXTURE2DRECT = 423, + UTEXTURE2DRECT = 424, + TEXTUREBUFFER = 425, + ITEXTUREBUFFER = 426, + UTEXTUREBUFFER = 427, + TEXTURECUBEARRAY = 428, + ITEXTURECUBEARRAY = 429, + UTEXTURECUBEARRAY = 430, + TEXTURE2DMS = 431, + ITEXTURE2DMS = 432, + UTEXTURE2DMS = 433, + TEXTURE2DMSARRAY = 434, + ITEXTURE2DMSARRAY = 435, + UTEXTURE2DMSARRAY = 436, + SUBPASSINPUT = 437, + SUBPASSINPUTMS = 438, + ISUBPASSINPUT = 439, + ISUBPASSINPUTMS = 440, + USUBPASSINPUT = 441, + USUBPASSINPUTMS = 442, + IMAGE1D = 443, + IIMAGE1D = 444, + UIMAGE1D = 445, + IMAGE2D = 446, + IIMAGE2D = 447, + UIMAGE2D = 448, + IMAGE3D = 449, + IIMAGE3D = 450, + UIMAGE3D = 451, + IMAGE2DRECT = 452, + IIMAGE2DRECT = 453, + UIMAGE2DRECT = 454, + IMAGECUBE = 455, + IIMAGECUBE = 456, + UIMAGECUBE = 457, + IMAGEBUFFER = 458, + IIMAGEBUFFER = 459, + UIMAGEBUFFER = 460, + IMAGE1DARRAY = 461, + IIMAGE1DARRAY = 462, + UIMAGE1DARRAY = 463, + IMAGE2DARRAY = 464, + IIMAGE2DARRAY = 465, + UIMAGE2DARRAY = 466, + IMAGECUBEARRAY = 467, + IIMAGECUBEARRAY = 468, + UIMAGECUBEARRAY = 469, + IMAGE2DMS = 470, + IIMAGE2DMS = 471, + UIMAGE2DMS = 472, + IMAGE2DMSARRAY = 473, + IIMAGE2DMSARRAY = 474, + UIMAGE2DMSARRAY = 475, + STRUCT = 476, + VOID = 477, + WHILE = 478, + IDENTIFIER = 479, + TYPE_NAME = 480, + FLOATCONSTANT = 481, + DOUBLECONSTANT = 482, + INTCONSTANT = 483, + UINTCONSTANT = 484, + INT64CONSTANT = 485, + UINT64CONSTANT = 486, + BOOLCONSTANT = 487, + FLOAT16CONSTANT = 488, + LEFT_OP = 489, + RIGHT_OP = 490, + INC_OP = 491, + DEC_OP = 492, + LE_OP = 493, + GE_OP = 494, + EQ_OP = 495, + NE_OP = 496, + AND_OP = 497, + OR_OP = 498, + XOR_OP = 499, + MUL_ASSIGN = 500, + DIV_ASSIGN = 501, + ADD_ASSIGN = 502, + MOD_ASSIGN = 503, + LEFT_ASSIGN = 504, + RIGHT_ASSIGN = 505, + AND_ASSIGN = 506, + XOR_ASSIGN = 507, + OR_ASSIGN = 508, + SUB_ASSIGN = 509, + LEFT_PAREN = 510, + RIGHT_PAREN = 511, + LEFT_BRACKET = 512, + RIGHT_BRACKET = 513, + LEFT_BRACE = 514, + RIGHT_BRACE = 515, + DOT = 516, + COMMA = 517, + COLON = 518, + EQUAL = 519, + SEMICOLON = 520, + BANG = 521, + DASH = 522, + TILDE = 523, + PLUS = 524, + STAR = 525, + SLASH = 526, + PERCENT = 527, + LEFT_ANGLE = 528, + RIGHT_ANGLE = 529, + VERTICAL_BAR = 530, + CARET = 531, + AMPERSAND = 532, + QUESTION = 533, + INVARIANT = 534, + PRECISE = 535, + HIGH_PRECISION = 536, + MEDIUM_PRECISION = 537, + LOW_PRECISION = 538, + PRECISION = 539, + PACKED = 540, + RESOURCE = 541, + SUPERP = 542 + }; #endif -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE { -#line 66 "MachineIndependent/glslang.y" /* yacc.c:1909 */ +/* Line 2058 of yacc.c */ +#line 66 "glslang.y" struct { glslang::TSourceLoc loc; @@ -354,16 +373,28 @@ union YYSTYPE }; } interm; -#line 358 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ -}; -typedef union YYSTYPE YYSTYPE; +/* Line 2058 of yacc.c */ +#line 379 "glslang_tab.cpp.h" +} YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif - +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus int yyparse (glslang::TParseContext* pParseContext); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ -#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ +#endif /* !YY_YY_GLSLANG_TAB_CPP_H_INCLUDED */ diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 03519bc9..bd64f199 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -38,11 +38,9 @@ #include "../Include/InfoSink.h" #ifdef _MSC_VER -#include -#elif defined __ANDROID__ || defined __linux__ || __MINGW32__ || __MINGW64__ -#include +#include #else -#include +#include #endif namespace { @@ -50,10 +48,8 @@ namespace { 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 } @@ -308,6 +304,11 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpPackUint2x32: out.debug << "packUint2x32"; break; case EOpUnpackUint2x32: out.debug << "unpackUint2x32"; break; +#ifdef AMD_EXTENSIONS + case EOpPackFloat2x16: out.debug << "packFloat2x16"; break; + case EOpUnpackFloat2x16: out.debug << "unpackFloat2x16"; break; +#endif + case EOpLength: out.debug << "length"; break; case EOpNormalize: out.debug << "normalize"; break; case EOpDPdx: out.debug << "dPdx"; break; @@ -355,6 +356,7 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpBallot: out.debug << "ballot"; break; case EOpReadFirstInvocation: out.debug << "readFirstInvocation"; break; + case EOpAnyInvocation: out.debug << "anyInvocation"; break; case EOpAllInvocations: out.debug << "allInvocations"; break; case EOpAllInvocationsEqual: out.debug << "allInvocationsEqual"; break; @@ -365,6 +367,34 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpRcp: out.debug << "rcp"; break; case EOpSaturate: out.debug << "saturate"; break; +#ifdef AMD_EXTENSIONS + case EOpMinInvocations: out.debug << "minInvocations"; break; + case EOpMaxInvocations: out.debug << "maxInvocations"; break; + case EOpAddInvocations: out.debug << "addInvocations"; break; + case EOpMinInvocationsNonUniform: out.debug << "minInvocationsNonUniform"; break; + case EOpMaxInvocationsNonUniform: out.debug << "maxInvocationsNonUniform"; break; + case EOpAddInvocationsNonUniform: out.debug << "addInvocationsNonUniform"; break; + case EOpMbcnt: out.debug << "mbcnt"; break; + + case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break; + case EOpCubeFaceCoord: out.debug << "cubeFaceCoord"; break; + + case EOpConvBoolToFloat16: out.debug << "Convert bool to float16"; break; + case EOpConvIntToFloat16: out.debug << "Convert int to float16"; break; + case EOpConvUintToFloat16: out.debug << "Convert uint to float16"; break; + case EOpConvFloatToFloat16: out.debug << "Convert float to float16"; break; + case EOpConvDoubleToFloat16: out.debug << "Convert double to float16"; break; + case EOpConvInt64ToFloat16: out.debug << "Convert int64 to float16"; break; + case EOpConvUint64ToFloat16: out.debug << "Convert uint64 to float16"; break; + case EOpConvFloat16ToBool: out.debug << "Convert float16 to bool"; break; + case EOpConvFloat16ToInt: out.debug << "Convert float16 to int"; break; + case EOpConvFloat16ToUint: out.debug << "Convert float16 to uint"; break; + case EOpConvFloat16ToFloat: out.debug << "Convert float16 to float"; break; + case EOpConvFloat16ToDouble: out.debug << "Convert float16 to double"; break; + case EOpConvFloat16ToInt64: out.debug << "Convert float16 to int64"; break; + case EOpConvFloat16ToUint64: out.debug << "Convert float16 to uint64"; break; +#endif + default: out.debug.message(EPrefixError, "Bad unary op"); } @@ -437,6 +467,21 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpConstructDMat4x2: out.debug << "Construct dmat4x2"; break; case EOpConstructDMat4x3: out.debug << "Construct dmat4x3"; break; case EOpConstructDMat4x4: out.debug << "Construct dmat4"; break; +#ifdef AMD_EXTENSIONS + case EOpConstructFloat16: out.debug << "Construct float16_t"; break; + case EOpConstructF16Vec2: out.debug << "Construct f16vec2"; break; + case EOpConstructF16Vec3: out.debug << "Construct f16vec3"; break; + case EOpConstructF16Vec4: out.debug << "Construct f16vec4"; break; + case EOpConstructF16Mat2x2: out.debug << "Construct f16mat2"; break; + case EOpConstructF16Mat2x3: out.debug << "Construct f16mat2x3"; break; + case EOpConstructF16Mat2x4: out.debug << "Construct f16mat2x4"; break; + case EOpConstructF16Mat3x2: out.debug << "Construct f16mat3x2"; break; + case EOpConstructF16Mat3x3: out.debug << "Construct f16mat3"; break; + case EOpConstructF16Mat3x4: out.debug << "Construct f16mat3x4"; break; + case EOpConstructF16Mat4x2: out.debug << "Construct f16mat4x2"; break; + case EOpConstructF16Mat4x3: out.debug << "Construct f16mat4x3"; break; + case EOpConstructF16Mat4x4: out.debug << "Construct f16mat4"; break; +#endif case EOpConstructStruct: out.debug << "Construct structure"; break; case EOpConstructTextureSampler: out.debug << "Construct combined texture-sampler"; break; @@ -482,6 +527,18 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpReadInvocation: out.debug << "readInvocation"; break; +#ifdef AMD_EXTENSIONS + case EOpSwizzleInvocations: out.debug << "swizzleInvocations"; break; + case EOpSwizzleInvocationsMasked: out.debug << "swizzleInvocationsMasked"; break; + case EOpWriteInvocation: out.debug << "writeInvocation"; break; + + case EOpMin3: out.debug << "min3"; break; + case EOpMax3: out.debug << "max3"; break; + case EOpMid3: out.debug << "mid3"; break; + + case EOpTime: out.debug << "time"; break; +#endif + case EOpAtomicAdd: out.debug << "AtomicAdd"; break; case EOpAtomicMin: out.debug << "AtomicMin"; break; case EOpAtomicMax: out.debug << "AtomicMax"; break; @@ -539,6 +596,9 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpInterpolateAtSample: out.debug << "interpolateAtSample"; break; case EOpInterpolateAtOffset: out.debug << "interpolateAtOffset"; break; +#ifdef AMD_EXTENSIONS + case EOpInterpolateAtVertex: out.debug << "interpolateAtVertex"; break; +#endif case EOpSinCos: out.debug << "sincos"; break; case EOpGenMul: out.debug << "mul"; break; @@ -611,6 +671,9 @@ static void OutputConstantUnion(TInfoSink& out, const TIntermTyped* node, const break; case EbtFloat: case EbtDouble: +#ifdef AMD_EXTENSIONS + case EbtFloat16: +#endif { const double value = constUnion[i].getDConst(); // Print infinity in a portable way, for test stability. diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp new file mode 100644 index 00000000..15847ddb --- /dev/null +++ b/glslang/MachineIndependent/iomapper.cpp @@ -0,0 +1,270 @@ +// +//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 "../Include/InfoSink.h" +#include "iomapper.h" +#include "LiveTraverser.h" +#include "localintermediate.h" + +#include "gl_types.h" + +#include +#include + +// +// Map IO bindings. +// +// High-level algorithm for one stage: +// +// 1. Traverse all code (live+dead) to find the explicitly provided bindings. +// +// 2. Traverse (just) the live code to determine which non-provided bindings +// require auto-numbering. We do not auto-number dead ones. +// +// 3. Traverse all the code to apply the bindings: +// a. explicitly given bindings are offset according to their type +// b. implicit live bindings are auto-numbered into the holes, using +// any open binding slot. +// c. implicit dead bindings are left un-bound. +// + + +namespace glslang { + +// Map of IDs to bindings +typedef std::unordered_map TBindingMap; +typedef std::unordered_set TUsedBindings; + + +// This traverses the AST to determine which bindings are used, and which are implicit +// (for subsequent auto-numbering) +class TBindingTraverser : public TLiveTraverser { +public: + TBindingTraverser(const TIntermediate& i, TBindingMap& bindingMap, TUsedBindings& usedBindings, + bool traverseDeadCode = false) : + TLiveTraverser(i, traverseDeadCode, true, true, false), + bindingMap(bindingMap), + usedBindings(usedBindings) + { } + +protected: + virtual void visitSymbol(TIntermSymbol* base) { + if (base->getQualifier().storage == EvqUniform) + addUniform(*base); + } + + // Return the right binding base given the variable type. + int getBindingBase(const TType& type) { + if (type.getBasicType() == EbtSampler) { + const TSampler& sampler = type.getSampler(); + if (sampler.isPureSampler()) + return intermediate.getShiftSamplerBinding(); + if (sampler.isTexture()) + return intermediate.getShiftTextureBinding(); + } + + if (type.getQualifier().isUniformOrBuffer()) + return intermediate.getShiftUboBinding(); + + return -1; // not a type with a binding + } + + // Mark a given base symbol ID as being bound to 'binding' + void markBinding(const TIntermSymbol& base, int binding) { + bindingMap[base.getId()] = binding; + + if (binding >= 0) { + // const TType& type = base.getType(); + const unsigned int size = 1; // type.isArray() ? type.getCumulativeArraySize() : 1; + + for (unsigned int offset=0; offset= TQualifier::layoutBindingEnd) { + TString err = "mapped binding out of range: "; + err += base.getName(); + + infoSink.info.message(EPrefixInternalError, err.c_str()); + assignError = true; + + return 0; + } + + return binding; + } + + void addUniform(TIntermSymbol& base) override + { + // Skip things we don't intend to bind. + if (bindingMap.find(base.getId()) == bindingMap.end()) + return; + + const int existingBinding = bindingMap[base.getId()]; + + // Apply existing binding, if we were given one or already made one up. + if (existingBinding != -1) { + base.getWritableType().getQualifier().layoutBinding = checkBindingRange(base, existingBinding); + return; + } + + if (intermediate.getAutoMapBindings()) { + // Otherwise, find a free spot for it. + const int freeBinding = getFreeBinding(base.getType(), getBindingBase(base.getType())); + + markBinding(base, freeBinding); + base.getWritableType().getQualifier().layoutBinding = checkBindingRange(base, freeBinding); + } + } + + // Search for N free consecutive binding slots in [base, base+required). + // E.g, if we want to reserve consecutive bindings for flattened arrays. + bool hasNFreeSlots(int base, int required) { + for (int binding = base; binding < (base + required); ++binding) + if (usedBindings.find(binding) != usedBindings.end()) + return false; + + return true; + } + + // Find a free binding spot + int getFreeBinding(const TType&, int nextBinding) { + while (!hasNFreeSlots(nextBinding, 1)) + ++nextBinding; + + return nextBinding; + } + +private: + bool assignError; // true if there was an error assigning the bindings + TInfoSink& infoSink; +}; + +// Map I/O variables to provided offsets, and make bindings for +// unbound but live variables. +// +// Returns false if the input is too malformed to do this. +bool TIoMapper::addStage(EShLanguage, TIntermediate& intermediate, TInfoSink& infoSink) +{ + // Trivial return if there is nothing to do. + if (intermediate.getShiftSamplerBinding() == 0 && + intermediate.getShiftTextureBinding() == 0 && + intermediate.getShiftUboBinding() == 0 && + intermediate.getAutoMapBindings() == false) + return true; + + if (intermediate.getNumEntryPoints() != 1 || intermediate.isRecursive()) + return false; + + TIntermNode* root = intermediate.getTreeRoot(); + if (root == nullptr) + return false; + + // The lifetime of this data spans several passes. + TBindingMap bindingMap; + TUsedBindings usedBindings; + + TBindingTraverser it_binding_all(intermediate, bindingMap, usedBindings, true); + TBindingTraverser it_binding_live(intermediate, bindingMap, usedBindings, false); + TIoMappingTraverser it_iomap(intermediate, bindingMap, usedBindings, infoSink, true); + + // Traverse all (live+dead) code to find explicit bindings, so we can avoid those. + root->traverse(&it_binding_all); + + // Traverse just live code to find things that need implicit bindings. + it_binding_live.pushFunction(intermediate.getEntryPointMangledName().c_str()); + + while (! it_binding_live.functions.empty()) { + TIntermNode* function = it_binding_live.functions.back(); + it_binding_live.functions.pop_back(); + function->traverse(&it_binding_live); + } + + // Bind everything that needs a binding and doesn't have one. + root->traverse(&it_iomap); + + return it_iomap.success(); +} + +} // end namespace glslang diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h new file mode 100644 index 00000000..68dec776 --- /dev/null +++ b/glslang/MachineIndependent/iomapper.h @@ -0,0 +1,63 @@ +// +//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. +// + +#ifndef _IOMAPPER_INCLUDED +#define _IOMAPPER_INCLUDED + +#include "../Public/ShaderLang.h" + +// +// A reflection database and its interface, consistent with the OpenGL API reflection queries. +// + +class TInfoSink; + +namespace glslang { + +class TIntermediate; + +// I/O mapper +class TIoMapper { +public: + TIoMapper() {} + virtual ~TIoMapper() {} + + // grow the reflection stage by stage + bool addStage(EShLanguage, TIntermediate&, TInfoSink&); +}; + +} // end namespace glslang + +#endif // _IOMAPPER_INCLUDED diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 1cda57d3..2e101347 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -75,13 +75,13 @@ void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) 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::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy // 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"); @@ -651,7 +651,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ int size; if (qualifier.isUniformOrBuffer()) { - if (type.isArray()) + if (type.isExplicitlySizedArray()) size = type.getCumulativeArraySize(); else size = 1; @@ -664,30 +664,93 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ size = computeTypeLocationSize(type); } - TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation + size - 1); - TRange componentRange(0, 3); - if (qualifier.hasComponent()) { - componentRange.start = qualifier.layoutComponent; - componentRange.last = componentRange.start + type.getVectorSize() - 1; - } - TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.layoutIndex : 0); + // 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. - // 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); - } + 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); + } + + return collision; +} + +// 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 } @@ -887,6 +950,9 @@ int TIntermediate::getBaseAlignmentScalar(const TType& type, int& size) case EbtInt64: case EbtUint64: case EbtDouble: size = 8; return 8; +#ifdef AMD_EXTENSIONS + case EbtFloat16: size = 2; return 2; +#endif default: size = 4; return 4; } } @@ -940,7 +1006,7 @@ int TIntermediate::getBaseAlignment(const TType& type, int& size, int& stride, b // components each, according to rule (4). // // 6. If the member is an array of S column-major matrices with C columns and - // R rows, the matrix is stored identically to a row of S  C column vectors + // R rows, the matrix is stored identically to a row of S X C column vectors // with R components each, according to rule (4). // // 7. If the member is a row-major matrix with C columns and R rows, the matrix @@ -948,7 +1014,7 @@ int TIntermediate::getBaseAlignment(const TType& type, int& size, int& stride, b // according to rule (4). // // 8. If the member is an array of S row-major matrices with C columns and R - // rows, the matrix is stored identically to a row of S  R row vectors with C + // rows, the matrix is stored identically to a row of S X R row vectors with C // components each, according to rule (4). // // 9. If the member is a structure, the base alignment of the structure is N , where diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index d855e723..1dd14403 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -1,5 +1,6 @@ // //Copyright (C) 2002-2005 3Dlabs Inc. Ltd. +//Copyright (C) 2016 LunarG, Inc. //All rights reserved. // //Redistribution and use in source and binary forms, with or without @@ -47,6 +48,16 @@ class TInfoSink; namespace glslang { struct TVectorFields { + TVectorFields() { } + + TVectorFields(int c0, int c1, int c2, int c3) : num(4) + { + offsets[0] = c0; + offsets[1] = c1; + offsets[2] = c2; + offsets[3] = c3; + } + int offsets[4]; int num; }; @@ -126,11 +137,17 @@ class TIntermediate { 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), - multiStream(false), xfbMode(false) + multiStream(false), xfbMode(false), + shiftSamplerBinding(0), + shiftTextureBinding(0), + shiftUboBinding(0), + autoMapBindings(false), + flattenUniformArrays(false), + useUnknownFormat(false) { localSize[0] = 1; localSize[1] = 1; @@ -148,8 +165,24 @@ public: 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 setShiftSamplerBinding(unsigned int shift) { shiftSamplerBinding = shift; } + unsigned int getShiftSamplerBinding() const { return shiftSamplerBinding; } + void setShiftTextureBinding(unsigned int shift) { shiftTextureBinding = shift; } + unsigned int getShiftTextureBinding() const { return shiftTextureBinding; } + void setShiftUboBinding(unsigned int shift) { shiftUboBinding = shift; } + unsigned int getShiftUboBinding() const { return shiftUboBinding; } + void setAutoMapBindings(bool map) { autoMapBindings = map; } + bool getAutoMapBindings() const { return autoMapBindings; } + void setFlattenUniformArrays(bool flatten) { flattenUniformArrays = flatten; } + bool getFlattenUniformArrays() const { return flattenUniformArrays; } + void setNoStorageFormat(bool b) { useUnknownFormat = b; } + bool getNoStorageFormat() const { return useUnknownFormat; } + void setVersion(int v) { version = v; } int getVersion() const { return version; } void setProfile(EProfile p) { profile = p; } @@ -162,8 +195,8 @@ public: 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; } @@ -171,13 +204,16 @@ public: TIntermSymbol* addSymbol(const TVariable&); TIntermSymbol* addSymbol(const TVariable&, const TSourceLoc&); TIntermSymbol* addSymbol(const TType&, const TSourceLoc&); + TIntermSymbol* addSymbol(const TIntermSymbol&); TIntermTyped* addConversion(TOperator, const TType&, TIntermTyped*) const; + TIntermTyped* addShapeConversion(TOperator, const TType&, TIntermTyped*); TIntermTyped* addBinaryMath(TOperator, TIntermTyped* left, TIntermTyped* right, TSourceLoc); TIntermTyped* addAssign(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc); 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&); TIntermAggregate* makeAggregate(TIntermNode* node); @@ -203,6 +239,16 @@ public: TIntermBranch* addBranch(TOperator, TIntermTyped*, const TSourceLoc&); TIntermTyped* addSwizzle(TVectorFields&, const TSourceLoc&); + // Low level functions to add nodes (no conversions or other higher level transformations) + // If a type is provided, the node's type will be set to it. + TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc) const; + TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc, const TType&) const; + TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc) const; + TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc, const TType&) const; + + // Add conversion from node's type to given basic type. + TIntermTyped* convertToBasicType(TOperator op, TBasicType basicType, TIntermTyped* node) const; + // Constant folding (in Constant.cpp) TIntermTyped* fold(TIntermAggregate* aggrNode); TIntermTyped* foldConstructor(TIntermAggregate* aggrNode); @@ -318,6 +364,7 @@ public: 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; @@ -346,17 +393,28 @@ protected: bool userOutputUsed() const; static int getBaseAlignmentScalar(const TType&, int& size); bool isSpecializationOperation(const TIntermOperator&) const; - + bool promote(TIntermOperator*); + bool promoteUnary(TIntermUnary&); + bool promoteBinary(TIntermBinary&); + 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; + unsigned int shiftSamplerBinding; + unsigned int shiftTextureBinding; + unsigned int shiftUboBinding; + bool autoMapBindings; + bool flattenUniformArrays; + bool useUnknownFormat; + EProfile profile; int version; SpvVersion spvVersion; TIntermNode* treeRoot; std::set 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/parseVersions.h b/glslang/MachineIndependent/parseVersions.h index c0c89457..967d352a 100755 --- a/glslang/MachineIndependent/parseVersions.h +++ b/glslang/MachineIndependent/parseVersions.h @@ -76,6 +76,9 @@ public: virtual void updateExtensionBehavior(int line, const char* const extension, const char* behavior); virtual void fullIntegerCheck(const TSourceLoc&, const char* op); virtual void doubleCheck(const TSourceLoc&, const char* op); +#ifdef AMD_EXTENSIONS + virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false); +#endif virtual void int64Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void spvRemoved(const TSourceLoc&, const char* op); virtual void vulkanRemoved(const TSourceLoc&, const char* op); @@ -119,12 +122,12 @@ public: TIntermediate& intermediate; // helper for making and hooking up pieces of the parse tree protected: + TMap extensionBehavior; // for each extension string, what its current behavior is set to EShMessages messages; // errors/warnings/rule-sets int numErrors; // number of compile-time errors encountered TInputScanner* currentScanner; private: - TMap extensionBehavior; // for each extension string, what its current behavior is set to explicit TParseVersions(const TParseVersions&); TParseVersions& operator=(const TParseVersions&); }; diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index 35097588..3c6d0122 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -81,12 +81,10 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define _CRT_SECURE_NO_WARNINGS -#include -#include #include -#include -#include -#include +#include +#include +#include #include "PpContext.h" #include "PpTokens.h" @@ -192,7 +190,7 @@ int TPpContext::CPPdefine(TPpToken* ppToken) do { int oldToken; TPpToken oldPpToken; - TPpToken newPpToken; + TPpToken newPpToken; oldToken = ReadToken(symb->mac.body, &oldPpToken); newToken = ReadToken(mac.body, &newPpToken); if (oldToken != newToken || oldPpToken != newPpToken) { @@ -250,7 +248,7 @@ int TPpContext::CPPelse(int matchelse, TPpToken* ppToken) if (token != '#') { while (token != '\n' && token != EndOfInput) token = scanToken(ppToken); - + if (token == EndOfInput) return token; @@ -495,7 +493,7 @@ int TPpContext::eval(int token, int precedence, bool shortCircuit, int& res, boo if (op < 0 || binop[op].precedence <= precedence) break; int leftSide = res; - + // Setup short-circuiting, needed for ES, unless already in a short circuit. // (Once in a short-circuit, can't turn off again, until that whole subexpression is done. if (! shortCircuit) { @@ -707,6 +705,9 @@ int TPpContext::CPPerror(TPpToken* ppToken) while (token != '\n' && token != EndOfInput) { if (token == PpAtomConstInt || token == PpAtomConstUint || token == PpAtomConstInt64 || token == PpAtomConstUint64 || +#ifdef AMD_EXTENSIONS + token == PpAtomConstFloat16 || +#endif token == PpAtomConstFloat || token == PpAtomConstDouble) { message.append(ppToken->name); } else if (token == PpAtomIdentifier || token == PpAtomConstString) { @@ -741,6 +742,9 @@ int TPpContext::CPPpragma(TPpToken* ppToken) case PpAtomConstUint64: case PpAtomConstFloat: case PpAtomConstDouble: +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: +#endif tokens.push_back(ppToken->name); break; default: @@ -756,7 +760,7 @@ int TPpContext::CPPpragma(TPpToken* ppToken) else parseContext.handlePragma(loc, tokens); - return token; + return token; } // #version: This is just for error checking: the version and profile are decided before preprocessing starts @@ -980,7 +984,7 @@ int TPpContext::tMacroInput::scan(TPpToken* ppToken) if (token == EndOfInput) mac->busy = 0; - + return token; } @@ -1060,7 +1064,7 @@ int TPpContext::MacroExpand(int atom, TPpToken* ppToken, bool expandUndef, bool if (sym->mac.args) { token = scanToken(ppToken); if (newLineOkay) { - while (token == '\n') + while (token == '\n') token = scanToken(ppToken); } if (token != '(') { diff --git a/glslang/MachineIndependent/preprocessor/PpAtom.cpp b/glslang/MachineIndependent/preprocessor/PpAtom.cpp index 763b6b4e..2b211931 100644 --- a/glslang/MachineIndependent/preprocessor/PpAtom.cpp +++ b/glslang/MachineIndependent/preprocessor/PpAtom.cpp @@ -82,10 +82,9 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define _CRT_SECURE_NO_WARNINGS -#include -#include -#include -#include +#include +#include +#include #include "PpContext.h" #include "PpTokens.h" @@ -98,6 +97,32 @@ const struct { int val; const char* str; } tokens[] = { + + { PpAtomAdd, "+=" }, + { PpAtomSub, "-=" }, + { PpAtomMul, "*=" }, + { PpAtomDiv, "/=" }, + { PpAtomMod, "%=" }, + { PpAtomRight, ">>" }, + { PpAtomLeft, "<<" }, + { PpAtomAnd, "&&" }, + { PpAtomOr, "||" }, + { PpAtomXor, "^^" }, + + { PpAtomRightAssign, ">>=" }, + { PpAtomLeftAssign, "<<=" }, + { PpAtomAndAssign, "&=" }, + { PpAtomOrAssign, "|=" }, + { PpAtomXorAssign, "^=" }, + + { PpAtomEQ, "==" }, + { PpAtomNE, "!=" }, + { PpAtomGE, ">=" }, + { PpAtomLE, "<=" }, + + { PpAtomDecrement, "--" }, + { PpAtomIncrement, "++" }, + { PpAtomDefine, "define" }, { PpAtomDefined, "defined" }, { PpAtomUndef, "undef" }, @@ -121,8 +146,7 @@ const struct { { PpAtomFileMacro, "__FILE__" }, { PpAtomVersionMacro, "__VERSION__" }, - { PpAtomInclude, "include" }, - + { PpAtomInclude, "include" }, }; } // end anonymous namespace diff --git a/glslang/MachineIndependent/preprocessor/PpContext.cpp b/glslang/MachineIndependent/preprocessor/PpContext.cpp index 6f0b8a9a..6791fef5 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.cpp +++ b/glslang/MachineIndependent/preprocessor/PpContext.cpp @@ -76,8 +76,7 @@ TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************/ -#include -#include +#include #include "PpContext.h" diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h index 23021e24..013c90e5 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/glslang/MachineIndependent/preprocessor/PpContext.h @@ -218,7 +218,7 @@ protected: TParseContextBase& parseContext; // Get the next token from *stack* of input sources, popping input sources - // that are out of tokens, down until an input sources is found that has a token. + // that are out of tokens, down until an input source is found that has a token. // Return EndOfInput when there are no more tokens to be found by doing this. int scanToken(TPpToken* ppToken) { @@ -226,7 +226,7 @@ protected: while (! inputStack.empty()) { token = inputStack.back()->scan(ppToken); - if (token != EndOfInput) + if (token != EndOfInput || inputStack.empty()) break; popInput(); } diff --git a/glslang/MachineIndependent/preprocessor/PpMemory.cpp b/glslang/MachineIndependent/preprocessor/PpMemory.cpp index 57a49fb8..6158a387 100644 --- a/glslang/MachineIndependent/preprocessor/PpMemory.cpp +++ b/glslang/MachineIndependent/preprocessor/PpMemory.cpp @@ -76,10 +76,9 @@ TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************/ -#include -#include -#include -#include +#include +#include +#include #include "PpContext.h" diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp index b3d1af6d..518dbdee 100644 --- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -81,10 +81,8 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define _CRT_SECURE_NO_WARNINGS -#include -#include -#include -#include +#include +#include #include "PpContext.h" #include "PpTokens.h" @@ -119,6 +117,10 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) int declen; int str_len; int isDouble = 0; +#ifdef AMD_EXTENSIONS + int isFloat16 = 0; + bool enableFloat16 = parseContext.version >= 450 && parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float); +#endif declen = 0; @@ -202,6 +204,28 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) len = 1,str_len=1; } } +#ifdef AMD_EXTENSIONS + } else if (enableFloat16 && (ch == 'h' || ch == 'H')) { + parseContext.float16Check(ppToken->loc, "half floating-point suffix"); + if (!HasDecimalOrExponent) + parseContext.ppError(ppToken->loc, "float literal needs a decimal point or exponent", "", ""); + int ch2 = getChar(); + if (ch2 != 'f' && ch2 != 'F') { + ungetChar(); + ungetChar(); + } + else { + if (len < MaxTokenLength) { + str[len++] = (char)ch; + str[len++] = (char)ch2; + isFloat16 = 1; + } + else { + parseContext.ppError(ppToken->loc, "float literal too long", "", ""); + len = 1, str_len = 1; + } + } +#endif } else if (ch == 'f' || ch == 'F') { parseContext.profileRequires(ppToken->loc, EEsProfile, 300, nullptr, "floating-point suffix"); if (! parseContext.relaxedErrors()) @@ -224,6 +248,10 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) if (isDouble) return PpAtomConstDouble; +#ifdef AMD_EXTENSIONS + else if (isFloat16) + return PpAtomConstFloat16; +#endif else return PpAtomConstFloat; } @@ -298,7 +326,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) ppToken->name[len++] = (char)ch; ch = getch(); if (ch == 'x' || ch == 'X') { - // must be hexidecimal + // must be hexadecimal bool isUnsigned = false; bool isInt64 = false; @@ -319,11 +347,11 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) } else if (ch >= 'a' && ch <= 'f') { ii = ch - 'a' + 10; } else - pp->parseContext.ppError(ppToken->loc, "bad digit in hexidecimal literal", "", ""); + pp->parseContext.ppError(ppToken->loc, "bad digit in hexadecimal literal", "", ""); ival = (ival << 4) | ii; } else { if (! AlreadyComplained) { - pp->parseContext.ppError(ppToken->loc, "hexidecimal literal too big", "", ""); + pp->parseContext.ppError(ppToken->loc, "hexadecimal literal too big", "", ""); AlreadyComplained = 1; } ival = 0xffffffffffffffffull; @@ -333,7 +361,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) (ch >= 'A' && ch <= 'F') || (ch >= 'a' && ch <= 'f')); } else { - pp->parseContext.ppError(ppToken->loc, "bad digit in hexidecimal literal", "", ""); + pp->parseContext.ppError(ppToken->loc, "bad digit in hexadecimal literal", "", ""); } if (ch == 'u' || ch == 'U') { if (len < MaxTokenLength) @@ -405,7 +433,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) } if (ch == '.' || ch == 'e' || ch == 'f' || ch == 'E' || ch == 'F') return pp->lFloatConst(len, ch, ppToken); - + // wasn't a float, so must be octal... if (nonOctal) pp->parseContext.ppError(ppToken->loc, "octal literal digit too large", "", ""); @@ -447,7 +475,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': - // can't be hexidecimal or octal, is either decimal or floating point + // can't be hexadecimal or octal, is either decimal or floating point do { if (len < MaxTokenLength) @@ -698,14 +726,14 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) } // -// 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. // Return 0 when no more tokens. // const char* TPpContext::tokenize(TPpToken* ppToken) -{ +{ int token = '\n'; for(;;) { @@ -746,10 +774,18 @@ const char* TPpContext::tokenize(TPpToken* ppToken) case PpAtomConstInt64: case PpAtomConstUint64: case PpAtomConstDouble: +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: +#endif 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 +795,8 @@ const char* TPpContext::tokenize(TPpToken* ppToken) 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 c2ab7c0a..b7f1df55 100644 --- a/glslang/MachineIndependent/preprocessor/PpSymbols.cpp +++ b/glslang/MachineIndependent/preprocessor/PpSymbols.cpp @@ -79,10 +79,9 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // symbols.c // -#include -#include -#include -#include +#include +#include +#include #include "PpContext.h" diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp index 54d495e1..23b617d3 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -85,11 +85,10 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define snprintf sprintf_s #endif -#include -#include -#include -#include -#include +#include +#include +#include +#include #include "PpContext.h" #include "PpTokens.h" @@ -145,6 +144,9 @@ void TPpContext::RecordToken(TokenStream *pTok, int token, TPpToken* ppToken) case PpAtomConstUint64: case PpAtomConstFloat: case PpAtomConstDouble: +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: +#endif str = ppToken->name; while (*str) { lAddByte(pTok, (unsigned char) *str); @@ -179,20 +181,26 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken) if (ltoken > 127) ltoken += 128; switch (ltoken) { - case '#': - if (lReadByte(pTok) == '#') { - parseContext.requireProfile(ppToken->loc, ~EEsProfile, "token pasting (##)"); - parseContext.profileRequires(ppToken->loc, ~EEsProfile, 130, 0, "token pasting (##)"); - parseContext.error(ppToken->loc, "token pasting not implemented (internal error)", "##", ""); - //return PpAtomPaste; - return ReadToken(pTok, ppToken); - } else - lUnreadByte(pTok); + case '#': + // Check for ##, unless the current # is the last character + if (pTok->current < pTok->data.size()) { + if (lReadByte(pTok) == '#') { + parseContext.requireProfile(ppToken->loc, ~EEsProfile, "token pasting (##)"); + parseContext.profileRequires(ppToken->loc, ~EEsProfile, 130, 0, "token pasting (##)"); + parseContext.error(ppToken->loc, "token pasting not implemented (internal error)", "##", ""); + //return PpAtomPaste; + return ReadToken(pTok, ppToken); + } else + lUnreadByte(pTok); + } break; case PpAtomConstString: case PpAtomIdentifier: case PpAtomConstFloat: case PpAtomConstDouble: +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: +#endif case PpAtomConstInt: case PpAtomConstUint: case PpAtomConstInt64: @@ -219,20 +227,30 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken) break; case PpAtomConstFloat: case PpAtomConstDouble: +#ifdef AMD_EXTENSIONS + case PpAtomConstFloat16: +#endif 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); + ppToken->ival = (int)strtol(ppToken->name, 0, 16); else - ppToken->ival = strtol(ppToken->name, 0, 8); + ppToken->ival = (int)strtol(ppToken->name, 0, 8); } 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); @@ -241,6 +259,15 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken) } 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/preprocessor/PpTokens.h b/glslang/MachineIndependent/preprocessor/PpTokens.h index 87f0eb1a..c84431d3 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.h +++ b/glslang/MachineIndependent/preprocessor/PpTokens.h @@ -123,9 +123,12 @@ enum EFixedAtoms { PpAtomConstUint64, PpAtomConstFloat, PpAtomConstDouble, +#ifdef AMD_EXTENSIONS + PpAtomConstFloat16, +#endif PpAtomConstString, - // Indentifiers + // Identifiers PpAtomIdentifier, // preprocessor "keywords" diff --git a/glslang/MachineIndependent/propagateNoContraction.cpp b/glslang/MachineIndependent/propagateNoContraction.cpp index e599f4d9..caa6e200 100644 --- a/glslang/MachineIndependent/propagateNoContraction.cpp +++ b/glslang/MachineIndependent/propagateNoContraction.cpp @@ -670,7 +670,7 @@ protected: // Gets the struct dereference index that leads to 'precise' object. ObjectAccessChain precise_accesschain_index_str = getFrontElement(remained_accesschain_); - unsigned precise_accesschain_index = strtoul(precise_accesschain_index_str.c_str(), nullptr, 10); + unsigned precise_accesschain_index = (unsigned)strtoul(precise_accesschain_index_str.c_str(), nullptr, 10); // Gets the node pointed by the access chain index extracted before. glslang::TIntermTyped* potential_precise_node = node->getSequence()[precise_accesschain_index]->getAsTyped(); diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index d3e04af7..31bd1725 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. @@ -119,7 +109,7 @@ public: TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name); if (it == reflection.nameToIndex.end()) { reflection.nameToIndex[name] = (int)reflection.indexToAttribute.size(); - reflection.indexToAttribute.push_back(TObjectReflection(name, 0, mapToGlType(type), 0, 0)); + reflection.indexToAttribute.push_back(TObjectReflection(name, type, 0, mapToGlType(type), 0, 0)); } } } @@ -255,7 +245,8 @@ public: TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name); if (it == reflection.nameToIndex.end()) { reflection.nameToIndex[name] = (int)reflection.indexToUniform.size(); - reflection.indexToUniform.push_back(TObjectReflection(name, offset, mapToGlType(*terminalType), arraySize, blockIndex)); + reflection.indexToUniform.push_back(TObjectReflection(name, *terminalType, offset, mapToGlType(*terminalType), + arraySize, blockIndex)); } else if (arraySize > 1) { int& reflectedArraySize = reflection.indexToUniform[it->second].size; reflectedArraySize = std::max(arraySize, reflectedArraySize); @@ -306,12 +297,18 @@ public: if (block) { offset = 0; anonymous = IsAnonymous(base->getName()); + + const TString& blockName = base->getType().getTypeName(); + if (base->getType().isArray()) { + TType derefType(base->getType(), 0); + assert(! anonymous); for (int e = 0; e < base->getType().getCumulativeArraySize(); ++e) - blockIndex = addBlockName(base->getType().getTypeName() + "[" + String(e) + "]", getBlockSize(base->getType())); + blockIndex = addBlockName(blockName + "[" + String(e) + "]", derefType, + getBlockSize(base->getType())); } else - blockIndex = addBlockName(base->getType().getTypeName(), getBlockSize(base->getType())); + blockIndex = addBlockName(blockName, base->getType(), getBlockSize(base->getType())); } // Process the dereference chain, backward, accumulating the pieces for later forward traversal. @@ -344,35 +341,20 @@ public: blowUpActiveAggregate(base->getType(), baseName, derefs, derefs.begin(), offset, blockIndex, arraySize); } - int addBlockName(const TString& name, int size) + int addBlockName(const TString& name, const TType& type, int size) { int blockIndex; TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name); if (reflection.nameToIndex.find(name) == reflection.nameToIndex.end()) { blockIndex = (int)reflection.indexToUniformBlock.size(); reflection.nameToIndex[name] = blockIndex; - reflection.indexToUniformBlock.push_back(TObjectReflection(name, -1, -1, size, -1)); + reflection.indexToUniformBlock.push_back(TObjectReflection(name, type, -1, -1, size, -1)); } else blockIndex = it->second; 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) @@ -554,6 +536,9 @@ public: switch (type.getBasicType()) { case EbtFloat: return GL_FLOAT_VEC2 + offset; case EbtDouble: return GL_DOUBLE_VEC2 + offset; +#ifdef AMD_EXTENSIONS + case EbtFloat16: return GL_FLOAT16_VEC2_NV + offset; +#endif case EbtInt: return GL_INT_VEC2 + offset; case EbtUint: return GL_UNSIGNED_INT_VEC2 + offset; case EbtInt64: return GL_INT64_ARB + offset; @@ -613,6 +598,32 @@ public: default: return 0; } } +#ifdef AMD_EXTENSIONS + case EbtFloat16: + switch (type.getMatrixCols()) { + case 2: + switch (type.getMatrixRows()) { + case 2: return GL_FLOAT16_MAT2_AMD; + case 3: return GL_FLOAT16_MAT2x3_AMD; + case 4: return GL_FLOAT16_MAT2x4_AMD; + default: return 0; + } + case 3: + switch (type.getMatrixRows()) { + case 2: return GL_FLOAT16_MAT3x2_AMD; + case 3: return GL_FLOAT16_MAT3_AMD; + case 4: return GL_FLOAT16_MAT3x4_AMD; + default: return 0; + } + case 4: + switch (type.getMatrixRows()) { + case 2: return GL_FLOAT16_MAT4x2_AMD; + case 3: return GL_FLOAT16_MAT4x3_AMD; + case 4: return GL_FLOAT16_MAT4_AMD; + default: return 0; + } + } +#endif default: return 0; } @@ -621,6 +632,9 @@ public: switch (type.getBasicType()) { case EbtFloat: return GL_FLOAT; case EbtDouble: return GL_DOUBLE; +#ifdef AMD_EXTENSIONS + case EbtFloat16: return GL_FLOAT16_NV; +#endif case EbtInt: return GL_INT; case EbtUint: return GL_UNSIGNED_INT; case EbtInt64: return GL_INT64_ARB; @@ -639,33 +653,21 @@ public: return type.isArray() ? type.getOuterArraySize() : 1; } - typedef std::list TFunctionStack; - TFunctionStack functions; - const TIntermediate& intermediate; TReflection& reflection; std::set 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 +685,7 @@ bool TLiveTraverser::visitBinary(TVisit /* visit */, TIntermBinary* node) } // To reflect non-dereferenced objects. -void TLiveTraverser::visitSymbol(TIntermSymbol* base) +void TReflectionTraverser::visitSymbol(TIntermSymbol* base) { if (base->getQualifier().storage == EvqUniform) addUniform(*base); @@ -692,21 +694,6 @@ void TLiveTraverser::visitSymbol(TIntermSymbol* base) 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 +704,13 @@ bool TLiveTraverser::visitSelection(TVisit /* visit */, TIntermSelection* node) // 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 5d930c7a..13f5177c 100644 --- a/glslang/MachineIndependent/reflection.h +++ b/glslang/MachineIndependent/reflection.h @@ -1,5 +1,5 @@ // -//Copyright (C) 2013 LunarG, Inc. +//Copyright (C) 2013-2016 LunarG, Inc. // //All rights reserved. // @@ -37,6 +37,7 @@ #define _REFLECTION_INCLUDED #include "../Public/ShaderLang.h" +#include "../Include/Types.h" #include #include @@ -49,25 +50,46 @@ namespace glslang { 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 { public: - TObjectReflection(const TString& pName, int pOffset, int pGLDefineType, int pSize, int pIndex) : - name(pName), offset(pOffset), glDefineType(pGLDefineType), size(pSize), index(pIndex) { } - void dump() const { printf("%s: offset %d, type %x, size %d, index %d\n", name.c_str(), offset, glDefineType, size, index); } + TObjectReflection(const TString& pName, const TType& pType, int pOffset, int pGLDefineType, int pSize, int pIndex) : + name(pName), type(pType.clone()), + offset(pOffset), glDefineType(pGLDefineType), size(pSize), index(pIndex) { } + + void dump() const { + printf("%s: offset %d, type %x, size %d, index %d, binding %d\n", + name.c_str(), offset, glDefineType, size, index, getBinding() ); + } + + const TType* const getType() const { return type; } + TString name; int offset; int glDefineType; int size; // data size in bytes for a block, array size for a (non-block) object that's an array int index; + + static TObjectReflection badReflection() { return TObjectReflection(); } + +protected: + int getBinding() const { + if (type == nullptr || type->getQualifier().layoutBinding == TQualifier::layoutBindingEnd) + return -1; + return type->getQualifier().layoutBinding; + } + + TObjectReflection() : type(nullptr), offset(-1), glDefineType(-1), size(-1), index(-1) { } + + const TType* type; }; // The full reflection database class TReflection { public: - TReflection() : badReflection("__bad__", -1, -1, -1, -1) {} + TReflection() : badReflection(TObjectReflection::badReflection()) { } virtual ~TReflection() {} // grow the reflection stage by stage @@ -116,7 +138,7 @@ public: void dump(); protected: - friend class glslang::TLiveTraverser; + friend class glslang::TReflectionTraverser; // Need a TString hash: typedef std::unordered_map TNameToIndex; typedef std::map TNameToIndex; diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp index 123e0869..7e84d4eb 100644 --- a/glslang/OSDependent/Unix/ossource.cpp +++ b/glslang/OSDependent/Unix/ossource.cpp @@ -165,21 +165,39 @@ bool OS_FreeTLSIndex(OS_TLSIndex nIndex) return false; } -// TODO: non-windows: if we need these on linux, flesh them out -void InitGlobalLock() { } -void GetGlobalLock() { } -void ReleaseGlobalLock() { } +namespace { +pthread_mutex_t gMutex; +} -void* OS_CreateThread(TThreadEntrypoint entry) +void InitGlobalLock() +{ + pthread_mutexattr_t mutexattr; + pthread_mutexattr_init(&mutexattr); + pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&gMutex, &mutexattr); +} + +void GetGlobalLock() +{ + pthread_mutex_lock(&gMutex); +} + +void ReleaseGlobalLock() +{ + pthread_mutex_unlock(&gMutex); +} + +// TODO: non-windows: if we need these on linux, flesh them out +void* OS_CreateThread(TThreadEntrypoint /*entry*/) { return 0; } -void OS_WaitForAllThreads(void* threads, int numThreads) +void OS_WaitForAllThreads(void* /*threads*/, int /*numThreads*/) { } -void OS_Sleep(int milliseconds) +void OS_Sleep(int /*milliseconds*/) { } diff --git a/glslang/OSDependent/Windows/ossource.cpp b/glslang/OSDependent/Windows/ossource.cpp index 1d09fd38..f71fac9c 100644 --- a/glslang/OSDependent/Windows/ossource.cpp +++ b/glslang/OSDependent/Windows/ossource.cpp @@ -37,14 +37,14 @@ #define STRICT #define VC_EXTRALEAN 1 #include -#include +#include #include #include -#include -#include +#include +#include // -// 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 @@ namespace glslang { 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 @@ inline DWORD ToNativeTLSIndex (OS_TLSIndex nIndex) // 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 @@ void ReleaseGlobalLock() 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 4b4d0fc6..e5e8b4d7 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -1,5 +1,7 @@ // //Copyright (C) 2002-2005 3Dlabs Inc. Ltd. +//Copyright (C) 2013-2016 LunarG, Inc. +// //All rights reserved. // //Redistribution and use in source and binary forms, with or without @@ -37,7 +39,7 @@ #include "../Include/ResourceLimits.h" #include "../MachineIndependent/Versions.h" -#include +#include #ifdef _WIN32 #define C_DECL __cdecl @@ -101,6 +103,8 @@ typedef enum { namespace glslang { +class TType; + typedef enum { EShSourceNone, EShSourceGlsl, @@ -300,6 +304,12 @@ public: const char* const* s, const int* l, const char* const* names, int n); void setPreamble(const char* s) { preamble = s; } void setEntryPoint(const char* entryPoint); + void setShiftSamplerBinding(unsigned int base); + void setShiftTextureBinding(unsigned int base); + void setShiftUboBinding(unsigned int base); + void setAutoMapBindings(bool map); + void setFlattenUniformArrays(bool flatten); + void setNoStorageFormat(bool useUnknownFormat); // Interface to #include handlers. // @@ -433,6 +443,7 @@ private: }; class TReflection; +class TIoMapper; // Make one TProgram per set of shaders that will get linked together. Add all // the shaders that are to be linked together. After calling shader.parse() @@ -455,21 +466,27 @@ public: // Reflection Interface bool buildReflection(); // call first, to do liveness analysis, index mapping, etc.; returns false on failure - int getNumLiveUniformVariables(); // can be used for glGetProgramiv(GL_ACTIVE_UNIFORMS) - int getNumLiveUniformBlocks(); // can be used for glGetProgramiv(GL_ACTIVE_UNIFORM_BLOCKS) - const char* getUniformName(int index); // can be used for "name" part of glGetActiveUniform() - const char* getUniformBlockName(int blockIndex); // can be used for glGetActiveUniformBlockName() - int getUniformBlockSize(int blockIndex); // can be used for glGetActiveUniformBlockiv(UNIFORM_BLOCK_DATA_SIZE) - int getUniformIndex(const char* name); // can be used for glGetUniformIndices() - int getUniformBlockIndex(int index); // can be used for glGetActiveUniformsiv(GL_UNIFORM_BLOCK_INDEX) - int getUniformType(int index); // can be used for glGetActiveUniformsiv(GL_UNIFORM_TYPE) - int getUniformBufferOffset(int index); // can be used for glGetActiveUniformsiv(GL_UNIFORM_OFFSET) - int getUniformArraySize(int index); // can be used for glGetActiveUniformsiv(GL_UNIFORM_SIZE) - int getNumLiveAttributes(); // can be used for glGetProgramiv(GL_ACTIVE_ATTRIBUTES) - const char *getAttributeName(int index); // can be used for glGetActiveAttrib() - int getAttributeType(int index); // can be used for glGetActiveAttrib() + int getNumLiveUniformVariables() const; // can be used for glGetProgramiv(GL_ACTIVE_UNIFORMS) + int getNumLiveUniformBlocks() const; // can be used for glGetProgramiv(GL_ACTIVE_UNIFORM_BLOCKS) + const char* getUniformName(int index) const; // can be used for "name" part of glGetActiveUniform() + const char* getUniformBlockName(int blockIndex) const; // can be used for glGetActiveUniformBlockName() + int getUniformBlockSize(int blockIndex) const; // can be used for glGetActiveUniformBlockiv(UNIFORM_BLOCK_DATA_SIZE) + int getUniformIndex(const char* name) const; // can be used for glGetUniformIndices() + int getUniformBlockIndex(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_BLOCK_INDEX) + int getUniformType(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_TYPE) + int getUniformBufferOffset(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_OFFSET) + int getUniformArraySize(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_SIZE) + int getNumLiveAttributes() const; // can be used for glGetProgramiv(GL_ACTIVE_ATTRIBUTES) + const char *getAttributeName(int index) const; // can be used for glGetActiveAttrib() + int getAttributeType(int index) const; // can be used for glGetActiveAttrib() + const TType* getUniformTType(int index) const; // returns a TType* + const TType* getUniformBlockTType(int index) const; // returns a TType* + void dumpReflection(); + // I/O mapping: apply base offsets and map live unbound variables + bool mapIO(); + protected: bool linkStage(EShLanguage, EShMessages); @@ -479,6 +496,7 @@ protected: bool newedIntermediate[EShLangCount]; // track which intermediate were "new" versus reusing a singleton unit in a stage TInfoSink* infoSink; TReflection* reflection; + TIoMapper* ioMapper; bool linked; private: diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 6f4abef1..a2e961e8 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -43,7 +43,7 @@ using CompileToAstTest = GlslangTest<::testing::TestWithParam>; TEST_P(CompileToAstTest, FromFile) { - loadFileCompileAndCheck(GLSLANG_TEST_DIRECTORY, GetParam(), + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::OpenGL, Target::AST); } @@ -78,6 +78,7 @@ INSTANTIATE_TEST_CASE_P( "cppSimple.vert", "cppIndent.vert", "cppNest.vert", + "cppBad.vert", "cppComplexExpr.vert", "badChars.frag", "pointCoord.frag", diff --git a/gtests/BuiltInResource.FromFile.cpp b/gtests/BuiltInResource.FromFile.cpp index 4d68d873..da81fe98 100644 --- a/gtests/BuiltInResource.FromFile.cpp +++ b/gtests/BuiltInResource.FromFile.cpp @@ -46,7 +46,7 @@ using DefaultResourceTest = GlslangTest<::testing::Test>; TEST_F(DefaultResourceTest, FromFile) { - const std::string path = GLSLANG_TEST_DIRECTORY "/baseResults/test.conf"; + const std::string path = GlobalTestSettings.testRoot + "/baseResults/test.conf"; std::string expectedConfig; tryLoadFile(path, "expected resource limit", &expectedConfig); const std::string realConfig = glslang::GetDefaultTBuiltInResourceString(); diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 4aafd11f..268caff7 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -14,10 +14,13 @@ if (TARGET gmock) ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp ${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}) @@ -26,15 +29,20 @@ if (TARGET gmock) install(TARGETS glslangtests RUNTIME DESTINATION bin) + set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") + # Supply a default test root directory, so that manual testing + # doesn't have to specify the --test-root option in the normal + # case that you want to use the tests from the same source tree. target_compile_definitions(glslangtests - PRIVATE GLSLANG_TEST_DIRECTORY="${CMAKE_CURRENT_SOURCE_DIR}/../Test") + PRIVATE GLSLANG_TEST_DIRECTORY="${GLSLANG_TEST_DIRECTORY}") target_include_directories(glslangtests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR} ${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) + add_test(NAME glslang-gtests + COMMAND glslangtests --test-root "${GLSLANG_TEST_DIRECTORY}") endif() diff --git a/gtests/Config.FromFile.cpp b/gtests/Config.FromFile.cpp index 7bc6a70e..a6e93dcf 100644 --- a/gtests/Config.FromFile.cpp +++ b/gtests/Config.FromFile.cpp @@ -54,8 +54,8 @@ TEST_P(ConfigTest, FromFile) // Get the contents for input shader and limit configurations. std::string shaderContents, configContents; - tryLoadFile(GLSLANG_TEST_DIRECTORY "/" + testCase.input, "input", &shaderContents); - tryLoadFile(GLSLANG_TEST_DIRECTORY "/" + testCase.config, "limits config", &configContents); + tryLoadFile(GlobalTestSettings.testRoot + "/" + testCase.input, "input", &shaderContents); + tryLoadFile(GlobalTestSettings.testRoot + "/" + testCase.config, "limits config", &configContents); // Decode limit configurations. TBuiltInResource resources = {}; @@ -86,7 +86,7 @@ TEST_P(ConfigTest, FromFile) // Check with expected results. const std::string expectedOutputFname = - GLSLANG_TEST_DIRECTORY "/baseResults/" + testCase.output; + GlobalTestSettings.testRoot + "/baseResults/" + testCase.output; std::string expectedOutput; tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); diff --git a/gtests/HexFloat.cpp b/gtests/HexFloat.cpp new file mode 100644 index 00000000..ddbee1f4 --- /dev/null +++ b/gtests/HexFloat.cpp @@ -0,0 +1,1231 @@ +// Copyright (c) 2015-2016 The Khronos Group Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include +#include +#include +#include +#include + +#include +#include "SPIRV/hex_float.h" + +namespace { +using ::testing::Eq; +using spvutils::BitwiseCast; +using spvutils::Float16; +using spvutils::FloatProxy; +using spvutils::HexFloat; +using spvutils::ParseNormalFloat; + +// In this file "encode" means converting a number into a string, +// and "decode" means converting a string into a number. + +using HexFloatTest = + ::testing::TestWithParam, std::string>>; +using DecodeHexFloatTest = + ::testing::TestWithParam>>; +using HexDoubleTest = + ::testing::TestWithParam, std::string>>; +using DecodeHexDoubleTest = + ::testing::TestWithParam>>; + +// Hex-encodes a float value. +template +std::string EncodeViaHexFloat(const T& value) { + std::stringstream ss; + ss << spvutils::HexFloat(value); + return ss.str(); +} + +// The following two tests can't be DRY because they take different parameter +// types. + +TEST_P(HexFloatTest, EncodeCorrectly) { + EXPECT_THAT(EncodeViaHexFloat(GetParam().first), Eq(GetParam().second)); +} + +TEST_P(HexDoubleTest, EncodeCorrectly) { + EXPECT_THAT(EncodeViaHexFloat(GetParam().first), Eq(GetParam().second)); +} + +// Decodes a hex-float string. +template +FloatProxy Decode(const std::string& str) { + spvutils::HexFloat> decoded(0.f); + EXPECT_TRUE((std::stringstream(str) >> decoded).eof()); + return decoded.value(); +} + +TEST_P(HexFloatTest, DecodeCorrectly) { + EXPECT_THAT(Decode(GetParam().second), Eq(GetParam().first)); +} + +TEST_P(HexDoubleTest, DecodeCorrectly) { + EXPECT_THAT(Decode(GetParam().second), Eq(GetParam().first)); +} + +INSTANTIATE_TEST_CASE_P( + Float32Tests, HexFloatTest, + ::testing::ValuesIn(std::vector, std::string>>({ + {0.f, "0x0p+0"}, + {1.f, "0x1p+0"}, + {2.f, "0x1p+1"}, + {3.f, "0x1.8p+1"}, + {0.5f, "0x1p-1"}, + {0.25f, "0x1p-2"}, + {0.75f, "0x1.8p-1"}, + {-0.f, "-0x0p+0"}, + {-1.f, "-0x1p+0"}, + {-0.5f, "-0x1p-1"}, + {-0.25f, "-0x1p-2"}, + {-0.75f, "-0x1.8p-1"}, + + // Larger numbers + {512.f, "0x1p+9"}, + {-512.f, "-0x1p+9"}, + {1024.f, "0x1p+10"}, + {-1024.f, "-0x1p+10"}, + {1024.f + 8.f, "0x1.02p+10"}, + {-1024.f - 8.f, "-0x1.02p+10"}, + + // Small numbers + {1.0f / 512.f, "0x1p-9"}, + {1.0f / -512.f, "-0x1p-9"}, + {1.0f / 1024.f, "0x1p-10"}, + {1.0f / -1024.f, "-0x1p-10"}, + {1.0f / 1024.f + 1.0f / 8.f, "0x1.02p-3"}, + {1.0f / -1024.f - 1.0f / 8.f, "-0x1.02p-3"}, + + // lowest non-denorm + {float(ldexp(1.0f, -126)), "0x1p-126"}, + {float(ldexp(-1.0f, -126)), "-0x1p-126"}, + + // Denormalized values + {float(ldexp(1.0f, -127)), "0x1p-127"}, + {float(ldexp(1.0f, -127) / 2.0f), "0x1p-128"}, + {float(ldexp(1.0f, -127) / 4.0f), "0x1p-129"}, + {float(ldexp(1.0f, -127) / 8.0f), "0x1p-130"}, + {float(ldexp(-1.0f, -127)), "-0x1p-127"}, + {float(ldexp(-1.0f, -127) / 2.0f), "-0x1p-128"}, + {float(ldexp(-1.0f, -127) / 4.0f), "-0x1p-129"}, + {float(ldexp(-1.0f, -127) / 8.0f), "-0x1p-130"}, + + {float(ldexp(1.0, -127) + (ldexp(1.0, -127) / 2.0f)), "0x1.8p-127"}, + {float(ldexp(1.0, -127) / 2.0 + (ldexp(1.0, -127) / 4.0f)), + "0x1.8p-128"}, + + })),); + +INSTANTIATE_TEST_CASE_P( + Float32NanTests, HexFloatTest, + ::testing::ValuesIn(std::vector, std::string>>({ + // Various NAN and INF cases + {uint32_t(0xFF800000), "-0x1p+128"}, // -inf + {uint32_t(0x7F800000), "0x1p+128"}, // inf + {uint32_t(0xFFC00000), "-0x1.8p+128"}, // -nan + {uint32_t(0xFF800100), "-0x1.0002p+128"}, // -nan + {uint32_t(0xFF800c00), "-0x1.0018p+128"}, // -nan + {uint32_t(0xFF80F000), "-0x1.01ep+128"}, // -nan + {uint32_t(0xFFFFFFFF), "-0x1.fffffep+128"}, // -nan + {uint32_t(0x7FC00000), "0x1.8p+128"}, // +nan + {uint32_t(0x7F800100), "0x1.0002p+128"}, // +nan + {uint32_t(0x7f800c00), "0x1.0018p+128"}, // +nan + {uint32_t(0x7F80F000), "0x1.01ep+128"}, // +nan + {uint32_t(0x7FFFFFFF), "0x1.fffffep+128"}, // +nan + })),); + +INSTANTIATE_TEST_CASE_P( + Float64Tests, HexDoubleTest, + ::testing::ValuesIn( + std::vector, std::string>>({ + {0., "0x0p+0"}, + {1., "0x1p+0"}, + {2., "0x1p+1"}, + {3., "0x1.8p+1"}, + {0.5, "0x1p-1"}, + {0.25, "0x1p-2"}, + {0.75, "0x1.8p-1"}, + {-0., "-0x0p+0"}, + {-1., "-0x1p+0"}, + {-0.5, "-0x1p-1"}, + {-0.25, "-0x1p-2"}, + {-0.75, "-0x1.8p-1"}, + + // Larger numbers + {512., "0x1p+9"}, + {-512., "-0x1p+9"}, + {1024., "0x1p+10"}, + {-1024., "-0x1p+10"}, + {1024. + 8., "0x1.02p+10"}, + {-1024. - 8., "-0x1.02p+10"}, + + // Large outside the range of normal floats + {ldexp(1.0, 128), "0x1p+128"}, + {ldexp(1.0, 129), "0x1p+129"}, + {ldexp(-1.0, 128), "-0x1p+128"}, + {ldexp(-1.0, 129), "-0x1p+129"}, + {ldexp(1.0, 128) + ldexp(1.0, 90), "0x1.0000000004p+128"}, + {ldexp(1.0, 129) + ldexp(1.0, 120), "0x1.008p+129"}, + {ldexp(-1.0, 128) + ldexp(1.0, 90), "-0x1.fffffffff8p+127"}, + {ldexp(-1.0, 129) + ldexp(1.0, 120), "-0x1.ffp+128"}, + + // Small numbers + {1.0 / 512., "0x1p-9"}, + {1.0 / -512., "-0x1p-9"}, + {1.0 / 1024., "0x1p-10"}, + {1.0 / -1024., "-0x1p-10"}, + {1.0 / 1024. + 1.0 / 8., "0x1.02p-3"}, + {1.0 / -1024. - 1.0 / 8., "-0x1.02p-3"}, + + // Small outside the range of normal floats + {ldexp(1.0, -128), "0x1p-128"}, + {ldexp(1.0, -129), "0x1p-129"}, + {ldexp(-1.0, -128), "-0x1p-128"}, + {ldexp(-1.0, -129), "-0x1p-129"}, + {ldexp(1.0, -128) + ldexp(1.0, -90), "0x1.0000000004p-90"}, + {ldexp(1.0, -129) + ldexp(1.0, -120), "0x1.008p-120"}, + {ldexp(-1.0, -128) + ldexp(1.0, -90), "0x1.fffffffff8p-91"}, + {ldexp(-1.0, -129) + ldexp(1.0, -120), "0x1.ffp-121"}, + + // lowest non-denorm + {ldexp(1.0, -1022), "0x1p-1022"}, + {ldexp(-1.0, -1022), "-0x1p-1022"}, + + // Denormalized values + {ldexp(1.0, -1023), "0x1p-1023"}, + {ldexp(1.0, -1023) / 2.0, "0x1p-1024"}, + {ldexp(1.0, -1023) / 4.0, "0x1p-1025"}, + {ldexp(1.0, -1023) / 8.0, "0x1p-1026"}, + {ldexp(-1.0, -1024), "-0x1p-1024"}, + {ldexp(-1.0, -1024) / 2.0, "-0x1p-1025"}, + {ldexp(-1.0, -1024) / 4.0, "-0x1p-1026"}, + {ldexp(-1.0, -1024) / 8.0, "-0x1p-1027"}, + + {ldexp(1.0, -1023) + (ldexp(1.0, -1023) / 2.0), "0x1.8p-1023"}, + {ldexp(1.0, -1023) / 2.0 + (ldexp(1.0, -1023) / 4.0), + "0x1.8p-1024"}, + + })),); + +INSTANTIATE_TEST_CASE_P( + Float64NanTests, HexDoubleTest, + ::testing::ValuesIn(std::vector< + std::pair, std::string>>({ + // Various NAN and INF cases + {uint64_t(0xFFF0000000000000LL), "-0x1p+1024"}, //-inf + {uint64_t(0x7FF0000000000000LL), "0x1p+1024"}, //+inf + {uint64_t(0xFFF8000000000000LL), "-0x1.8p+1024"}, // -nan + {uint64_t(0xFFF0F00000000000LL), "-0x1.0fp+1024"}, // -nan + {uint64_t(0xFFF0000000000001LL), "-0x1.0000000000001p+1024"}, // -nan + {uint64_t(0xFFF0000300000000LL), "-0x1.00003p+1024"}, // -nan + {uint64_t(0xFFFFFFFFFFFFFFFFLL), "-0x1.fffffffffffffp+1024"}, // -nan + {uint64_t(0x7FF8000000000000LL), "0x1.8p+1024"}, // +nan + {uint64_t(0x7FF0F00000000000LL), "0x1.0fp+1024"}, // +nan + {uint64_t(0x7FF0000000000001LL), "0x1.0000000000001p+1024"}, // -nan + {uint64_t(0x7FF0000300000000LL), "0x1.00003p+1024"}, // -nan + {uint64_t(0x7FFFFFFFFFFFFFFFLL), "0x1.fffffffffffffp+1024"}, // -nan + })),); + +TEST(HexFloatStreamTest, OperatorLeftShiftPreservesFloatAndFill) { + std::stringstream s; + s << std::setw(4) << std::oct << std::setfill('x') << 8 << " " + << FloatProxy(uint32_t(0xFF800100)) << " " << std::setw(4) << 9; + EXPECT_THAT(s.str(), Eq(std::string("xx10 -0x1.0002p+128 xx11"))); +} + +TEST(HexDoubleStreamTest, OperatorLeftShiftPreservesFloatAndFill) { + std::stringstream s; + s << std::setw(4) << std::oct << std::setfill('x') << 8 << " " + << FloatProxy(uint64_t(0x7FF0F00000000000LL)) << " " << std::setw(4) + << 9; + EXPECT_THAT(s.str(), Eq(std::string("xx10 0x1.0fp+1024 xx11"))); +} + +TEST_P(DecodeHexFloatTest, DecodeCorrectly) { + EXPECT_THAT(Decode(GetParam().first), Eq(GetParam().second)); +} + +TEST_P(DecodeHexDoubleTest, DecodeCorrectly) { + EXPECT_THAT(Decode(GetParam().first), Eq(GetParam().second)); +} + +INSTANTIATE_TEST_CASE_P( + Float32DecodeTests, DecodeHexFloatTest, + ::testing::ValuesIn(std::vector>>({ + {"0x0p+000", 0.f}, + {"0x0p0", 0.f}, + {"0x0p-0", 0.f}, + + // flush to zero cases + {"0x1p-500", 0.f}, // Exponent underflows. + {"-0x1p-500", -0.f}, + {"0x0.00000000001p-126", 0.f}, // Fraction causes underflow. + {"-0x0.0000000001p-127", -0.f}, + {"-0x0.01p-142", -0.f}, // Fraction causes additional underflow. + {"0x0.01p-142", 0.f}, + + // Some floats that do not encode the same way as they decode. + {"0x2p+0", 2.f}, + {"0xFFp+0", 255.f}, + {"0x0.8p+0", 0.5f}, + {"0x0.4p+0", 0.25f}, + })),); + +INSTANTIATE_TEST_CASE_P( + Float32DecodeInfTests, DecodeHexFloatTest, + ::testing::ValuesIn(std::vector>>({ + // inf cases + {"-0x1p+128", uint32_t(0xFF800000)}, // -inf + {"0x32p+127", uint32_t(0x7F800000)}, // inf + {"0x32p+500", uint32_t(0x7F800000)}, // inf + {"-0x32p+127", uint32_t(0xFF800000)}, // -inf + })),); + +INSTANTIATE_TEST_CASE_P( + Float64DecodeTests, DecodeHexDoubleTest, + ::testing::ValuesIn( + std::vector>>({ + {"0x0p+000", 0.}, + {"0x0p0", 0.}, + {"0x0p-0", 0.}, + + // flush to zero cases + {"0x1p-5000", 0.}, // Exponent underflows. + {"-0x1p-5000", -0.}, + {"0x0.0000000000000001p-1023", 0.}, // Fraction causes underflow. + {"-0x0.000000000000001p-1024", -0.}, + {"-0x0.01p-1090", -0.f}, // Fraction causes additional underflow. + {"0x0.01p-1090", 0.}, + + // Some floats that do not encode the same way as they decode. + {"0x2p+0", 2.}, + {"0xFFp+0", 255.}, + {"0x0.8p+0", 0.5}, + {"0x0.4p+0", 0.25}, + })),); + +INSTANTIATE_TEST_CASE_P( + Float64DecodeInfTests, DecodeHexDoubleTest, + ::testing::ValuesIn( + std::vector>>({ + // inf cases + {"-0x1p+1024", uint64_t(0xFFF0000000000000)}, // -inf + {"0x32p+1023", uint64_t(0x7FF0000000000000)}, // inf + {"0x32p+5000", uint64_t(0x7FF0000000000000)}, // inf + {"-0x32p+1023", uint64_t(0xFFF0000000000000)}, // -inf + })),); + +TEST(FloatProxy, ValidConversion) { + EXPECT_THAT(FloatProxy(1.f).getAsFloat(), Eq(1.0f)); + EXPECT_THAT(FloatProxy(32.f).getAsFloat(), Eq(32.0f)); + EXPECT_THAT(FloatProxy(-1.f).getAsFloat(), Eq(-1.0f)); + EXPECT_THAT(FloatProxy(0.f).getAsFloat(), Eq(0.0f)); + EXPECT_THAT(FloatProxy(-0.f).getAsFloat(), Eq(-0.0f)); + EXPECT_THAT(FloatProxy(1.2e32f).getAsFloat(), Eq(1.2e32f)); + + EXPECT_TRUE(std::isinf(FloatProxy(uint32_t(0xFF800000)).getAsFloat())); + EXPECT_TRUE(std::isinf(FloatProxy(uint32_t(0x7F800000)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFFC00000)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFF800100)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFF800c00)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFF80F000)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0xFFFFFFFF)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7FC00000)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7F800100)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7f800c00)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7F80F000)).getAsFloat())); + EXPECT_TRUE(std::isnan(FloatProxy(uint32_t(0x7FFFFFFF)).getAsFloat())); + + EXPECT_THAT(FloatProxy(uint32_t(0xFF800000)).data(), Eq(0xFF800000u)); + EXPECT_THAT(FloatProxy(uint32_t(0x7F800000)).data(), Eq(0x7F800000u)); + EXPECT_THAT(FloatProxy(uint32_t(0xFFC00000)).data(), Eq(0xFFC00000u)); + EXPECT_THAT(FloatProxy(uint32_t(0xFF800100)).data(), Eq(0xFF800100u)); + EXPECT_THAT(FloatProxy(uint32_t(0xFF800c00)).data(), Eq(0xFF800c00u)); + EXPECT_THAT(FloatProxy(uint32_t(0xFF80F000)).data(), Eq(0xFF80F000u)); + EXPECT_THAT(FloatProxy(uint32_t(0xFFFFFFFF)).data(), Eq(0xFFFFFFFFu)); + EXPECT_THAT(FloatProxy(uint32_t(0x7FC00000)).data(), Eq(0x7FC00000u)); + EXPECT_THAT(FloatProxy(uint32_t(0x7F800100)).data(), Eq(0x7F800100u)); + EXPECT_THAT(FloatProxy(uint32_t(0x7f800c00)).data(), Eq(0x7f800c00u)); + EXPECT_THAT(FloatProxy(uint32_t(0x7F80F000)).data(), Eq(0x7F80F000u)); + EXPECT_THAT(FloatProxy(uint32_t(0x7FFFFFFF)).data(), Eq(0x7FFFFFFFu)); +} + +TEST(FloatProxy, Nan) { + EXPECT_TRUE(FloatProxy(uint32_t(0xFFC00000)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0xFF800100)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0xFF800c00)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0xFF80F000)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0xFFFFFFFF)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0x7FC00000)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0x7F800100)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0x7f800c00)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0x7F80F000)).isNan()); + EXPECT_TRUE(FloatProxy(uint32_t(0x7FFFFFFF)).isNan()); +} + +TEST(FloatProxy, Negation) { + EXPECT_THAT((-FloatProxy(1.f)).getAsFloat(), Eq(-1.0f)); + EXPECT_THAT((-FloatProxy(0.f)).getAsFloat(), Eq(-0.0f)); + + EXPECT_THAT((-FloatProxy(-1.f)).getAsFloat(), Eq(1.0f)); + EXPECT_THAT((-FloatProxy(-0.f)).getAsFloat(), Eq(0.0f)); + + EXPECT_THAT((-FloatProxy(32.f)).getAsFloat(), Eq(-32.0f)); + EXPECT_THAT((-FloatProxy(-32.f)).getAsFloat(), Eq(32.0f)); + + EXPECT_THAT((-FloatProxy(1.2e32f)).getAsFloat(), Eq(-1.2e32f)); + EXPECT_THAT((-FloatProxy(-1.2e32f)).getAsFloat(), Eq(1.2e32f)); + + EXPECT_THAT( + (-FloatProxy(std::numeric_limits::infinity())).getAsFloat(), + Eq(-std::numeric_limits::infinity())); + EXPECT_THAT((-FloatProxy(-std::numeric_limits::infinity())) + .getAsFloat(), + Eq(std::numeric_limits::infinity())); +} + +// Test conversion of FloatProxy values to strings. +// +// In previous cases, we always wrapped the FloatProxy value in a HexFloat +// before conversion to a string. In the following cases, the FloatProxy +// decides for itself whether to print as a regular number or as a hex float. + +using FloatProxyFloatTest = + ::testing::TestWithParam, std::string>>; +using FloatProxyDoubleTest = + ::testing::TestWithParam, std::string>>; + +// Converts a float value to a string via a FloatProxy. +template +std::string EncodeViaFloatProxy(const T& value) { + std::stringstream ss; + ss << value; + return ss.str(); +} + +// Converts a floating point string so that the exponent prefix +// is 'e', and the exponent value does not have leading zeros. +// The Microsoft runtime library likes to write things like "2.5E+010". +// Convert that to "2.5e+10". +// We don't care what happens to strings that are not floating point +// strings. +std::string NormalizeExponentInFloatString(std::string in) { + std::string result; + // Reserve one spot for the terminating null, even when the sscanf fails. + std::vector prefix(in.size() + 1); + char e; + char plus_or_minus; + int exponent; // in base 10 + if ((4 == std::sscanf(in.c_str(), "%[-+.0123456789]%c%c%d", prefix.data(), &e, + &plus_or_minus, &exponent)) && + (e == 'e' || e == 'E') && + (plus_or_minus == '-' || plus_or_minus == '+')) { + // It looks like a floating point value with exponent. + std::stringstream out; + out << prefix.data() << 'e' << plus_or_minus << exponent; + result = out.str(); + } else { + result = in; + } + return result; +} + +TEST(NormalizeFloat, Sample) { + EXPECT_THAT(NormalizeExponentInFloatString(""), Eq("")); + EXPECT_THAT(NormalizeExponentInFloatString("1e-12"), Eq("1e-12")); + EXPECT_THAT(NormalizeExponentInFloatString("1E+14"), Eq("1e+14")); + EXPECT_THAT(NormalizeExponentInFloatString("1e-0012"), Eq("1e-12")); + EXPECT_THAT(NormalizeExponentInFloatString("1.263E+014"), Eq("1.263e+14")); +} + +// The following two tests can't be DRY because they take different parameter +// types. +TEST_P(FloatProxyFloatTest, EncodeCorrectly) { + EXPECT_THAT( + NormalizeExponentInFloatString(EncodeViaFloatProxy(GetParam().first)), + Eq(GetParam().second)); +} + +TEST_P(FloatProxyDoubleTest, EncodeCorrectly) { + EXPECT_THAT( + NormalizeExponentInFloatString(EncodeViaFloatProxy(GetParam().first)), + Eq(GetParam().second)); +} + +INSTANTIATE_TEST_CASE_P( + Float32Tests, FloatProxyFloatTest, + ::testing::ValuesIn(std::vector, std::string>>({ + // Zero + {0.f, "0"}, + // Normal numbers + {1.f, "1"}, + {-0.25f, "-0.25"}, + {1000.0f, "1000"}, + + // Still normal numbers, but with large magnitude exponents. + {float(ldexp(1.f, 126)), "8.50706e+37"}, + {float(ldexp(-1.f, -126)), "-1.17549e-38"}, + + // denormalized values are printed as hex floats. + {float(ldexp(1.0f, -127)), "0x1p-127"}, + {float(ldexp(1.5f, -128)), "0x1.8p-128"}, + {float(ldexp(1.25, -129)), "0x1.4p-129"}, + {float(ldexp(1.125, -130)), "0x1.2p-130"}, + {float(ldexp(-1.0f, -127)), "-0x1p-127"}, + {float(ldexp(-1.0f, -128)), "-0x1p-128"}, + {float(ldexp(-1.0f, -129)), "-0x1p-129"}, + {float(ldexp(-1.5f, -130)), "-0x1.8p-130"}, + + // NaNs + {FloatProxy(uint32_t(0xFFC00000)), "-0x1.8p+128"}, + {FloatProxy(uint32_t(0xFF800100)), "-0x1.0002p+128"}, + + {std::numeric_limits::infinity(), "0x1p+128"}, + {-std::numeric_limits::infinity(), "-0x1p+128"}, + })),); + +INSTANTIATE_TEST_CASE_P( + Float64Tests, FloatProxyDoubleTest, + ::testing::ValuesIn( + std::vector, std::string>>({ + {0., "0"}, + {1., "1"}, + {-0.25, "-0.25"}, + {1000.0, "1000"}, + + // Large outside the range of normal floats + {ldexp(1.0, 128), "3.40282366920938e+38"}, + {ldexp(1.5, 129), "1.02084710076282e+39"}, + {ldexp(-1.0, 128), "-3.40282366920938e+38"}, + {ldexp(-1.5, 129), "-1.02084710076282e+39"}, + + // Small outside the range of normal floats + {ldexp(1.5, -129), "2.20405190779179e-39"}, + {ldexp(-1.5, -129), "-2.20405190779179e-39"}, + + // lowest non-denorm + {ldexp(1.0, -1022), "2.2250738585072e-308"}, + {ldexp(-1.0, -1022), "-2.2250738585072e-308"}, + + // Denormalized values + {ldexp(1.125, -1023), "0x1.2p-1023"}, + {ldexp(-1.375, -1024), "-0x1.6p-1024"}, + + // NaNs + {uint64_t(0x7FF8000000000000LL), "0x1.8p+1024"}, + {uint64_t(0xFFF0F00000000000LL), "-0x1.0fp+1024"}, + + // Infinity + {std::numeric_limits::infinity(), "0x1p+1024"}, + {-std::numeric_limits::infinity(), "-0x1p+1024"}, + + })),); + +// double is used so that unbiased_exponent can be used with the output +// of ldexp directly. +int32_t unbiased_exponent(double f) { + return spvutils::HexFloat>( + static_cast(f)).getUnbiasedNormalizedExponent(); +} + +int16_t unbiased_half_exponent(uint16_t f) { + return spvutils::HexFloat>(f) + .getUnbiasedNormalizedExponent(); +} + +TEST(HexFloatOperationTest, UnbiasedExponent) { + // Float cases + EXPECT_EQ(0, unbiased_exponent(ldexp(1.0f, 0))); + EXPECT_EQ(-32, unbiased_exponent(ldexp(1.0f, -32))); + EXPECT_EQ(42, unbiased_exponent(ldexp(1.0f, 42))); + EXPECT_EQ(125, unbiased_exponent(ldexp(1.0f, 125))); + // Saturates to 128 + EXPECT_EQ(128, unbiased_exponent(ldexp(1.0f, 256))); + + EXPECT_EQ(-100, unbiased_exponent(ldexp(1.0f, -100))); + EXPECT_EQ(-127, unbiased_exponent(ldexp(1.0f, -127))); // First denorm + EXPECT_EQ(-128, unbiased_exponent(ldexp(1.0f, -128))); + EXPECT_EQ(-129, unbiased_exponent(ldexp(1.0f, -129))); + EXPECT_EQ(-140, unbiased_exponent(ldexp(1.0f, -140))); + // Smallest representable number + EXPECT_EQ(-126 - 23, unbiased_exponent(ldexp(1.0f, -126 - 23))); + // Should get rounded to 0 first. + EXPECT_EQ(0, unbiased_exponent(ldexp(1.0f, -127 - 23))); + + // Float16 cases + // The exponent is represented in the bits 0x7C00 + // The offset is -15 + EXPECT_EQ(0, unbiased_half_exponent(0x3C00)); + EXPECT_EQ(3, unbiased_half_exponent(0x4800)); + EXPECT_EQ(-1, unbiased_half_exponent(0x3800)); + EXPECT_EQ(-14, unbiased_half_exponent(0x0400)); + EXPECT_EQ(16, unbiased_half_exponent(0x7C00)); + EXPECT_EQ(10, unbiased_half_exponent(0x6400)); + + // Smallest representable number + EXPECT_EQ(-24, unbiased_half_exponent(0x0001)); +} + +// Creates a float that is the sum of 1/(2 ^ fractions[i]) for i in factions +float float_fractions(const std::vector& fractions) { + float f = 0; + for(int32_t i: fractions) { + f += std::ldexp(1.0f, -i); + } + return f; +} + +// Returns the normalized significand of a HexFloat> +// that was created by calling float_fractions with the input fractions, +// raised to the power of exp. +uint32_t normalized_significand(const std::vector& fractions, uint32_t exp) { + return spvutils::HexFloat>( + static_cast(ldexp(float_fractions(fractions), exp))) + .getNormalizedSignificand(); +} + +// Sets the bits from MSB to LSB of the significand part of a float. +// For example 0 would set the bit 23 (counting from LSB to MSB), +// and 1 would set the 22nd bit. +uint32_t bits_set(const std::vector& bits) { + const uint32_t top_bit = 1u << 22u; + uint32_t val= 0; + for(uint32_t i: bits) { + val |= top_bit >> i; + } + return val; +} + +// The same as bits_set but for a Float16 value instead of 32-bit floating +// point. +uint16_t half_bits_set(const std::vector& bits) { + const uint32_t top_bit = 1u << 9u; + uint32_t val= 0; + for(uint32_t i: bits) { + val |= top_bit >> i; + } + return static_cast(val); +} + +TEST(HexFloatOperationTest, NormalizedSignificand) { + // For normalized numbers (the following) it should be a simple matter + // of getting rid of the top implicit bit + EXPECT_EQ(bits_set({}), normalized_significand({0}, 0)); + EXPECT_EQ(bits_set({0}), normalized_significand({0, 1}, 0)); + EXPECT_EQ(bits_set({0, 1}), normalized_significand({0, 1, 2}, 0)); + EXPECT_EQ(bits_set({1}), normalized_significand({0, 2}, 0)); + EXPECT_EQ(bits_set({1}), normalized_significand({0, 2}, 32)); + EXPECT_EQ(bits_set({1}), normalized_significand({0, 2}, 126)); + + // For denormalized numbers we expect the normalized significand to + // shift as if it were normalized. This means, in practice that the + // top_most set bit will be cut off. Looks very similar to above (on purpose) + EXPECT_EQ(bits_set({}), normalized_significand({0}, -127)); + EXPECT_EQ(bits_set({3}), normalized_significand({0, 4}, -128)); + EXPECT_EQ(bits_set({3}), normalized_significand({0, 4}, -127)); + EXPECT_EQ(bits_set({}), normalized_significand({22}, -127)); + EXPECT_EQ(bits_set({0}), normalized_significand({21, 22}, -127)); +} + +// Returns the 32-bit floating point value created by +// calling setFromSignUnbiasedExponentAndNormalizedSignificand +// on a HexFloat> +float set_from_sign(bool negative, int32_t unbiased_exponent, + uint32_t significand, bool round_denorm_up) { + spvutils::HexFloat> f(0.f); + f.setFromSignUnbiasedExponentAndNormalizedSignificand( + negative, unbiased_exponent, significand, round_denorm_up); + return f.value().getAsFloat(); +} + +TEST(HexFloatOperationTests, + SetFromSignUnbiasedExponentAndNormalizedSignificand) { + + EXPECT_EQ(1.f, set_from_sign(false, 0, 0, false)); + + // Tests insertion of various denormalized numbers with and without round up. + EXPECT_EQ(static_cast(ldexp(1.f, -149)), set_from_sign(false, -149, 0, false)); + EXPECT_EQ(static_cast(ldexp(1.f, -149)), set_from_sign(false, -149, 0, true)); + EXPECT_EQ(0.f, set_from_sign(false, -150, 1, false)); + EXPECT_EQ(static_cast(ldexp(1.f, -149)), set_from_sign(false, -150, 1, true)); + + EXPECT_EQ(ldexp(1.0f, -127), set_from_sign(false, -127, 0, false)); + EXPECT_EQ(ldexp(1.0f, -128), set_from_sign(false, -128, 0, false)); + EXPECT_EQ(float_fractions({0, 1, 2, 5}), + set_from_sign(false, 0, bits_set({0, 1, 4}), false)); + EXPECT_EQ(ldexp(float_fractions({0, 1, 2, 5}), -32), + set_from_sign(false, -32, bits_set({0, 1, 4}), false)); + EXPECT_EQ(ldexp(float_fractions({0, 1, 2, 5}), -128), + set_from_sign(false, -128, bits_set({0, 1, 4}), false)); + + // The negative cases from above. + EXPECT_EQ(-1.f, set_from_sign(true, 0, 0, false)); + EXPECT_EQ(-ldexp(1.0, -127), set_from_sign(true, -127, 0, false)); + EXPECT_EQ(-ldexp(1.0, -128), set_from_sign(true, -128, 0, false)); + EXPECT_EQ(-float_fractions({0, 1, 2, 5}), + set_from_sign(true, 0, bits_set({0, 1, 4}), false)); + EXPECT_EQ(-ldexp(float_fractions({0, 1, 2, 5}), -32), + set_from_sign(true, -32, bits_set({0, 1, 4}), false)); + EXPECT_EQ(-ldexp(float_fractions({0, 1, 2, 5}), -128), + set_from_sign(true, -128, bits_set({0, 1, 4}), false)); +} + +TEST(HexFloatOperationTests, NonRounding) { + // Rounding from 32-bit hex-float to 32-bit hex-float should be trivial, + // except in the denorm case which is a bit more complex. + using HF = spvutils::HexFloat>; + bool carry_bit = false; + + spvutils::round_direction rounding[] = { + spvutils::kRoundToZero, + spvutils::kRoundToNearestEven, + spvutils::kRoundToPositiveInfinity, + spvutils::kRoundToNegativeInfinity}; + + // Everything fits, so this should be straight-forward + for (spvutils::round_direction round : rounding) { + EXPECT_EQ(bits_set({}), HF(0.f).getRoundedNormalizedSignificand( + round, &carry_bit)); + EXPECT_FALSE(carry_bit); + + EXPECT_EQ(bits_set({0}), + HF(float_fractions({0, 1})) + .getRoundedNormalizedSignificand(round, &carry_bit)); + EXPECT_FALSE(carry_bit); + + EXPECT_EQ(bits_set({1, 3}), + HF(float_fractions({0, 2, 4})) + .getRoundedNormalizedSignificand(round, &carry_bit)); + EXPECT_FALSE(carry_bit); + + EXPECT_EQ( + bits_set({0, 1, 4}), + HF(static_cast(-ldexp(float_fractions({0, 1, 2, 5}), -128))) + .getRoundedNormalizedSignificand(round, &carry_bit)); + EXPECT_FALSE(carry_bit); + + EXPECT_EQ( + bits_set({0, 1, 4, 22}), + HF(static_cast(float_fractions({0, 1, 2, 5, 23}))) + .getRoundedNormalizedSignificand(round, &carry_bit)); + EXPECT_FALSE(carry_bit); + } +} + +struct RoundSignificandCase { + float source_float; + std::pair expected_results; + spvutils::round_direction round; +}; + +using HexFloatRoundTest = + ::testing::TestWithParam; + +TEST_P(HexFloatRoundTest, RoundDownToFP16) { + using HF = spvutils::HexFloat>; + using HF16 = spvutils::HexFloat>; + + HF input_value(GetParam().source_float); + bool carry_bit = false; + EXPECT_EQ(GetParam().expected_results.first, + input_value.getRoundedNormalizedSignificand( + GetParam().round, &carry_bit)); + EXPECT_EQ(carry_bit, GetParam().expected_results.second); +} + +// clang-format off +INSTANTIATE_TEST_CASE_P(F32ToF16, HexFloatRoundTest, + ::testing::ValuesIn(std::vector( + { + {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToZero}, + {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToNearestEven}, + {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, + + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNearestEven}, + + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToZero}, + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), spvutils::kRoundToNearestEven}, + + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, + + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToPositiveInfinity}, + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNegativeInfinity}, + {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, + + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, + + // Carries + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), spvutils::kRoundToZero}, + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), spvutils::kRoundToPositiveInfinity}, + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), spvutils::kRoundToNegativeInfinity}, + {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), spvutils::kRoundToNearestEven}, + + // Cases where original number was denorm. Note: this should have no effect + // the number is pre-normalized. + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -128)), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero}, + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -129)), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity}, + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -131)), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity}, + {static_cast(ldexp(float_fractions({0, 1, 11, 13}), -130)), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven}, + })),); +// clang-format on + +struct UpCastSignificandCase { + uint16_t source_half; + uint32_t expected_result; +}; + +using HexFloatRoundUpSignificandTest = + ::testing::TestWithParam; +TEST_P(HexFloatRoundUpSignificandTest, Widening) { + using HF = spvutils::HexFloat>; + using HF16 = spvutils::HexFloat>; + bool carry_bit = false; + + spvutils::round_direction rounding[] = { + spvutils::kRoundToZero, + spvutils::kRoundToNearestEven, + spvutils::kRoundToPositiveInfinity, + spvutils::kRoundToNegativeInfinity}; + + // Everything fits, so everything should just be bit-shifts. + for (spvutils::round_direction round : rounding) { + carry_bit = false; + HF16 input_value(GetParam().source_half); + EXPECT_EQ( + GetParam().expected_result, + input_value.getRoundedNormalizedSignificand(round, &carry_bit)) + << std::hex << "0x" + << input_value.getRoundedNormalizedSignificand(round, &carry_bit) + << " 0x" << GetParam().expected_result; + EXPECT_FALSE(carry_bit); + } +} + +INSTANTIATE_TEST_CASE_P(F16toF32, HexFloatRoundUpSignificandTest, + // 0xFC00 of the source 16-bit hex value cover the sign and the exponent. + // They are ignored for this test. + ::testing::ValuesIn(std::vector( + { + {0x3F00, 0x600000}, + {0x0F00, 0x600000}, + {0x0F01, 0x602000}, + {0x0FFF, 0x7FE000}, + })),); + +struct DownCastTest { + float source_float; + uint16_t expected_half; + std::vector directions; +}; + +std::string get_round_text(spvutils::round_direction direction) { +#define CASE(round_direction) \ + case round_direction: \ + return #round_direction + + switch (direction) { + CASE(spvutils::kRoundToZero); + CASE(spvutils::kRoundToPositiveInfinity); + CASE(spvutils::kRoundToNegativeInfinity); + CASE(spvutils::kRoundToNearestEven); + } +#undef CASE + return ""; +} + +using HexFloatFP32To16Tests = ::testing::TestWithParam; + +TEST_P(HexFloatFP32To16Tests, NarrowingCasts) { + using HF = spvutils::HexFloat>; + using HF16 = spvutils::HexFloat>; + HF f(GetParam().source_float); + for (auto round : GetParam().directions) { + HF16 half(0); + f.castTo(half, round); + EXPECT_EQ(GetParam().expected_half, half.value().getAsFloat().get_value()) + << get_round_text(round) << " " << std::hex + << spvutils::BitwiseCast(GetParam().source_float) + << " cast to: " << half.value().getAsFloat().get_value(); + } +} + +const uint16_t positive_infinity = 0x7C00; +const uint16_t negative_infinity = 0xFC00; + +INSTANTIATE_TEST_CASE_P(F32ToF16, HexFloatFP32To16Tests, + ::testing::ValuesIn(std::vector( + { + // Exactly representable as half. + {0.f, 0x0, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {-0.f, 0x8000, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {1.0f, 0x3C00, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {-1.0f, 0xBC00, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + + {float_fractions({0, 1, 10}) , 0x3E01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {-float_fractions({0, 1, 10}) , 0xBE01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(ldexp(float_fractions({0, 1, 10}), 3)), 0x4A01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(-ldexp(float_fractions({0, 1, 10}), 3)), 0xCA01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + + + // Underflow + {static_cast(ldexp(1.0f, -25)), 0x0, {spvutils::kRoundToZero, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(ldexp(1.0f, -25)), 0x1, {spvutils::kRoundToPositiveInfinity}}, + {static_cast(-ldexp(1.0f, -25)), 0x8000, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(-ldexp(1.0f, -25)), 0x8001, {spvutils::kRoundToNegativeInfinity}}, + {static_cast(ldexp(1.0f, -24)), 0x1, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + + // Overflow + {static_cast(ldexp(1.0f, 16)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(ldexp(1.0f, 18)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(ldexp(1.3f, 16)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(-ldexp(1.0f, 16)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(-ldexp(1.0f, 18)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {static_cast(-ldexp(1.3f, 16)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + + // Transfer of Infinities + {std::numeric_limits::infinity(), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + {-std::numeric_limits::infinity(), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}}, + + // Nans are below because we cannot test for equality. + })),); + +struct UpCastCase{ + uint16_t source_half; + float expected_float; +}; + +using HexFloatFP16To32Tests = ::testing::TestWithParam; +TEST_P(HexFloatFP16To32Tests, WideningCasts) { + using HF = spvutils::HexFloat>; + using HF16 = spvutils::HexFloat>; + HF16 f(GetParam().source_half); + + spvutils::round_direction rounding[] = { + spvutils::kRoundToZero, + spvutils::kRoundToNearestEven, + spvutils::kRoundToPositiveInfinity, + spvutils::kRoundToNegativeInfinity}; + + // Everything fits, so everything should just be bit-shifts. + for (spvutils::round_direction round : rounding) { + HF flt(0.f); + f.castTo(flt, round); + EXPECT_EQ(GetParam().expected_float, flt.value().getAsFloat()) + << get_round_text(round) << " " << std::hex + << spvutils::BitwiseCast(GetParam().source_half) + << " cast to: " << flt.value().getAsFloat(); + } +} + +INSTANTIATE_TEST_CASE_P(F16ToF32, HexFloatFP16To32Tests, + ::testing::ValuesIn(std::vector( + { + {0x0000, 0.f}, + {0x8000, -0.f}, + {0x3C00, 1.0f}, + {0xBC00, -1.0f}, + {0x3F00, float_fractions({0, 1, 2})}, + {0xBF00, -float_fractions({0, 1, 2})}, + {0x3F01, float_fractions({0, 1, 2, 10})}, + {0xBF01, -float_fractions({0, 1, 2, 10})}, + + // denorm + {0x0001, static_cast(ldexp(1.0, -24))}, + {0x0002, static_cast(ldexp(1.0, -23))}, + {0x8001, static_cast(-ldexp(1.0, -24))}, + {0x8011, static_cast(-ldexp(1.0, -20) + -ldexp(1.0, -24))}, + + // inf + {0x7C00, std::numeric_limits::infinity()}, + {0xFC00, -std::numeric_limits::infinity()}, + })),); + +TEST(HexFloatOperationTests, NanTests) { + using HF = spvutils::HexFloat>; + using HF16 = spvutils::HexFloat>; + spvutils::round_direction rounding[] = { + spvutils::kRoundToZero, + spvutils::kRoundToNearestEven, + spvutils::kRoundToPositiveInfinity, + spvutils::kRoundToNegativeInfinity}; + + // Everything fits, so everything should just be bit-shifts. + for (spvutils::round_direction round : rounding) { + HF16 f16(0); + HF f(0.f); + HF(std::numeric_limits::quiet_NaN()).castTo(f16, round); + EXPECT_TRUE(f16.value().isNan()); + HF(std::numeric_limits::signaling_NaN()).castTo(f16, round); + EXPECT_TRUE(f16.value().isNan()); + + HF16(0x7C01).castTo(f, round); + EXPECT_TRUE(f.value().isNan()); + HF16(0x7C11).castTo(f, round); + EXPECT_TRUE(f.value().isNan()); + HF16(0xFC01).castTo(f, round); + EXPECT_TRUE(f.value().isNan()); + HF16(0x7C10).castTo(f, round); + EXPECT_TRUE(f.value().isNan()); + HF16(0xFF00).castTo(f, round); + EXPECT_TRUE(f.value().isNan()); + } +} + +// A test case for parsing good and bad HexFloat> literals. +template +struct FloatParseCase { + std::string literal; + bool negate_value; + bool expect_success; + HexFloat> expected_value; +}; + +using ParseNormalFloatTest = ::testing::TestWithParam>; + +TEST_P(ParseNormalFloatTest, Samples) { + std::stringstream input(GetParam().literal); + HexFloat> parsed_value(0.0f); + ParseNormalFloat(input, GetParam().negate_value, parsed_value); + EXPECT_NE(GetParam().expect_success, input.fail()) + << " literal: " << GetParam().literal + << " negate: " << GetParam().negate_value; + if (GetParam().expect_success) { + EXPECT_THAT(parsed_value.value(), Eq(GetParam().expected_value.value())) + << " literal: " << GetParam().literal + << " negate: " << GetParam().negate_value; + } +} + +// Returns a FloatParseCase with expected failure. +template +FloatParseCase BadFloatParseCase(std::string literal, bool negate_value, + T expected_value) { + HexFloat> proxy_expected_value(expected_value); + return FloatParseCase{literal, negate_value, false, proxy_expected_value}; +} + +// Returns a FloatParseCase that should successfully parse to a given value. +template +FloatParseCase GoodFloatParseCase(std::string literal, bool negate_value, + T expected_value) { + HexFloat> proxy_expected_value(expected_value); + return FloatParseCase{literal, negate_value, true, proxy_expected_value}; +} + +INSTANTIATE_TEST_CASE_P( + FloatParse, ParseNormalFloatTest, + ::testing::ValuesIn(std::vector>{ + // Failing cases due to trivially incorrect syntax. + BadFloatParseCase("abc", false, 0.0f), + BadFloatParseCase("abc", true, 0.0f), + + // Valid cases. + GoodFloatParseCase("0", false, 0.0f), + GoodFloatParseCase("0.0", false, 0.0f), + GoodFloatParseCase("-0.0", false, -0.0f), + GoodFloatParseCase("2.0", false, 2.0f), + GoodFloatParseCase("-2.0", false, -2.0f), + GoodFloatParseCase("+2.0", false, 2.0f), + // Cases with negate_value being true. + GoodFloatParseCase("0.0", true, -0.0f), + GoodFloatParseCase("2.0", true, -2.0f), + + // When negate_value is true, we should not accept a + // leading minus or plus. + BadFloatParseCase("-0.0", true, 0.0f), + BadFloatParseCase("-2.0", true, 0.0f), + BadFloatParseCase("+0.0", true, 0.0f), + BadFloatParseCase("+2.0", true, 0.0f), + + // Overflow is an error for 32-bit float parsing. + BadFloatParseCase("1e40", false, FLT_MAX), + BadFloatParseCase("1e40", true, -FLT_MAX), + BadFloatParseCase("-1e40", false, -FLT_MAX), + // We can't have -1e40 and negate_value == true since + // that represents an original case of "--1e40" which + // is invalid. + }),); + +using ParseNormalFloat16Test = + ::testing::TestWithParam>; + +TEST_P(ParseNormalFloat16Test, Samples) { + std::stringstream input(GetParam().literal); + HexFloat> parsed_value(0); + ParseNormalFloat(input, GetParam().negate_value, parsed_value); + EXPECT_NE(GetParam().expect_success, input.fail()) + << " literal: " << GetParam().literal + << " negate: " << GetParam().negate_value; + if (GetParam().expect_success) { + EXPECT_THAT(parsed_value.value(), Eq(GetParam().expected_value.value())) + << " literal: " << GetParam().literal + << " negate: " << GetParam().negate_value; + } +} + +INSTANTIATE_TEST_CASE_P( + Float16Parse, ParseNormalFloat16Test, + ::testing::ValuesIn(std::vector>{ + // Failing cases due to trivially incorrect syntax. + BadFloatParseCase("abc", false, uint16_t{0}), + BadFloatParseCase("abc", true, uint16_t{0}), + + // Valid cases. + GoodFloatParseCase("0", false, uint16_t{0}), + GoodFloatParseCase("0.0", false, uint16_t{0}), + GoodFloatParseCase("-0.0", false, uint16_t{0x8000}), + GoodFloatParseCase("2.0", false, uint16_t{0x4000}), + GoodFloatParseCase("-2.0", false, uint16_t{0xc000}), + GoodFloatParseCase("+2.0", false, uint16_t{0x4000}), + // Cases with negate_value being true. + GoodFloatParseCase("0.0", true, uint16_t{0x8000}), + GoodFloatParseCase("2.0", true, uint16_t{0xc000}), + + // When negate_value is true, we should not accept a leading minus or + // plus. + BadFloatParseCase("-0.0", true, uint16_t{0}), + BadFloatParseCase("-2.0", true, uint16_t{0}), + BadFloatParseCase("+0.0", true, uint16_t{0}), + BadFloatParseCase("+2.0", true, uint16_t{0}), + }),); + +// A test case for detecting infinities. +template +struct OverflowParseCase { + std::string input; + bool expect_success; + T expected_value; +}; + +using FloatProxyParseOverflowFloatTest = + ::testing::TestWithParam>; + +TEST_P(FloatProxyParseOverflowFloatTest, Sample) { + std::istringstream input(GetParam().input); + HexFloat> value(0.0f); + input >> value; + EXPECT_NE(GetParam().expect_success, input.fail()); + if (GetParam().expect_success) { + EXPECT_THAT(value.value().getAsFloat(), GetParam().expected_value); + } +} + +INSTANTIATE_TEST_CASE_P( + FloatOverflow, FloatProxyParseOverflowFloatTest, + ::testing::ValuesIn(std::vector>({ + {"0", true, 0.0f}, + {"0.0", true, 0.0f}, + {"1.0", true, 1.0f}, + {"1e38", true, 1e38f}, + {"-1e38", true, -1e38f}, + {"1e40", false, FLT_MAX}, + {"-1e40", false, -FLT_MAX}, + {"1e400", false, FLT_MAX}, + {"-1e400", false, -FLT_MAX}, + })),); + +using FloatProxyParseOverflowDoubleTest = + ::testing::TestWithParam>; + +TEST_P(FloatProxyParseOverflowDoubleTest, Sample) { + std::istringstream input(GetParam().input); + HexFloat> value(0.0); + input >> value; + EXPECT_NE(GetParam().expect_success, input.fail()); + if (GetParam().expect_success) { + EXPECT_THAT(value.value().getAsFloat(), Eq(GetParam().expected_value)); + } +} + +INSTANTIATE_TEST_CASE_P( + DoubleOverflow, FloatProxyParseOverflowDoubleTest, + ::testing::ValuesIn(std::vector>({ + {"0", true, 0.0}, + {"0.0", true, 0.0}, + {"1.0", true, 1.0}, + {"1e38", true, 1e38}, + {"-1e38", true, -1e38}, + {"1e40", true, 1e40}, + {"-1e40", true, -1e40}, + {"1e400", false, DBL_MAX}, + {"-1e400", false, -DBL_MAX}, + })),); + +using FloatProxyParseOverflowFloat16Test = + ::testing::TestWithParam>; + +TEST_P(FloatProxyParseOverflowFloat16Test, Sample) { + std::istringstream input(GetParam().input); + HexFloat> value(0); + input >> value; + EXPECT_NE(GetParam().expect_success, input.fail()) << " literal: " + << GetParam().input; + if (GetParam().expect_success) { + EXPECT_THAT(value.value().data(), Eq(GetParam().expected_value)) + << " literal: " << GetParam().input; + } +} + +INSTANTIATE_TEST_CASE_P( + Float16Overflow, FloatProxyParseOverflowFloat16Test, + ::testing::ValuesIn(std::vector>({ + {"0", true, uint16_t{0}}, + {"0.0", true, uint16_t{0}}, + {"1.0", true, uint16_t{0x3c00}}, + // Overflow for 16-bit float is an error, and returns max or + // lowest value. + {"1e38", false, uint16_t{0x7bff}}, + {"1e40", false, uint16_t{0x7bff}}, + {"1e400", false, uint16_t{0x7bff}}, + {"-1e38", false, uint16_t{0xfbff}}, + {"-1e40", false, uint16_t{0xfbff}}, + {"-1e400", false, uint16_t{0xfbff}}, + })),); + +TEST(FloatProxy, Max) { + EXPECT_THAT(FloatProxy::max().getAsFloat().get_value(), + Eq(uint16_t{0x7bff})); + EXPECT_THAT(FloatProxy::max().getAsFloat(), + Eq(std::numeric_limits::max())); + EXPECT_THAT(FloatProxy::max().getAsFloat(), + Eq(std::numeric_limits::max())); +} + +TEST(FloatProxy, Lowest) { + EXPECT_THAT(FloatProxy::lowest().getAsFloat().get_value(), + Eq(uint16_t{0xfbff})); + EXPECT_THAT(FloatProxy::lowest().getAsFloat(), + Eq(std::numeric_limits::lowest())); + EXPECT_THAT(FloatProxy::lowest().getAsFloat(), + Eq(std::numeric_limits::lowest())); +} + +// TODO(awoloszyn): Add fp16 tests and HexFloatTraits. +} // anonymous namespace diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index a0044190..0291b040 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -58,41 +58,138 @@ std::string FileNameAsCustomTestSuffix( } using HlslCompileTest = GlslangTest<::testing::TestWithParam>; +using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam>; // Compiling HLSL to SPIR-V under Vulkan semantics. Expected to successfully // generate both AST and SPIR-V. TEST_P(HlslCompileTest, FromFile) { - loadFileCompileAndCheck(GLSLANG_TEST_DIRECTORY, GetParam().fileName, + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, Source::HLSL, Semantics::Vulkan, Target::BothASTAndSpv, GetParam().entryPoint); } +TEST_P(HlslCompileAndFlattenTest, FromFile) +{ + loadFileCompileFlattenUniformsAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, + Source::HLSL, Semantics::Vulkan, + Target::BothASTAndSpv, GetParam().entryPoint); +} + // clang-format off INSTANTIATE_TEST_CASE_P( ToSpirv, HlslCompileTest, ::testing::ValuesIn(std::vector{ + {"hlsl.amend.frag", "f1"}, {"hlsl.array.frag", "PixelShaderFunction"}, + {"hlsl.array.implicit-size.frag", "PixelShaderFunction"}, + {"hlsl.array.multidim.frag", "main"}, {"hlsl.assoc.frag", "PixelShaderFunction"}, {"hlsl.attribute.frag", "PixelShaderFunction"}, + {"hlsl.basic.comp", "main"}, + {"hlsl.buffer.frag", "PixelShaderFunction"}, + {"hlsl.calculatelod.dx10.frag", "main"}, + {"hlsl.calculatelodunclamped.dx10.frag", "main"}, {"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.flatten.return.frag", "main"}, {"hlsl.forLoop.frag", "PixelShaderFunction"}, + {"hlsl.gather.array.dx10.frag", "main"}, + {"hlsl.gather.basic.dx10.frag", "main"}, + {"hlsl.gather.basic.dx10.vert", "main"}, + {"hlsl.gather.offset.dx10.frag", "main"}, + {"hlsl.gather.offsetarray.dx10.frag", "main"}, + {"hlsl.gatherRGBA.array.dx10.frag", "main"}, + {"hlsl.gatherRGBA.basic.dx10.frag", "main"}, + {"hlsl.gatherRGBA.offset.dx10.frag", "main"}, + {"hlsl.gatherRGBA.offsetarray.dx10.frag", "main"}, + {"hlsl.getdimensions.dx10.frag", "main"}, + {"hlsl.getdimensions.rw.dx10.frag", "main"}, + {"hlsl.getdimensions.dx10.vert", "main"}, + {"hlsl.getsampleposition.dx10.frag", "main"}, {"hlsl.if.frag", "PixelShaderFunction"}, + {"hlsl.inoutquals.frag", "main"}, {"hlsl.init.frag", "ShaderFunction"}, + {"hlsl.init2.frag", "main"}, {"hlsl.intrinsics.barriers.comp", "ComputeShaderFunction"}, {"hlsl.intrinsics.comp", "ComputeShaderFunction"}, {"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"}, + {"hlsl.load.basic.dx10.vert", "main"}, + {"hlsl.load.buffer.dx10.frag", "main"}, + {"hlsl.load.buffer.float.dx10.frag", "main"}, + {"hlsl.load.rwbuffer.dx10.frag", "main"}, + {"hlsl.load.rwtexture.dx10.frag", "main"}, + {"hlsl.load.rwtexture.array.dx10.frag", "main"}, + {"hlsl.load.offset.dx10.frag", "main"}, + {"hlsl.load.offsetarray.dx10.frag", "main"}, + {"hlsl.logical.unary.frag", "main"}, + {"hlsl.logical.binary.frag", "main"}, + {"hlsl.multiEntry.vert", "RealEntrypoint"}, + {"hlsl.multiReturn.frag", "main"}, + {"hlsl.matrixindex.frag", "main"}, + {"hlsl.numericsuffixes.frag", "main"}, + {"hlsl.overload.frag", "PixelShaderFunction"}, + {"hlsl.pp.line.frag", "main"}, + {"hlsl.precise.frag", "main"}, + {"hlsl.promote.binary.frag", "main"}, + {"hlsl.promotions.frag", "main"}, + {"hlsl.rw.atomics.frag", "main"}, + {"hlsl.rw.bracket.frag", "main"}, + {"hlsl.rw.scalar.bracket.frag", "main"}, + {"hlsl.rw.vec2.bracket.frag", "main"}, + {"hlsl.sample.array.dx10.frag", "main"}, + {"hlsl.sample.basic.dx10.frag", "main"}, + {"hlsl.sample.offset.dx10.frag", "main"}, + {"hlsl.sample.offsetarray.dx10.frag", "main"}, + {"hlsl.samplebias.array.dx10.frag", "main"}, + {"hlsl.samplebias.basic.dx10.frag", "main"}, + {"hlsl.samplebias.offset.dx10.frag", "main"}, + {"hlsl.samplebias.offsetarray.dx10.frag", "main"}, + {"hlsl.samplecmp.array.dx10.frag", "main"}, + {"hlsl.samplecmp.basic.dx10.frag", "main"}, + {"hlsl.samplecmp.offset.dx10.frag", "main"}, + {"hlsl.samplecmp.offsetarray.dx10.frag", "main"}, + {"hlsl.samplecmplevelzero.array.dx10.frag", "main"}, + {"hlsl.samplecmplevelzero.basic.dx10.frag", "main"}, + {"hlsl.samplecmplevelzero.offset.dx10.frag", "main"}, + {"hlsl.samplecmplevelzero.offsetarray.dx10.frag", "main"}, + {"hlsl.samplegrad.array.dx10.frag", "main"}, + {"hlsl.samplegrad.basic.dx10.frag", "main"}, + {"hlsl.samplegrad.basic.dx10.vert", "main"}, + {"hlsl.samplegrad.offset.dx10.frag", "main"}, + {"hlsl.samplegrad.offsetarray.dx10.frag", "main"}, + {"hlsl.samplelevel.array.dx10.frag", "main"}, + {"hlsl.samplelevel.basic.dx10.frag", "main"}, + {"hlsl.samplelevel.basic.dx10.vert", "main"}, + {"hlsl.samplelevel.offset.dx10.frag", "main"}, + {"hlsl.samplelevel.offsetarray.dx10.frag", "main"}, + {"hlsl.sample.sub-vec4.dx10.frag", "main"}, + {"hlsl.semicolons.frag", "main"}, + {"hlsl.shapeConv.frag", "main"}, + {"hlsl.shapeConvRet.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"}, @@ -104,6 +201,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.switch.frag", "PixelShaderFunction"}, {"hlsl.swizzle.frag", "PixelShaderFunction"}, {"hlsl.templatetypes.frag", "PixelShaderFunction"}, + {"hlsl.tx.bracket.frag", "main"}, {"hlsl.typedef.frag", "PixelShaderFunction"}, {"hlsl.whileLoop.frag", "PixelShaderFunction"}, {"hlsl.void.frag", "PixelShaderFunction"}, @@ -112,5 +210,15 @@ INSTANTIATE_TEST_CASE_P( ); // clang-format on +// clang-format off +INSTANTIATE_TEST_CASE_P( + ToSpirv, HlslCompileAndFlattenTest, + ::testing::ValuesIn(std::vector{ + {"hlsl.array.flatten.frag", "main"}, + }), + FileNameAsCustomTestSuffix +); + +// clang-format on } // anonymous namespace } // namespace glslangtest diff --git a/gtests/Initializer.h b/gtests/Initializer.h index 34af9ad9..b46b3f55 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/Link.FromFile.cpp b/gtests/Link.FromFile.cpp index b324b9ab..2651a1e0 100644 --- a/gtests/Link.FromFile.cpp +++ b/gtests/Link.FromFile.cpp @@ -55,7 +55,7 @@ TEST_P(LinkTest, FromFile) std::vector> shaders; for (size_t i = 0; i < fileCount; ++i) { std::string contents; - tryLoadFile(GLSLANG_TEST_DIRECTORY "/" + fileNames[i], + tryLoadFile(GlobalTestSettings.testRoot + "/" + fileNames[i], "input", &contents); shaders.emplace_back( new glslang::TShader(GetShaderStage(GetSuffix(fileNames[i])))); @@ -77,7 +77,7 @@ TEST_P(LinkTest, FromFile) // Check with expected results. const std::string expectedOutputFname = - GLSLANG_TEST_DIRECTORY "/baseResults/" + fileNames.front() + ".out"; + GlobalTestSettings.testRoot + "/baseResults/" + fileNames.front() + ".out"; std::string expectedOutput; tryLoadFile(expectedOutputFname, "expected output", &expectedOutput); diff --git a/gtests/Pp.FromFile.cpp b/gtests/Pp.FromFile.cpp index 04ac3f75..13daac0d 100644 --- a/gtests/Pp.FromFile.cpp +++ b/gtests/Pp.FromFile.cpp @@ -43,7 +43,7 @@ using PreprocessingTest = GlslangTest<::testing::TestWithParam>; TEST_P(PreprocessingTest, FromFile) { - loadFilePreprocessAndCheck(GLSLANG_TEST_DIRECTORY, GetParam()); + loadFilePreprocessAndCheck(GlobalTestSettings.testRoot, GetParam()); } // clang-format off diff --git a/gtests/Remap.FromFile.cpp b/gtests/Remap.FromFile.cpp new file mode 100644 index 00000000..9f25a6f2 --- /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 + +#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& 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>; + +// Remapping SPIR-V modules. +TEST_P(RemapTest, FromFile) +{ + if (GetSuffix(GetParam().fileName) == "spv") { + loadFileRemapAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, + GetParam().sourceLanguage, + Semantics::Vulkan, + Target::Spv, + GetParam().remapOpts); + } else { + loadFileCompileRemapAndCheck(GlobalTestSettings.testRoot, 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{ + // 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/Settings.cpp b/gtests/Settings.cpp index 4ba7989b..0ac58449 100644 --- a/gtests/Settings.cpp +++ b/gtests/Settings.cpp @@ -36,6 +36,16 @@ namespace glslangtest { -GTestSettings GlobalTestSettings = {nullptr, false}; +// We need CMake to provide us the absolute path to the directory containing +// test files, so we are certain to find those files no matter where the test +// harness binary is generated. This provides out-of-source build capability. +// This will be used as the default test root, but can be overridden with +// the --test-root argument. +#ifndef GLSLANG_TEST_DIRECTORY +#error \ + "GLSLANG_TEST_DIRECTORY needs to be defined for gtest to locate test files." +#endif + +GTestSettings GlobalTestSettings = {nullptr, false, GLSLANG_TEST_DIRECTORY}; } // namespace glslangtest diff --git a/gtests/Settings.h b/gtests/Settings.h index 30056a7b..c38474cc 100644 --- a/gtests/Settings.h +++ b/gtests/Settings.h @@ -35,6 +35,8 @@ #ifndef GLSLANG_GTESTS_SETTINGS_H #define GLSLANG_GTESTS_SETTINGS_H +#include + namespace glslangtest { class GlslangInitializer; @@ -45,6 +47,8 @@ struct GTestSettings { // An indicator of whether GTest should write real output to the file for // the expected output. bool updateMode; + // The root directory for test files. + std::string testRoot; }; extern GTestSettings GlobalTestSettings; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index dbe0507d..a55af518 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -1,4 +1,4 @@ -// + // // Copyright (C) 2016 Google, Inc. // // All rights reserved. @@ -41,17 +41,41 @@ namespace glslangtest { namespace { +struct IoMapData { + const char* fileName; + const char* entryPoint; + int baseSamplerBinding; + int baseTextureBinding; + int baseUboBinding; + bool autoMapBindings; + bool flattenUniforms; +}; + +std::string FileNameAsCustomTestSuffixIoMap( + const ::testing::TestParamInfo& 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 CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam>; using VulkanSemantics = GlslangTest<::testing::TestWithParam>; using OpenGLSemantics = GlslangTest<::testing::TestWithParam>; using VulkanAstSemantics = GlslangTest<::testing::TestWithParam>; +using HlslIoMap = GlslangTest<::testing::TestWithParam>; +using GlslIoMap = GlslangTest<::testing::TestWithParam>; +#ifdef AMD_EXTENSIONS +using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam>; +#endif // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully // generate SPIR-V. TEST_P(CompileVulkanToSpirvTest, FromFile) { - loadFileCompileAndCheck(GLSLANG_TEST_DIRECTORY, GetParam(), + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, Target::Spv); } @@ -60,7 +84,7 @@ TEST_P(CompileVulkanToSpirvTest, FromFile) // generate SPIR-V. TEST_P(CompileOpenGLToSpirvTest, FromFile) { - loadFileCompileAndCheck(GLSLANG_TEST_DIRECTORY, GetParam(), + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::OpenGL, Target::Spv); } @@ -69,7 +93,7 @@ TEST_P(CompileOpenGLToSpirvTest, FromFile) // SPIR-V. TEST_P(VulkanSemantics, FromFile) { - loadFileCompileAndCheck(GLSLANG_TEST_DIRECTORY, GetParam(), + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, Target::Spv); } @@ -78,7 +102,7 @@ TEST_P(VulkanSemantics, FromFile) // SPIR-V. TEST_P(OpenGLSemantics, FromFile) { - loadFileCompileAndCheck(GLSLANG_TEST_DIRECTORY, GetParam(), + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::OpenGL, Target::Spv); } @@ -86,11 +110,48 @@ TEST_P(OpenGLSemantics, FromFile) // GLSL-level Vulkan semantics test that need to see the AST for validation. TEST_P(VulkanAstSemantics, FromFile) { - loadFileCompileAndCheck(GLSLANG_TEST_DIRECTORY, GetParam(), + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, Target::AST); } +// HLSL-level Vulkan semantics tests. +TEST_P(HlslIoMap, FromFile) +{ + loadFileCompileIoMapAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, + Source::HLSL, Semantics::Vulkan, + Target::Spv, GetParam().entryPoint, + GetParam().baseSamplerBinding, + GetParam().baseTextureBinding, + GetParam().baseUboBinding, + GetParam().autoMapBindings, + GetParam().flattenUniforms); +} + +// GLSL-level Vulkan semantics tests. +TEST_P(GlslIoMap, FromFile) +{ + loadFileCompileIoMapAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, + Source::GLSL, Semantics::Vulkan, + Target::Spv, GetParam().entryPoint, + GetParam().baseSamplerBinding, + GetParam().baseTextureBinding, + GetParam().baseUboBinding, + GetParam().autoMapBindings, + GetParam().flattenUniforms); +} + +#ifdef AMD_EXTENSIONS +// Compiling GLSL to SPIR-V under Vulkan semantics (AMD extensions enabled). +// Expected to successfully generate SPIR-V. +TEST_P(CompileVulkanToSpirvTestAMD, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), + Source::GLSL, Semantics::Vulkan, + Target::Spv); +} +#endif + // clang-format off INSTANTIATE_TEST_CASE_P( Glsl, CompileVulkanToSpirvTest, @@ -164,15 +225,19 @@ INSTANTIATE_TEST_CASE_P( "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", + "spv.offsets.frag", "spv.Operations.frag", "spv.intOps.vert", "spv.precision.frag", "spv.prepost.frag", "spv.qualifiers.vert", "spv.shaderBallot.comp", + "spv.shaderDrawParams.vert", "spv.shaderGroupVote.comp", "spv.shiftOps.frag", "spv.simpleFunctionCall.frag", @@ -184,6 +249,7 @@ INSTANTIATE_TEST_CASE_P( "spv.structure.frag", "spv.switch.frag", "spv.swizzle.frag", + "spv.swizzleInversion.frag", "spv.test.frag", "spv.test.vert", "spv.texture.frag", @@ -213,6 +279,32 @@ INSTANTIATE_TEST_CASE_P( FileNameAsCustomTestSuffix ); +// clang-format off +INSTANTIATE_TEST_CASE_P( + Hlsl, HlslIoMap, + ::testing::ValuesIn(std::vector{ + { "spv.register.autoassign.frag", "main_ep", 5, 10, 20, true, false }, + { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false }, + { "spv.register.autoassign-2.frag", "main", 5, 10, 15, true, true }, + { "spv.buffer.autoassign.frag", "main", 5, 10, 15, true, true }, + { "spv.register.autoassign.rangetest.frag", "main", + glslang::TQualifier::layoutBindingEnd-2, + glslang::TQualifier::layoutBindingEnd+5, + 20, true, false }, + }), + FileNameAsCustomTestSuffixIoMap +); + +// clang-format off +INSTANTIATE_TEST_CASE_P( + Hlsl, GlslIoMap, + ::testing::ValuesIn(std::vector{ + { "spv.glsl.register.autoassign.frag", "main", 5, 10, 20, true, false }, + { "spv.glsl.register.noautoassign.frag", "main", 5, 10, 15, false, false }, + }), + FileNameAsCustomTestSuffixIoMap +); + // clang-format off INSTANTIATE_TEST_CASE_P( Glsl, CompileOpenGLToSpirvTest, @@ -253,6 +345,16 @@ INSTANTIATE_TEST_CASE_P( })), FileNameAsCustomTestSuffix ); + +#ifdef AMD_EXTENSIONS +INSTANTIATE_TEST_CASE_P( + Glsl, CompileVulkanToSpirvTestAMD, + ::testing::ValuesIn(std::vector({ + "spv.float16.frag", + })), + FileNameAsCustomTestSuffix +); +#endif // clang-format on } // anonymous namespace diff --git a/gtests/TestFixture.cpp b/gtests/TestFixture.cpp index f170f368..7d27b3b1 100644 --- a/gtests/TestFixture.cpp +++ b/gtests/TestFixture.cpp @@ -74,7 +74,7 @@ EShMessages DeriveOptions(Source source, Semantics semantics, Target target) case Source::GLSL: break; case Source::HLSL: - result = EShMsgReadHlsl; + result = static_cast(result | EShMsgReadHlsl); break; } @@ -116,6 +116,32 @@ std::pair ReadFile(const std::string& path) return std::make_pair(false, ""); } +std::pair > 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::vector 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 8dffb805..c08c6cc5 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -35,31 +35,25 @@ #ifndef GLSLANG_GTESTS_TEST_FIXTURE_H #define GLSLANG_GTESTS_TEST_FIXTURE_H -#include +#include #include #include #include #include +#include #include #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" #include "Initializer.h" #include "Settings.h" -// We need CMake to provide us the absolute path to the directory containing -// test files, so we are certain to find those files no matter where the test -// harness binary is generated. This provides out-of-source build capability. -#ifndef GLSLANG_TEST_DIRECTORY -#error \ - "GLSLANG_TEST_DIRECTORY needs to be defined for gtest to locate test files." -#endif - namespace glslangtest { // This function is used to provide custom test name suffixes based on the @@ -93,6 +87,7 @@ EShMessages DeriveOptions(Source, Semantics, Target); // 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 ReadFile(const std::string& path); +std::pair > ReadSpvBinaryFile(const std::string& path); // Writes the given |contents| into the file at the given |path|. Returns true // on successful output. @@ -128,6 +123,16 @@ public: 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& 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 +184,6 @@ public: 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); @@ -193,11 +196,14 @@ public: // the result and returns disassembly text. GlslangResult compileAndLink( const std::string shaderName, const std::string& code, - const std::string& entryPointName, EShMessages controls) + const std::string& entryPointName, EShMessages controls, + bool flattenUniformArrays = false) { const EShLanguage kind = GetShaderStage(GetSuffix(shaderName)); glslang::TShader shader(kind); + shader.setFlattenUniformArrays(flattenUniformArrays); + bool success = compile(&shader, code, entryPointName, controls); glslang::TProgram program; @@ -223,6 +229,118 @@ public: } } + // Compiles and links the given source |code| of the given shader + // |stage| into the target under the semantics specified via |controls|. + // Returns a GlslangResult instance containing all the information generated + // during the process. If the target includes SPIR-V, also disassembles + // the result and returns disassembly text. + GlslangResult compileLinkIoMap( + const std::string shaderName, const std::string& code, + const std::string& entryPointName, EShMessages controls, + int baseSamplerBinding, + int baseTextureBinding, + int baseUboBinding, + bool autoMapBindings, + bool flattenUniformArrays) + { + const EShLanguage kind = GetShaderStage(GetSuffix(shaderName)); + + glslang::TShader shader(kind); + shader.setShiftSamplerBinding(baseSamplerBinding); + shader.setShiftTextureBinding(baseTextureBinding); + shader.setShiftUboBinding(baseUboBinding); + shader.setAutoMapBindings(autoMapBindings); + shader.setFlattenUniformArrays(flattenUniformArrays); + + bool success = compile(&shader, code, entryPointName, controls); + + glslang::TProgram program; + program.addShader(&shader); + + success &= program.link(controls); + success &= program.mapIO(); + + spv::SpvBuildLogger logger; + + if (success && (controls & EShMsgSpvRules)) { + std::vector spirv_binary; + glslang::GlslangToSpv(*program.getIntermediate(kind), + spirv_binary, &logger); + + 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(), "", ""}; + } + } + + // 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 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& code, + EShMessages controls, + const unsigned int remapOptions = spv::spirvbin_t::NONE) + { + if ((controls & EShMsgSpvRules)) { + std::vector 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 +392,120 @@ public: expectedOutputFname); } + void loadFileCompileFlattenUniformsAndCheck(const std::string& testDir, + const std::string& testName, + Source source, + Semantics semantics, + Target target, + const std::string& entryPointName="") + { + 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 = compileAndLink(testName, input, entryPointName, controls, true); + + // Generate the hybrid output in the way of glslangValidator. + std::ostringstream stream; + outputResultToStream(&stream, result, controls); + + checkEqAndUpdateIfRequested(expectedOutput, stream.str(), + expectedOutputFname); + } + + void loadFileCompileIoMapAndCheck(const std::string& testDir, + const std::string& testName, + Source source, + Semantics semantics, + Target target, + const std::string& entryPointName, + int baseSamplerBinding, + int baseTextureBinding, + int baseUboBinding, + bool autoMapBindings, + bool flattenUniformArrays) + { + 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 = compileLinkIoMap(testName, input, entryPointName, controls, + baseSamplerBinding, baseTextureBinding, baseUboBinding, + autoMapBindings, + flattenUniformArrays); + + // Generate the hybrid output in the way of glslangValidator. + std::ostringstream stream; + outputResultToStream(&stream, result, controls); + + checkEqAndUpdateIfRequested(expectedOutput, stream.str(), + 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 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/gtests/main.cpp b/gtests/main.cpp index b9806aa2..35f30db9 100644 --- a/gtests/main.cpp +++ b/gtests/main.cpp @@ -33,6 +33,7 @@ // POSSIBILITY OF SUCH DAMAGE. #include +#include #include @@ -49,9 +50,19 @@ int main(int argc, char** argv) glslangtest::GlobalTestSettings.initializer = initializer.get(); for (int i = 1; i < argc; ++i) { - if (!strncmp("--update-mode", argv[i], 13)) { + if (std::string("--update-mode") == argv[i]) { glslangtest::GlobalTestSettings.updateMode = true; - break; + } + if (std::string("--test-root") == argv[i]) { + // Allow the user set the tets root directory. This is useful + // for testing with files from another source tree. + if (i + 1 < argc) { + glslangtest::GlobalTestSettings.testRoot = argv[i + 1]; + i++; + } else { + printf("error: --test-root requires an argument\n"); + return 1; + } } } diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index ee8ebf3f..89465bff 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -69,6 +69,11 @@ void HlslGrammar::expected(const char* syntax) parseContext.error(token.loc, "Expected", syntax, ""); } +void HlslGrammar::unimplemented(const char* error) +{ + parseContext.error(token.loc, "Unimplemented", error, ""); +} + // Only process the next token if it is an identifier. // Return true if it was an identifier. bool HlslGrammar::acceptIdentifier(HlslToken& idToken) @@ -84,12 +89,17 @@ bool HlslGrammar::acceptIdentifier(HlslToken& idToken) // compilationUnit // : list of externalDeclaration +// | SEMICOLONS // bool HlslGrammar::acceptCompilationUnit() { TIntermNode* unitNode = nullptr; while (! peekTokenClass(EHTokNone)) { + // HLSL allows semicolons between global declarations, e.g, between functions. + if (acceptTokenClass(EHTokSemicolon)) + continue; + // externalDeclaration TIntermNode* declarationNode; if (! acceptDeclaration(declarationNode)) @@ -105,9 +115,136 @@ bool HlslGrammar::acceptCompilationUnit() return true; } +// sampler_state +// : LEFT_BRACE [sampler_state_assignment ... ] RIGHT_BRACE +// +// sampler_state_assignment +// : sampler_state_identifier EQUAL value SEMICOLON +// +// sampler_state_identifier +// : ADDRESSU +// | ADDRESSV +// | ADDRESSW +// | BORDERCOLOR +// | FILTER +// | MAXANISOTROPY +// | MAXLOD +// | MINLOD +// | MIPLODBIAS +// +bool HlslGrammar::acceptSamplerState() +{ + // TODO: this should be genericized to accept a list of valid tokens and + // return token/value pairs. Presently it is specific to texture values. + + if (! acceptTokenClass(EHTokLeftBrace)) + return true; + + parseContext.warn(token.loc, "unimplemented", "immediate sampler state", ""); + + do { + // read state name + HlslToken state; + if (! acceptIdentifier(state)) + break; // end of list + + // FXC accepts any case + TString stateName = *state.string; + std::transform(stateName.begin(), stateName.end(), stateName.begin(), ::tolower); + + if (! acceptTokenClass(EHTokAssign)) { + expected("assign"); + return false; + } + + if (stateName == "minlod" || stateName == "maxlod") { + if (! peekTokenClass(EHTokIntConstant)) { + expected("integer"); + return false; + } + + TIntermTyped* lod = nullptr; + if (! acceptLiteral(lod)) // should never fail, since we just looked for an integer + return false; + } else if (stateName == "maxanisotropy") { + if (! peekTokenClass(EHTokIntConstant)) { + expected("integer"); + return false; + } + + TIntermTyped* maxAnisotropy = nullptr; + if (! acceptLiteral(maxAnisotropy)) // should never fail, since we just looked for an integer + return false; + } else if (stateName == "filter") { + HlslToken filterMode; + if (! acceptIdentifier(filterMode)) { + expected("filter mode"); + return false; + } + } else if (stateName == "addressu" || stateName == "addressv" || stateName == "addressw") { + HlslToken addrMode; + if (! acceptIdentifier(addrMode)) { + expected("texture address mode"); + return false; + } + } else if (stateName == "miplodbias") { + TIntermTyped* lodBias = nullptr; + if (! acceptLiteral(lodBias)) { + expected("lod bias"); + return false; + } + } else if (stateName == "bordercolor") { + return false; + } else { + expected("texture state"); + return false; + } + + // SEMICOLON + if (! acceptTokenClass(EHTokSemicolon)) { + expected("semicolon"); + return false; + } + } while (true); + + if (! acceptTokenClass(EHTokRightBrace)) + return false; + + return true; +} + +// sampler_declaration_dx9 +// : SAMPLER identifier EQUAL sampler_type sampler_state +// +bool HlslGrammar::acceptSamplerDeclarationDX9(TType& /*type*/) +{ + if (! acceptTokenClass(EHTokSampler)) + return false; + + // TODO: remove this when DX9 style declarations are implemented. + unimplemented("Direct3D 9 sampler declaration"); + + // read sampler name + HlslToken name; + if (! acceptIdentifier(name)) { + expected("sampler name"); + return false; + } + + if (! acceptTokenClass(EHTokAssign)) { + expected("="); + return false; + } + + return false; +} + + // declaration -// : fully_specified_type declarator_list SEMICOLON +// : sampler_declaration_dx9 post_decls SEMICOLON +// | fully_specified_type declarator_list SEMICOLON // | fully_specified_type identifier function_parameters post_decls compound_statement // function definition +// | fully_specified_type identifier sampler_state post_decls compound_statement // sampler definition // | typedef declaration // // declarator_list @@ -134,21 +271,30 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) // typedef bool typedefDecl = acceptTokenClass(EHTokTypedef); + TType declaredType; + + // DX9 sampler declaration use a different syntax + // 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(declaredType)) + // return true; + // fully_specified_type - TType type; - if (! acceptFullySpecifiedType(type)) + if (! acceptFullySpecifiedType(declaredType)) return false; - if (type.getQualifier().storage == EvqTemporary && parseContext.symbolTable.atGlobalLevel()) - type.getQualifier().storage = EvqGlobal; // identifier HlslToken idToken; while (acceptIdentifier(idToken)) { // function_parameters - TFunction* function = new TFunction(idToken.string, type); - if (acceptFunctionParameters(*function)) { + TFunction& function = *new TFunction(idToken.string, declaredType); + if (acceptFunctionParameters(function)) { // post_decls - acceptPostDecls(type); + acceptPostDecls(function.getWritableType().getQualifier()); // compound_statement (function body definition) or just a prototype? if (peekTokenClass(EHTokLeftBrace)) { @@ -156,21 +302,48 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) 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 + // A variable declaration. Fix the storage qualifier if it's a global. + if (declaredType.getQualifier().storage == EvqTemporary && parseContext.symbolTable.atGlobalLevel()) + declaredType.getQualifier().storage = EvqUniform; - // array_specifier + // We can handle multiple variables per type declaration, so + // the number of types can expand when arrayness is different. + TType variableType; + variableType.shallowCopy(declaredType); + + // recognize array_specifier TArraySizes* arraySizes = nullptr; acceptArraySpecifier(arraySizes); + // Fix arrayness in the variableType + if (declaredType.isImplicitlySizedArray()) { + // Because "int[] a = int[2](...), b = int[3](...)" makes two arrays a and b + // of different sizes, for this case sharing the shallow copy of arrayness + // with the parseType oversubscribes it, so get a deep copy of the arrayness. + variableType.newArraySizes(declaredType.getArraySizes()); + } + if (arraySizes || variableType.isArray()) { + // In the most general case, arrayness is potentially coming both from the + // declared type and from the variable: "int[] a[];" or just one or the other. + // Merge it all to the variableType, so all arrayness is part of the variableType. + parseContext.arrayDimMerge(variableType, arraySizes); + } + + // samplers accept immediate sampler state + if (variableType.getBasicType() == EbtSampler) { + if (! acceptSamplerState()) + return false; + } + // post_decls - acceptPostDecls(type); + acceptPostDecls(variableType.getQualifier()); // EQUAL assignment_expression TIntermTyped* expressionNode = nullptr; @@ -183,16 +356,29 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& node) } } - if (typedefDecl) - parseContext.declareTypedef(idToken.loc, *idToken.string, type, arraySizes); - else { - // Declare the variable and add any initializer code to the AST. - // The top-level node is always made into an aggregate, as that's - // historically how the AST has been. - node = intermediate.growAggregate(node, - parseContext.declareVariable(idToken.loc, *idToken.string, type, - arraySizes, expressionNode), - idToken.loc); + // Hand off the actual declaration + + // TODO: things scoped within an annotation need their own name space; + // TODO: strings are not yet handled. + if (variableType.getBasicType() != EbtString && parseContext.getAnnotationNestingLevel() == 0) { + if (typedefDecl) + parseContext.declareTypedef(idToken.loc, *idToken.string, variableType); + else if (variableType.getBasicType() == EbtBlock) + parseContext.declareBlock(idToken.loc, variableType, idToken.string); + else { + if (variableType.getQualifier().storage == EvqUniform && ! variableType.isOpaque()) { + // this isn't really an individual variable, but a member of the $Global buffer + parseContext.growGlobalUniformBlock(idToken.loc, variableType, *idToken.string); + } else { + // Declare the variable and add any initializer code to the AST. + // The top-level node is always made into an aggregate, as that's + // historically how the AST has been. + node = intermediate.growAggregate(node, + parseContext.declareVariable(idToken.loc, *idToken.string, variableType, + expressionNode), + idToken.loc); + } + } } } @@ -247,7 +433,7 @@ bool HlslGrammar::acceptControlDeclaration(TIntermNode*& node) return false; } - node = parseContext.declareVariable(idToken.loc, *idToken.string, type, 0, expressionNode); + node = parseContext.declareVariable(idToken.loc, *idToken.string, type, expressionNode); return true; } @@ -261,12 +447,27 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type) // type_qualifier TQualifier qualifier; qualifier.clear(); - acceptQualifier(qualifier); + if (! acceptQualifier(qualifier)) + return false; + TSourceLoc loc = token.loc; // type_specifier if (! acceptType(type)) return false; - type.getQualifier() = qualifier; + if (type.getBasicType() == EbtBlock) { + // the type was a block, which set some parts of the qualifier + parseContext.mergeQualifiers(type.getQualifier(), qualifier); + // further, it can create an anonymous instance of the block + if (peekTokenClass(EHTokSemicolon)) + parseContext.declareBlock(loc, type); + } else { + // Some qualifiers are set when parsing the type. Merge those with + // whatever comes from acceptQualifier. + assert(qualifier.layoutFormat == ElfNone); + qualifier.layoutFormat = type.getQualifier().layoutFormat; + + type.getQualifier() = qualifier; + } return true; } @@ -276,12 +477,12 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type) // // Zero or more of these, so this can't return false. // -void HlslGrammar::acceptQualifier(TQualifier& qualifier) +bool HlslGrammar::acceptQualifier(TQualifier& qualifier) { do { switch (peek()) { case EHTokStatic: - // normal glslang default + qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; break; case EHTokExtern: // TODO: no meaning in glslang? @@ -302,7 +503,6 @@ void HlslGrammar::acceptQualifier(TQualifier& qualifier) qualifier.volatil = true; break; case EHTokLinear: - qualifier.storage = EvqVaryingIn; qualifier.smooth = true; break; case EHTokCentroid: @@ -318,21 +518,83 @@ void HlslGrammar::acceptQualifier(TQualifier& qualifier) qualifier.sample = true; break; case EHTokRowMajor: - qualifier.layoutMatrix = ElmRowMajor; + qualifier.layoutMatrix = ElmColumnMajor; break; case EHTokColumnMajor: - qualifier.layoutMatrix = ElmColumnMajor; + qualifier.layoutMatrix = ElmRowMajor; break; case EHTokPrecise: qualifier.noContraction = true; break; + case EHTokIn: + qualifier.storage = EvqIn; + break; + case EHTokOut: + qualifier.storage = EvqOut; + break; + 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 @@ -475,8 +737,8 @@ bool HlslGrammar::acceptMatrixTemplateType(TType& type) 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"); @@ -486,6 +748,219 @@ bool HlslGrammar::acceptMatrixTemplateType(TType& type) return true; } +// annotations +// : LEFT_ANGLE declaration SEMI_COLON ... declaration SEMICOLON RIGHT_ANGLE +// +bool HlslGrammar::acceptAnnotations(TQualifier&) +{ + if (! acceptTokenClass(EHTokLeftAngle)) + return false; + + // note that we are nesting a name space + parseContext.nestAnnotations(); + + // 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)) + break; + + // declaration + TIntermNode* node; + if (! acceptDeclaration(node)) { + expected("declaration in annotation"); + return false; + } + } while (true); + + parseContext.unnestAnnotations(); + return true; +} + +// sampler_type +// : SAMPLER +// | SAMPLER1D +// | SAMPLER2D +// | SAMPLER3D +// | SAMPLERCUBE +// | SAMPLERSTATE +// | SAMPLERCOMPARISONSTATE +bool HlslGrammar::acceptSamplerType(TType& type) +{ + // read sampler type + const EHlslTokenClass samplerType = peek(); + + // TODO: for DX9 + // TSamplerDim dim = EsdNone; + + bool isShadow = false; + + switch (samplerType) { + case EHTokSampler: break; + case EHTokSampler1d: /*dim = Esd1D*/; break; + case EHTokSampler2d: /*dim = Esd2D*/; break; + case EHTokSampler3d: /*dim = Esd3D*/; break; + case EHTokSamplerCube: /*dim = EsdCube*/; break; + case EHTokSamplerState: break; + case EHTokSamplerComparisonState: isShadow = true; break; + default: + return false; // not a sampler declaration + } + + advanceToken(); // consume the sampler type keyword + + TArraySizes* arraySizes = nullptr; // TODO: array + + TSampler sampler; + sampler.setPureSampler(isShadow); + + type.shallowCopy(TType(sampler, EvqUniform, arraySizes)); + + return true; +} + +// texture_type +// | BUFFER +// | TEXTURE1D +// | TEXTURE1DARRAY +// | TEXTURE2D +// | TEXTURE2DARRAY +// | TEXTURE3D +// | TEXTURECUBE +// | TEXTURECUBEARRAY +// | TEXTURE2DMS +// | TEXTURE2DMSARRAY +// | RWBUFFER +// | RWTEXTURE1D +// | RWTEXTURE1DARRAY +// | RWTEXTURE2D +// | RWTEXTURE2DARRAY +// | RWTEXTURE3D + +bool HlslGrammar::acceptTextureType(TType& type) +{ + const EHlslTokenClass textureType = peek(); + + TSamplerDim dim = EsdNone; + bool array = false; + bool ms = false; + bool image = false; + + switch (textureType) { + case EHTokBuffer: dim = EsdBuffer; break; + case EHTokTexture1d: dim = Esd1D; break; + case EHTokTexture1darray: dim = Esd1D; array = true; break; + case EHTokTexture2d: dim = Esd2D; break; + case EHTokTexture2darray: dim = Esd2D; array = true; break; + case EHTokTexture3d: dim = Esd3D; break; + case EHTokTextureCube: dim = EsdCube; break; + case EHTokTextureCubearray: dim = EsdCube; array = true; break; + case EHTokTexture2DMS: dim = Esd2D; ms = true; break; + case EHTokTexture2DMSarray: dim = Esd2D; array = true; ms = true; break; + case EHTokRWBuffer: dim = EsdBuffer; image=true; break; + case EHTokRWTexture1d: dim = Esd1D; array=false; image=true; break; + case EHTokRWTexture1darray: dim = Esd1D; array=true; image=true; break; + case EHTokRWTexture2d: dim = Esd2D; array=false; image=true; break; + case EHTokRWTexture2darray: dim = Esd2D; array=true; image=true; break; + case EHTokRWTexture3d: dim = Esd3D; array=false; image=true; break; + default: + return false; // not a texture declaration + } + + advanceToken(); // consume the texture object keyword + + TType txType(EbtFloat, EvqUniform, 4); // default type is float4 + + TIntermTyped* msCount = nullptr; + + // texture type: required for multisample types and RWBuffer/RWTextures! + if (acceptTokenClass(EHTokLeftAngle)) { + if (! acceptType(txType)) { + expected("scalar or vector type"); + return false; + } + + const TBasicType basicRetType = txType.getBasicType() ; + + if (basicRetType != EbtFloat && basicRetType != EbtUint && basicRetType != EbtInt) { + unimplemented("basic type in texture"); + return false; + } + + // Buffers can handle small mats if they fit in 4 components + if (dim == EsdBuffer && txType.isMatrix()) { + if ((txType.getMatrixCols() * txType.getMatrixRows()) > 4) { + expected("components < 4 in matrix buffer type"); + return false; + } + + // TODO: except we don't handle it yet... + unimplemented("matrix type in buffer"); + return false; + } + + if (!txType.isScalar() && !txType.isVector()) { + expected("scalar or vector type"); + return false; + } + + if (ms && acceptTokenClass(EHTokComma)) { + // read sample count for multisample types, if given + if (! peekTokenClass(EHTokIntConstant)) { + expected("multisample count"); + return false; + } + + if (! acceptLiteral(msCount)) // should never fail, since we just found an integer + return false; + } + + if (! acceptTokenClass(EHTokRightAngle)) { + expected("right angle bracket"); + return false; + } + } else if (ms) { + expected("texture type for multisample"); + return false; + } else if (image) { + expected("type for RWTexture/RWBuffer"); + return false; + } + + TArraySizes* arraySizes = nullptr; + const bool shadow = false; // declared on the sampler + + TSampler sampler; + TLayoutFormat format = ElfNone; + + // Buffer, RWBuffer and RWTexture (images) require a TLayoutFormat. We handle only a limit set. + if (image || dim == EsdBuffer) + format = parseContext.getLayoutFromTxType(token.loc, txType); + + // Non-image Buffers are combined + if (dim == EsdBuffer && !image) { + sampler.set(txType.getBasicType(), dim, array); + } else { + // DX10 textures are separated. TODO: DX9. + if (image) { + sampler.setImage(txType.getBasicType(), dim, array, shadow, ms); + } else { + sampler.setTexture(txType.getBasicType(), dim, array, shadow, ms); + } + } + + // Remember the declared vector size. + sampler.vectorSize = txType.getVectorSize(); + + type.shallowCopy(TType(sampler, EvqUniform, arraySizes)); + type.getQualifier().layoutFormat = format; + + return true; +} + // If token is for a type, update 'type' with the type information, // and return true and advance. @@ -501,7 +976,38 @@ bool HlslGrammar::acceptType(TType& type) return acceptMatrixTemplateType(type); break; + case EHTokSampler: // fall through + case EHTokSampler1d: // ... + case EHTokSampler2d: // ... + case EHTokSampler3d: // ... + case EHTokSamplerCube: // ... + case EHTokSamplerState: // ... + case EHTokSamplerComparisonState: // ... + return acceptSamplerType(type); + break; + + case EHTokBuffer: // fall through + case EHTokTexture1d: // ... + case EHTokTexture1darray: // ... + case EHTokTexture2d: // ... + case EHTokTexture2darray: // ... + case EHTokTexture3d: // ... + case EHTokTextureCube: // ... + case EHTokTextureCubearray: // ... + case EHTokTexture2DMS: // ... + case EHTokTexture2DMSarray: // ... + case EHTokRWTexture1d: // ... + case EHTokRWTexture1darray: // ... + case EHTokRWTexture2d: // ... + case EHTokRWTexture2darray: // ... + case EHTokRWTexture3d: // ... + case EHTokRWBuffer: // ... + return acceptTextureType(type); + break; + case EHTokStruct: + case EHTokCBuffer: + case EHTokTBuffer: return acceptStruct(type); break; @@ -521,6 +1027,10 @@ bool HlslGrammar::acceptType(TType& type) new(&type) TType(EbtVoid); break; + case EHTokString: + new(&type) TType(EbtString); + break; + case EHTokFloat: new(&type) TType(EbtFloat); break; @@ -612,46 +1122,46 @@ bool HlslGrammar::acceptType(TType& type) 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); @@ -661,46 +1171,46 @@ bool HlslGrammar::acceptType(TType& type) 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); @@ -710,46 +1220,46 @@ bool HlslGrammar::acceptType(TType& type) 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); @@ -759,46 +1269,46 @@ bool HlslGrammar::acceptType(TType& type) 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); @@ -808,46 +1318,46 @@ bool HlslGrammar::acceptType(TType& type) 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); @@ -863,13 +1373,28 @@ bool HlslGrammar::acceptType(TType& type) } // struct -// : STRUCT IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE -// | STRUCT LEFT_BRACE struct_declaration_list RIGHT_BRACE +// : struct_type IDENTIFIER post_decls LEFT_BRACE struct_declaration_list RIGHT_BRACE +// | struct_type post_decls LEFT_BRACE struct_declaration_list RIGHT_BRACE +// +// struct_type +// : STRUCT +// | CBUFFER +// | TBUFFER // bool HlslGrammar::acceptStruct(TType& type) { + // 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)) + storageQualifier = EvqUniform; + // TBUFFER + else if (acceptTokenClass(EHTokTBuffer)) + storageQualifier = EvqBuffer; // STRUCT - if (! acceptTokenClass(EHTokStruct)) + else if (! acceptTokenClass(EHTokStruct)) return false; // IDENTIFIER @@ -879,6 +1404,11 @@ bool HlslGrammar::acceptStruct(TType& type) advanceToken(); } + // post_decls + TQualifier postDeclQualifier; + postDeclQualifier.clear(); + acceptPostDecls(postDeclQualifier); + // LEFT_BRACE if (! acceptTokenClass(EHTokLeftBrace)) { expected("{"); @@ -899,11 +1429,17 @@ bool HlslGrammar::acceptStruct(TType& type) } // create the user-defined type - new(&type) TType(typeList, structName); + if (storageQualifier == EvqTemporary) + new(&type) TType(typeList, structName); + else { + postDeclQualifier.storage = storageQualifier; + new(&type) TType(typeList, structName, postDeclQualifier); // sets EbtBlock + } - // If it was named, which means it can be reused later, add - // it to the symbol table. - if (structName.size() > 0) { + // 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 + // case the name is not a type.) + if (type.getBasicType() != EbtBlock && structName.size() > 0) { TVariable* userTypeDef = new TVariable(&structName, type, true); if (! parseContext.symbolTable.insert(*userTypeDef)) parseContext.error(token.loc, "redefinition", structName.c_str(), "struct"); @@ -963,7 +1499,7 @@ bool HlslGrammar::acceptStructDeclarationList(TTypeList*& typeList) if (arraySizes) typeList->back().type->newArraySizes(*arraySizes); - acceptPostDecls(*member.type); + acceptPostDecls(member.type->getQualifier()); // success on seeing the SEMICOLON coming up if (peekTokenClass(EHTokSemicolon)) @@ -1036,11 +1572,17 @@ bool HlslGrammar::acceptParameterDeclaration(TFunction& function) // array_specifier TArraySizes* arraySizes = nullptr; acceptArraySpecifier(arraySizes); - if (arraySizes) + if (arraySizes) { + if (arraySizes->isImplicit()) { + parseContext.error(token.loc, "function parameter array cannot be implicitly sized", "", ""); + return false; + } + type->newArraySizes(*arraySizes); + } // post_decls - acceptPostDecls(*type); + acceptPostDecls(type->getQualifier()); parseContext.paramFix(*type); @@ -1054,19 +1596,16 @@ bool HlslGrammar::acceptParameterDeclaration(TFunction& function) // 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; } @@ -1172,8 +1711,11 @@ bool HlslGrammar::acceptInitializer(TIntermTyped*& node) node = intermediate.growAggregate(node, expr, loc); // COMMA - if (acceptTokenClass(EHTokComma)) + if (acceptTokenClass(EHTokComma)) { + if (acceptTokenClass(EHTokRightBrace)) // allow trailing comma + return true; continue; + } // RIGHT_BRACE if (acceptTokenClass(EHTokRightBrace)) @@ -1190,8 +1732,9 @@ bool HlslGrammar::acceptInitializer(TIntermTyped*& node) // a op (b op (c op d)) // // assigment_expression -// : binary_expression op binary_expression op binary_expression ... -// | initializer +// : initializer +// | conditional_expression +// | conditional_expression assign_op conditional_expression assign_op conditional_expression ... // bool HlslGrammar::acceptAssignmentExpression(TIntermTyped*& node) { @@ -1204,8 +1747,8 @@ bool HlslGrammar::acceptAssignmentExpression(TIntermTyped*& node) return false; } - // binary_expression - if (! acceptBinaryExpression(node, PlLogicalOr)) + // conditional_expression + if (! acceptConditionalExpression(node)) return false; // assignment operation? @@ -1213,12 +1756,12 @@ bool HlslGrammar::acceptAssignmentExpression(TIntermTyped*& node) if (assignOp == EOpNull) return true; - // assignment op + // assign_op TSourceLoc loc = token.loc; advanceToken(); - // binary_expression - // But, done by recursing this function, which automatically + // conditional_expression assign_op conditional_expression ... + // Done by recursing this function, which automatically // gets the right-to-left associativity. TIntermTyped* rightNode = nullptr; if (! acceptAssignmentExpression(rightNode)) { @@ -1226,7 +1769,13 @@ bool HlslGrammar::acceptAssignmentExpression(TIntermTyped*& node) return false; } - node = intermediate.addAssign(assignOp, node, rightNode, loc); + node = parseContext.handleAssign(loc, assignOp, node, rightNode); + node = parseContext.handleLvalue(loc, "assign", node); + + if (node == nullptr) { + parseContext.error(loc, "could not create assignment", "", ""); + return false; + } if (! peekTokenClass(EHTokComma)) return true; @@ -1234,6 +1783,46 @@ bool HlslGrammar::acceptAssignmentExpression(TIntermTyped*& node) return true; } +// Accept a conditional expression, which associates right-to-left, +// accomplished by the "true" expression calling down to lower +// precedence levels than this level. +// +// conditional_expression +// : binary_expression +// | binary_expression QUESTION expression COLON assignment_expression +// +bool HlslGrammar::acceptConditionalExpression(TIntermTyped*& node) +{ + // binary_expression + if (! acceptBinaryExpression(node, PlLogicalOr)) + return false; + + if (! acceptTokenClass(EHTokQuestion)) + return true; + + TIntermTyped* trueNode = nullptr; + if (! acceptExpression(trueNode)) { + expected("expression after ?"); + return false; + } + TSourceLoc loc = token.loc; + + if (! acceptTokenClass(EHTokColon)) { + expected(":"); + return false; + } + + TIntermTyped* falseNode = nullptr; + if (! acceptAssignmentExpression(falseNode)) { + expected("expression after :"); + return false; + } + + node = intermediate.addSelection(node, trueNode, falseNode, loc); + + return true; +} + // Accept a binary expression, for binary operations that // associate left-to-right. This is, it is implicit, for example // @@ -1253,12 +1842,12 @@ bool HlslGrammar::acceptBinaryExpression(TIntermTyped*& node, PrecedenceLevel pr if (! acceptBinaryExpression(node, (PrecedenceLevel)(precedenceLevel + 1))) return false; - TOperator op = HlslOpMap::binary(peek()); - PrecedenceLevel tokenLevel = HlslOpMap::precedenceLevel(op); - if (tokenLevel < precedenceLevel) - return true; - do { + TOperator op = HlslOpMap::binary(peek()); + PrecedenceLevel tokenLevel = HlslOpMap::precedenceLevel(op); + if (tokenLevel < precedenceLevel) + return true; + // ... op TSourceLoc loc = token.loc; advanceToken(); @@ -1271,9 +1860,10 @@ bool HlslGrammar::acceptBinaryExpression(TIntermTyped*& node, PrecedenceLevel pr } node = intermediate.addBinaryMath(op, node, rightNode, loc); - - if (! peekTokenClass(EHTokComma)) - return true; + if (node == nullptr) { + parseContext.error(loc, "Could not perform requested binary operation", "", ""); + return false; + } } while (true); } @@ -1295,27 +1885,29 @@ bool HlslGrammar::acceptUnaryExpression(TIntermTyped*& node) if (acceptTokenClass(EHTokLeftParen)) { TType castType; if (acceptType(castType)) { - if (! acceptTokenClass(EHTokRightParen)) { - expected(")"); - return false; + if (acceptTokenClass(EHTokRightParen)) { + // We've matched "(type)" now, get the expression to cast + TSourceLoc loc = token.loc; + if (! acceptUnaryExpression(node)) + return false; + + // Hook it up like a constructor + TFunction* constructorFunction = parseContext.handleConstructorCall(loc, castType); + if (constructorFunction == nullptr) { + expected("type that can be constructed"); + return false; + } + TIntermTyped* arguments = nullptr; + parseContext.handleFunctionArgument(constructorFunction, arguments, node); + node = parseContext.handleFunctionCall(loc, constructorFunction, arguments); + + return true; + } else { + // This could be a parenthesized constructor, ala (int(3)), and we just accepted + // the '(int' part. We must back up twice. + recedeToken(); + recedeToken(); } - - // We've matched "(type)" now, get the expression to cast - TSourceLoc loc = token.loc; - if (! acceptUnaryExpression(node)) - return false; - - // Hook it up like a constructor - TFunction* constructorFunction = parseContext.handleConstructorCall(loc, castType); - if (constructorFunction == nullptr) { - expected("type that can be constructed"); - return false; - } - TIntermTyped* arguments = nullptr; - parseContext.handleFunctionArgument(constructorFunction, arguments, node); - node = parseContext.handleFunctionCall(loc, constructorFunction, arguments); - - return true; } else { // This isn't a type cast, but it still started "(", so if it is a // unary expression, it can only be a postfix_expression, so try that. @@ -1344,6 +1936,10 @@ bool HlslGrammar::acceptUnaryExpression(TIntermTyped*& node) node = intermediate.addUnaryMath(unaryOp, node, loc); + // These unary ops require lvalues + if (unaryOp == EOpPreIncrement || unaryOp == EOpPreDecrement) + node = parseContext.handleLvalue(loc, "unary operator", node); + return node != nullptr; } @@ -1420,13 +2016,23 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node) { // DOT IDENTIFIER // includes swizzles and struct members - // TODO: possibly includes "method" syntax HlslToken field; if (! acceptIdentifier(field)) { expected("swizzle or member"); return false; } + + TIntermTyped* base = node; // preserve for method function calls node = parseContext.handleDotDereference(field.loc, node, *field.string); + + // In the event of a method node, we look for an open paren and accept the function call. + if (node->getAsMethodNode() != nullptr && peekTokenClass(EHTokLeftParen)) { + if (! acceptFunctionCall(field, node, base)) { + expected("function parameters"); + return false; + } + } + break; } case EOpIndexIndirect: @@ -1448,6 +2054,7 @@ bool HlslGrammar::acceptPostfixExpression(TIntermTyped*& node) case EOpPostDecrement: // DEC_OP node = intermediate.addUnaryMath(postOp, node, loc); + node = parseContext.handleLvalue(loc, "unary operator", node); break; default: assert(0); @@ -1489,11 +2096,16 @@ bool HlslGrammar::acceptConstructor(TIntermTyped*& node) // function_call // : [idToken] arguments // -bool HlslGrammar::acceptFunctionCall(HlslToken idToken, TIntermTyped*& node) +bool HlslGrammar::acceptFunctionCall(HlslToken idToken, TIntermTyped*& node, TIntermTyped* base) { // arguments TFunction* function = new TFunction(idToken.string, TType(EbtVoid)); TIntermTyped* arguments = nullptr; + + // methods have an implicit first argument of the calling object. + if (base != nullptr) + parseContext.handleFunctionArgument(function, arguments, base); + if (! acceptArguments(function, arguments)) return false; @@ -1543,6 +2155,9 @@ bool HlslGrammar::acceptLiteral(TIntermTyped*& node) case EHTokIntConstant: node = intermediate.addConstantUnion(token.i, token.loc, true); break; + case EHTokUintConstant: + node = intermediate.addConstantUnion(token.u, token.loc, true); + break; case EHTokFloatConstant: node = intermediate.addConstantUnion(token.d, EbtFloat, token.loc, true); break; @@ -1552,6 +2167,9 @@ bool HlslGrammar::acceptLiteral(TIntermTyped*& node) case EHTokBoolConstant: node = intermediate.addConstantUnion(token.b, token.loc, true); break; + case EHTokStringConstant: + node = nullptr; + break; default: return false; @@ -1989,7 +2607,7 @@ bool HlslGrammar::acceptJumpStatement(TIntermNode*& statement) 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; @@ -2052,92 +2670,142 @@ bool HlslGrammar::acceptDefaultLabel(TIntermNode*& statement) } // array_specifier -// : LEFT_BRACKET integer_expression RGHT_BRACKET post_decls // optional +// : LEFT_BRACKET integer_expression RGHT_BRACKET ... // optional +// : LEFT_BRACKET RGHT_BRACKET // optional // void HlslGrammar::acceptArraySpecifier(TArraySizes*& arraySizes) { arraySizes = nullptr; - if (! acceptTokenClass(EHTokLeftBracket)) + // Early-out if there aren't any array dimensions + if (!peekTokenClass(EHTokLeftBracket)) return; - TSourceLoc loc = token.loc; - TIntermTyped* sizeExpr; - if (! acceptAssignmentExpression(sizeExpr)) { - expected("array-sizing expression"); - return; - } - - if (! acceptTokenClass(EHTokRightBracket)) { - expected("]"); - return; - } - - TArraySize arraySize; - parseContext.arraySizeCheck(loc, sizeExpr, arraySize); + // If we get here, we have at least one array dimension. This will track the sizes we find. arraySizes = new TArraySizes; - arraySizes->addInnerSize(arraySize); + + // Collect each array dimension. + while (acceptTokenClass(EHTokLeftBracket)) { + TSourceLoc loc = token.loc; + TIntermTyped* sizeExpr = nullptr; + + // Array sizing expression is optional. If ommitted, array will be later sized by initializer list. + const bool hasArraySize = acceptAssignmentExpression(sizeExpr); + + if (! acceptTokenClass(EHTokRightBracket)) { + expected("]"); + return; + } + + if (hasArraySize) { + TArraySize arraySize; + parseContext.arraySizeCheck(loc, sizeExpr, arraySize); + arraySizes->addInnerSize(arraySize); + } else { + arraySizes->addInnerSize(0); // sized by initializers. + } + } } // post_decls -// : COLON semantic // optional -// COLON PACKOFFSET LEFT_PAREN ... RIGHT_PAREN // optional -// COLON REGISTER // 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("("); return; } - acceptTokenClass(EHTokIdentifier); - acceptTokenClass(EHTokDot); - acceptTokenClass(EHTokIdentifier); + HlslToken locationToken; + if (! acceptIdentifier(locationToken)) { + expected("c[subcomponent][.component]"); + return; + } + HlslToken componentToken; + if (acceptTokenClass(EHTokDot)) { + if (! acceptIdentifier(componentToken)) { + expected("component"); + return; + } + } if (! acceptTokenClass(EHTokRightParen)) { expected(")"); break; } - // TODO: process the packoffset information + 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 (COMMA SPACEN)opt RIGHT_PAREN + // LEFT_PAREN if (! acceptTokenClass(EHTokLeftParen)) { expected("("); return; } - acceptTokenClass(EHTokIdentifier); - acceptTokenClass(EHTokComma); - acceptTokenClass(EHTokIdentifier); - acceptTokenClass(EHTokLeftBracket); - if (peekTokenClass(EHTokIntConstant)) + HlslToken registerDesc; // for Type# + HlslToken profile; + if (! acceptIdentifier(registerDesc)) { + expected("register number description"); + return; + } + 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; + if (! acceptIdentifier(registerDesc)) { + expected("register number description"); + return; + } + } + int subComponent = 0; + if (acceptTokenClass(EHTokLeftBracket)) { + // LEFT_BRACKET subcomponent RIGHT_BRACKET + if (! peekTokenClass(EHTokIntConstant)) { + expected("literal integer"); + return; + } + subComponent = token.i; advanceToken(); - acceptTokenClass(EHTokRightBracket); + if (! acceptTokenClass(EHTokRightBracket)) { + expected("]"); + break; + } + } + // (COMMA SPACEN)opt + HlslToken spaceDesc; + if (acceptTokenClass(EHTokComma)) { + if (! acceptIdentifier(spaceDesc)) { + expected ("space identifier"); + return; + } + } + // RIGHT_PAREN if (! acceptTokenClass(EHTokRightParen)) { expected(")"); break; } - // TODO: process the register information + 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 - do { - if (peekTokenClass(EHTokNone)) - return; - if (acceptTokenClass(EHTokRightAngle)) - break; - advanceToken(); - } while (true); - } else + } else if (peekTokenClass(EHTokLeftAngle)) + acceptAnnotations(qualifier); + else break; } while (true); diff --git a/hlsl/hlslGrammar.h b/hlsl/hlslGrammar.h index 437c316b..992eb5e9 100755 --- a/hlsl/hlslGrammar.h +++ b/hlsl/hlslGrammar.h @@ -59,16 +59,23 @@ namespace glslang { HlslGrammar& operator=(const HlslGrammar&); void expected(const char*); + void unimplemented(const char*); bool acceptIdentifier(HlslToken&); bool acceptCompilationUnit(); bool acceptDeclaration(TIntermNode*& node); bool acceptControlDeclaration(TIntermNode*& node); + 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 acceptAnnotations(TQualifier&); + bool acceptSamplerType(TType&); + bool acceptTextureType(TType&); bool acceptStruct(TType&); bool acceptStructDeclarationList(TTypeList*&); bool acceptFunctionParameters(TFunction&); @@ -78,11 +85,12 @@ namespace glslang { bool acceptExpression(TIntermTyped*&); bool acceptInitializer(TIntermTyped*&); bool acceptAssignmentExpression(TIntermTyped*&); + bool acceptConditionalExpression(TIntermTyped*&); bool acceptBinaryExpression(TIntermTyped*&, PrecedenceLevel); bool acceptUnaryExpression(TIntermTyped*&); bool acceptPostfixExpression(TIntermTyped*&); bool acceptConstructor(TIntermTyped*&); - bool acceptFunctionCall(HlslToken, TIntermTyped*&); + bool acceptFunctionCall(HlslToken, TIntermTyped*&, TIntermTyped* base = nullptr); bool acceptArguments(TFunction*, TIntermTyped*&); bool acceptLiteral(TIntermTyped*&); bool acceptCompoundStatement(TIntermNode*&); @@ -98,7 +106,7 @@ namespace glslang { 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 02c9c586..4b9f7e38 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -43,7 +43,6 @@ #include "../glslang/OSDependent/osinclude.h" -#include #include namespace glslang { @@ -52,20 +51,22 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : TParseContextBase(symbolTable, interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), - contextPragma(true, false), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), + contextPragma(true, false), + loopNestingLevel(0), annotationNestingLevel(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; globalUniformDefaults.clear(); - globalUniformDefaults.layoutMatrix = ElmColumnMajor; + globalUniformDefaults.layoutMatrix = ElmRowMajor; globalUniformDefaults.layoutPacking = ElpStd140; globalBufferDefaults.clear(); - globalBufferDefaults.layoutMatrix = ElmColumnMajor; + globalBufferDefaults.layoutMatrix = ElmRowMajor; globalBufferDefaults.layoutPacking = ElpStd430; globalInputDefaults.clear(); @@ -82,12 +83,23 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int 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() { } +void HlslParseContext::initializeExtensionBehavior() +{ + TParseContextBase::initializeExtensionBehavior(); + + // HLSL allows #line by default. + extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhEnable; +} + void HlslParseContext::setLimits(const TBuiltInResource& r) { resources = r; @@ -104,16 +116,313 @@ bool HlslParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner& currentScanner = &input; ppContext.setInput(input, versionWillBeError); - HlslScanContext::fillInKeywordMap(); // TODO: right place, and include the delete too - 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; } +// +// Return true if this l-value node should be converted in some manner. +// For instance: turning a load aggregate into a store in an l-value. +// +bool HlslParseContext::shouldConvertLValue(const TIntermNode* node) const +{ + if (node == nullptr) + return false; + + const TIntermAggregate* lhsAsAggregate = node->getAsAggregate(); + + if (lhsAsAggregate != nullptr && lhsAsAggregate->getOp() == EOpImageLoad) + return true; + + return false; +} + +// +// Return a TLayoutFormat corresponding to the given texture type. +// +TLayoutFormat HlslParseContext::getLayoutFromTxType(const TSourceLoc& loc, const TType& txType) +{ + const int components = txType.getVectorSize(); + + const auto selectFormat = [this,&components](TLayoutFormat v1, TLayoutFormat v2, TLayoutFormat v4) { + if (intermediate.getNoStorageFormat()) + return ElfNone; + + return components == 1 ? v1 : + components == 2 ? v2 : v4; + }; + + switch (txType.getBasicType()) { + case EbtFloat: return selectFormat(ElfR32f, ElfRg32f, ElfRgba32f); + case EbtInt: return selectFormat(ElfR32i, ElfRg32i, ElfRgba32i); + case EbtUint: return selectFormat(ElfR32ui, ElfRg32ui, ElfRgba32ui); + default: + error(loc, "unknown basic type in image format", "", ""); + return ElfNone; + } +} + +// +// Both test and if necessary, spit out an error, to see if the node is really +// an l-value that can be operated on this way. +// +// Returns true if there was an error. +// +bool HlslParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) +{ + if (shouldConvertLValue(node)) { + // if we're writing to a texture, it must be an RW form. + + TIntermAggregate* lhsAsAggregate = node->getAsAggregate(); + TIntermTyped* object = lhsAsAggregate->getSequence()[0]->getAsTyped(); + + if (!object->getType().getSampler().isImage()) { + error(loc, "operator[] on a non-RW texture must be an r-value", "", ""); + return true; + } + } + + // Let the base class check errors + return TParseContextBase::lValueErrorCheck(loc, op, node); +} + +// +// This function handles l-value conversions and verifications. It uses, but is not synonymous +// with lValueErrorCheck. That function accepts an l-value directly, while this one must be +// given the surrounding tree - e.g, with an assignment, so we can convert the assign into a +// series of other image operations. +// +// Most things are passed through unmodified, except for error checking. +// +TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* op, TIntermTyped* node) +{ + if (node == nullptr) + return nullptr; + + TIntermBinary* nodeAsBinary = node->getAsBinaryNode(); + TIntermUnary* nodeAsUnary = node->getAsUnaryNode(); + TIntermAggregate* sequence = nullptr; + + TIntermTyped* lhs = nodeAsUnary ? nodeAsUnary->getOperand() : + nodeAsBinary ? nodeAsBinary->getLeft() : + nullptr; + + // Early bail out if there is no conversion to apply + if (!shouldConvertLValue(lhs)) { + if (lhs != nullptr) + if (lValueErrorCheck(loc, op, lhs)) + return nullptr; + return node; + } + + // *** If we get here, we're going to apply some conversion to an l-value. + + // Helper to create a load. + const auto makeLoad = [&](TIntermSymbol* rhsTmp, TIntermTyped* object, TIntermTyped* coord, const TType& derefType) { + TIntermAggregate* loadOp = new TIntermAggregate(EOpImageLoad); + loadOp->setLoc(loc); + loadOp->getSequence().push_back(object); + loadOp->getSequence().push_back(intermediate.addSymbol(*coord->getAsSymbolNode())); + loadOp->setType(derefType); + + sequence = intermediate.growAggregate(sequence, + intermediate.addAssign(EOpAssign, rhsTmp, loadOp, loc), + loc); + }; + + // Helper to create a store. + const auto makeStore = [&](TIntermTyped* object, TIntermTyped* coord, TIntermSymbol* rhsTmp) { + TIntermAggregate* storeOp = new TIntermAggregate(EOpImageStore); + storeOp->getSequence().push_back(object); + storeOp->getSequence().push_back(coord); + storeOp->getSequence().push_back(intermediate.addSymbol(*rhsTmp)); + storeOp->setLoc(loc); + storeOp->setType(TType(EbtVoid)); + + sequence = intermediate.growAggregate(sequence, storeOp); + }; + + // Helper to create an assign. + const auto makeBinary = [&](TOperator op, TIntermTyped* lhs, TIntermTyped* rhs) { + sequence = intermediate.growAggregate(sequence, + intermediate.addBinaryNode(op, lhs, rhs, loc, lhs->getType()), + loc); + }; + + // Helper to complete sequence by adding trailing variable, so we evaluate to the right value. + const auto finishSequence = [&](TIntermSymbol* rhsTmp, const TType& derefType) { + // Add a trailing use of the temp, so the sequence returns the proper value. + sequence = intermediate.growAggregate(sequence, intermediate.addSymbol(*rhsTmp)); + sequence->setOperator(EOpSequence); + sequence->setLoc(loc); + sequence->setType(derefType); + + return sequence; + }; + + // Helper to add unary op + const auto makeUnary = [&](TOperator op, TIntermSymbol* rhsTmp) { + sequence = intermediate.growAggregate(sequence, + intermediate.addUnaryNode(op, intermediate.addSymbol(*rhsTmp), loc, + rhsTmp->getType()), + loc); + }; + + // helper to create a temporary variable + const auto addTmpVar = [&](const char* name, const TType& derefType) { + TVariable* tmpVar = makeInternalVariable(name, derefType); + tmpVar->getWritableType().getQualifier().makeTemporary(); + return intermediate.addSymbol(*tmpVar, loc); + }; + + TIntermAggregate* lhsAsAggregate = lhs->getAsAggregate(); + TIntermTyped* object = lhsAsAggregate->getSequence()[0]->getAsTyped(); + TIntermTyped* coord = lhsAsAggregate->getSequence()[1]->getAsTyped(); + + const TSampler& texSampler = object->getType().getSampler(); + + const TType objDerefType(texSampler.type, EvqTemporary, texSampler.vectorSize); + + if (nodeAsBinary) { + TIntermTyped* rhs = nodeAsBinary->getRight(); + const TOperator assignOp = nodeAsBinary->getOp(); + + bool isModifyOp = false; + + switch (assignOp) { + case EOpAddAssign: + case EOpSubAssign: + case EOpMulAssign: + case EOpVectorTimesMatrixAssign: + case EOpVectorTimesScalarAssign: + case EOpMatrixTimesScalarAssign: + case EOpMatrixTimesMatrixAssign: + case EOpDivAssign: + case EOpModAssign: + case EOpAndAssign: + case EOpInclusiveOrAssign: + case EOpExclusiveOrAssign: + case EOpLeftShiftAssign: + case EOpRightShiftAssign: + isModifyOp = true; + // fall through... + case EOpAssign: + { + // Since this is an lvalue, we'll convert an image load to a sequence like this (to still provide the value): + // OpSequence + // OpImageStore(object, lhs, rhs) + // rhs + // But if it's not a simple symbol RHS (say, a fn call), we don't want to duplicate the RHS, so we'll convert + // instead to this: + // OpSequence + // rhsTmp = rhs + // OpImageStore(object, coord, rhsTmp) + // rhsTmp + // If this is a read-modify-write op, like +=, we issue: + // OpSequence + // coordtmp = load's param1 + // rhsTmp = OpImageLoad(object, coordTmp) + // rhsTmp op= rhs + // OpImageStore(object, coordTmp, rhsTmp) + // rhsTmp + + TIntermSymbol* rhsTmp = rhs->getAsSymbolNode(); + TIntermTyped* coordTmp = coord; + + if (rhsTmp == nullptr || isModifyOp) { + rhsTmp = addTmpVar("storeTemp", objDerefType); + + // Assign storeTemp = rhs + if (isModifyOp) { + // We have to make a temp var for the coordinate, to avoid evaluating it twice. + coordTmp = addTmpVar("coordTemp", coord->getType()); + makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1] + makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp) + } + + // rhsTmp op= rhs. + makeBinary(assignOp, intermediate.addSymbol(*rhsTmp), rhs); + } + + makeStore(object, coordTmp, rhsTmp); // add a store + return finishSequence(rhsTmp, objDerefType); // return rhsTmp from sequence + } + + default: + break; + } + } + + if (nodeAsUnary) { + const TOperator assignOp = nodeAsUnary->getOp(); + + switch (assignOp) { + case EOpPreIncrement: + case EOpPreDecrement: + { + // We turn this into: + // OpSequence + // coordtmp = load's param1 + // rhsTmp = OpImageLoad(object, coordTmp) + // rhsTmp op + // OpImageStore(object, coordTmp, rhsTmp) + // rhsTmp + + TIntermSymbol* rhsTmp = addTmpVar("storeTemp", objDerefType); + TIntermTyped* coordTmp = addTmpVar("coordTemp", coord->getType()); + + makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1] + makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp) + makeUnary(assignOp, rhsTmp); // op rhsTmp + makeStore(object, coordTmp, rhsTmp); // OpImageStore(object, coordTmp, rhsTmp) + return finishSequence(rhsTmp, objDerefType); // return rhsTmp from sequence + } + + case EOpPostIncrement: + case EOpPostDecrement: + { + // We turn this into: + // OpSequence + // coordtmp = load's param1 + // rhsTmp1 = OpImageLoad(object, coordTmp) + // rhsTmp2 = rhsTmp1 + // rhsTmp2 op + // OpImageStore(object, coordTmp, rhsTmp2) + // rhsTmp1 (pre-op value) + TIntermSymbol* rhsTmp1 = addTmpVar("storeTempPre", objDerefType); + TIntermSymbol* rhsTmp2 = addTmpVar("storeTempPost", objDerefType); + TIntermTyped* coordTmp = addTmpVar("coordTemp", coord->getType()); + + makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1] + makeLoad(rhsTmp1, object, coordTmp, objDerefType); // rhsTmp1 = OpImageLoad(object, coordTmp) + makeBinary(EOpAssign, rhsTmp2, rhsTmp1); // rhsTmp2 = rhsTmp1 + makeUnary(assignOp, rhsTmp2); // rhsTmp op + makeStore(object, coordTmp, rhsTmp2); // OpImageStore(object, coordTmp, rhsTmp2) + return finishSequence(rhsTmp1, objDerefType); // return rhsTmp from sequence + } + + default: + break; + } + } + + if (lhs) + if (lValueErrorCheck(loc, op, lhs)) + return nullptr; + + return node; +} + void HlslParseContext::handlePragma(const TSourceLoc& loc, const TVector& tokens) { if (pragmaCallback) @@ -217,69 +526,6 @@ bool HlslParseContext::parseVectorFields(const TSourceLoc& loc, const TString& c return true; } -// -// Used to output syntax, parsing, and semantic errors. -// - -void HlslParseContext::outputMessage(const TSourceLoc& loc, const char* szReason, - const char* szToken, - const char* szExtraInfoFormat, - TPrefixType prefix, va_list args) -{ - const int maxSize = MaxTokenLength + 200; - char szExtraInfo[maxSize]; - - safe_vsprintf(szExtraInfo, maxSize, szExtraInfoFormat, args); - - infoSink.info.prefix(prefix); - infoSink.info.location(loc); - infoSink.info << "'" << szToken << "' : " << szReason << " " << szExtraInfo << "\n"; - - if (prefix == EPrefixError) { - ++numErrors; - } -} - -void C_DECL HlslParseContext::error(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - if (messages & EShMsgOnlyPreprocessor) - return; - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); - va_end(args); -} - -void C_DECL HlslParseContext::warn(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - if (suppressWarnings()) - return; - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); - va_end(args); -} - -void C_DECL HlslParseContext::ppError(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); - va_end(args); -} - -void C_DECL HlslParseContext::ppWarn(const TSourceLoc& loc, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) -{ - va_list args; - va_start(args, szExtraInfoFormat); - outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixWarning, args); - va_end(args); -} - // // Handle seeing a variable identifier in the grammar. // @@ -296,19 +542,6 @@ TIntermTyped* HlslParseContext::handleVariable(const TSourceLoc& loc, TSymbol* s if (symbol && symbol->getNumExtensions()) requireExtensions(loc, symbol->getNumExtensions(), symbol->getExtensions(), symbol->getName().c_str()); - if (symbol && symbol->isReadOnly()) { - // All shared things containing an implicitly sized array must be copied up - // on first use, so that all future references will share its array structure, - // so that editing the implicit size will effect all nodes consuming it, - // and so that editing the implicit size won't change the shared one. - // - // If this is a variable or a block, check it and all it contains, but if this - // is a member of an anonymous block, check the whole block, as the whole block - // will need to be copied up if it contains an implicitly-sized array. - if (symbol->getType().containsImplicitlySizedArray() || (symbol->getAsAnonMember() && symbol->getAsAnonMember()->getAnonContainer().getType().containsImplicitlySizedArray())) - makeEditable(symbol); - } - const TVariable* variable; const TAnonMember* anon = symbol ? symbol->getAsAnonMember() : nullptr; TIntermTyped* node = nullptr; @@ -357,13 +590,47 @@ TIntermTyped* HlslParseContext::handleVariable(const TSourceLoc& loc, TSymbol* s return node; } +// +// Handle operator[] on any objects it applies to. Currently: +// Textures +// Buffers +// +TIntermTyped* HlslParseContext::handleBracketOperator(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index) +{ + // handle r-value operator[] on textures and images. l-values will be processed later. + if (base->getType().getBasicType() == EbtSampler && !base->isArray()) { + const TSampler& sampler = base->getType().getSampler(); + if (sampler.isImage() || sampler.isTexture()) { + TIntermAggregate* load = new TIntermAggregate(sampler.isImage() ? EOpImageLoad : EOpTextureFetch); + + load->setType(TType(sampler.type, EvqTemporary, sampler.vectorSize)); + load->setLoc(loc); + load->getSequence().push_back(base); + load->getSequence().push_back(index); + + // Textures need a MIP. First indirection is always to mip 0. If there's another, we'll add it + // later. + if (sampler.isTexture()) + load->getSequence().push_back(intermediate.addConstantUnion(0, loc, true)); + + return load; + } + } + + return nullptr; +} + // // Handle seeing a base[index] dereference in the grammar. // TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index) { - TIntermTyped* result = nullptr; + TIntermTyped* result = handleBracketOperator(loc, base, index); + if (result != nullptr) + return result; // it was handled as an operator[] + + bool flattened = false; int indexValue = 0; if (index->getQualifier().storage == EvqConst) { indexValue = index->getAsConstantUnion()->getConstArray()[0].getIConst(); @@ -381,15 +648,20 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, else { // at least one of base and index is variable... - if (base->getAsSymbolNode() && isIoResizeArray(base->getType())) - handleIoResizeArrayAccess(loc, base); + if (base->getAsSymbolNode() && shouldFlatten(base->getType())) { + if (index->getQualifier().storage != EvqConst) + error(loc, "Invalid variable index to flattened uniform array", base->getAsSymbolNode()->getName().c_str(), ""); - if (index->getQualifier().storage == EvqConst) { - if (base->getType().isImplicitlySizedArray()) - updateImplicitArraySize(loc, base, indexValue); - result = intermediate.addIndex(EOpIndexDirect, base, index, loc); + result = flattenAccess(base, indexValue); + flattened = (result != base); } else { - result = intermediate.addIndex(EOpIndexIndirect, base, index, loc); + if (index->getQualifier().storage == EvqConst) { + if (base->getType().isImplicitlySizedArray()) + updateImplicitArraySize(loc, base, indexValue); + result = intermediate.addIndex(EOpIndexDirect, base, index, loc); + } else { + result = intermediate.addIndex(EOpIndexIndirect, base, index, loc); + } } } @@ -397,13 +669,18 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, // Insert dummy error-recovery result result = intermediate.addConstantUnion(0.0, EbtFloat, loc); } else { - // Insert valid dereferenced result - TType newType(base->getType(), 0); // dereferenced type - if (base->getType().getQualifier().storage == EvqConst && index->getQualifier().storage == EvqConst) - newType.getQualifier().storage = EvqConst; - else - newType.getQualifier().storage = EvqTemporary; - result->setType(newType); + // If the array reference was flattened, it has the correct type. E.g, if it was + // a uniform array, it was flattened INTO a set of scalar uniforms, not scalar temps. + // In that case, we preserve the qualifiers. + if (!flattened) { + // Insert valid dereferenced result + TType newType(base->getType(), 0); // dereferenced type + if (base->getType().getQualifier().storage == EvqConst && index->getQualifier().storage == EvqConst) + newType.getQualifier().storage = EvqConst; + else + newType.getQualifier().storage = EvqTemporary; + result->setType(newType); + } } return result; @@ -414,125 +691,6 @@ void HlslParseContext::checkIndex(const TSourceLoc& /*loc*/, const TType& /*type // HLSL todo: any rules for index fixups? } -// Make a shared symbol have a non-shared version that can be edited by the current -// compile, such that editing its type will not change the shared version and will -// effect all nodes sharing it. -void HlslParseContext::makeEditable(TSymbol*& symbol) -{ - // copyUp() does a deep copy of the type. - symbol = symbolTable.copyUp(symbol); - - // Also, see if it's tied to IO resizing - if (isIoResizeArray(symbol->getType())) - ioArraySymbolResizeList.push_back(symbol); - - // Also, save it in the AST for linker use. - intermediate.addSymbolLinkageNode(linkage, *symbol); -} - -TVariable* HlslParseContext::getEditableVariable(const char* name) -{ - bool builtIn; - TSymbol* symbol = symbolTable.find(name, &builtIn); - if (builtIn) - makeEditable(symbol); - - return symbol->getAsVariable(); -} - -// Return true if this is a geometry shader input array or tessellation control output array. -bool HlslParseContext::isIoResizeArray(const TType& type) const -{ - return type.isArray() && - ((language == EShLangGeometry && type.getQualifier().storage == EvqVaryingIn) || - (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && ! type.getQualifier().patch)); -} - -// If an array is not isIoResizeArray() but is an io array, make sure it has the right size -void HlslParseContext::fixIoArraySize(const TSourceLoc& loc, TType& type) -{ - if (! type.isArray() || type.getQualifier().patch || symbolTable.atBuiltInLevel()) - return; - - assert(! isIoResizeArray(type)); - - if (type.getQualifier().storage != EvqVaryingIn || type.getQualifier().patch) - return; - - if (language == EShLangTessControl || language == EShLangTessEvaluation) { - if (type.getOuterArraySize() != resources.maxPatchVertices) { - if (type.isExplicitlySizedArray()) - error(loc, "tessellation input array size must be gl_MaxPatchVertices or implicitly sized", "[]", ""); - type.changeOuterArraySize(resources.maxPatchVertices); - } - } -} - -// Handle a dereference of a geometry shader input array or tessellation control output array. -// See ioArraySymbolResizeList comment in ParseHelper.h. -// -void HlslParseContext::handleIoResizeArrayAccess(const TSourceLoc& /*loc*/, TIntermTyped* base) -{ - TIntermSymbol* symbolNode = base->getAsSymbolNode(); - assert(symbolNode); - if (! symbolNode) - return; - - // fix array size, if it can be fixed and needs to be fixed (will allow variable indexing) - if (symbolNode->getType().isImplicitlySizedArray()) { - int newSize = getIoArrayImplicitSize(); - if (newSize > 0) - symbolNode->getWritableType().changeOuterArraySize(newSize); - } -} - -// If there has been an input primitive declaration (geometry shader) or an output -// number of vertices declaration(tessellation shader), make sure all input array types -// match it in size. Types come either from nodes in the AST or symbols in the -// symbol table. -// -// Types without an array size will be given one. -// Types already having a size that is wrong will get an error. -// -void HlslParseContext::checkIoArraysConsistency(const TSourceLoc& loc, bool tailOnly) -{ - int requiredSize = getIoArrayImplicitSize(); - if (requiredSize == 0) - return; - - const char* feature; - if (language == EShLangGeometry) - feature = TQualifier::getGeometryString(intermediate.getInputPrimitive()); - else if (language == EShLangTessControl) - feature = "vertices"; - else - feature = "unknown"; - - if (tailOnly) { - checkIoArrayConsistency(loc, requiredSize, feature, ioArraySymbolResizeList.back()->getWritableType(), ioArraySymbolResizeList.back()->getName()); - return; - } - - for (size_t i = 0; i < ioArraySymbolResizeList.size(); ++i) - checkIoArrayConsistency(loc, requiredSize, feature, ioArraySymbolResizeList[i]->getWritableType(), ioArraySymbolResizeList[i]->getName()); -} - -int HlslParseContext::getIoArrayImplicitSize() const -{ - if (language == EShLangGeometry) - return TQualifier::mapGeometryToSize(intermediate.getInputPrimitive()); - else if (language == EShLangTessControl) - return intermediate.getVertices() != TQualifier::layoutNotSet ? intermediate.getVertices() : 0; - else - return 0; -} - -void HlslParseContext::checkIoArrayConsistency(const TSourceLoc& /*loc*/, int requiredSize, const char* /*feature*/, TType& type, const TString& /*name*/) -{ - if (type.isImplicitlySizedArray()) - type.changeOuterArraySize(requiredSize); -} - // Handle seeing a binary node with a math operation. TIntermTyped* HlslParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right) { @@ -564,12 +722,41 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt variableCheck(base); // - // .length() can't be resolved until we later see the function-calling syntax. + // methods can't be resolved until we later see the function-calling syntax. // Save away the name in the AST for now. Processing is completed in - // handleLengthMethod(). + // handleLengthMethod(), etc. // if (field == "length") { return intermediate.addMethod(base, TType(EbtInt), &field, loc); + } else if (field == "CalculateLevelOfDetail" || + field == "CalculateLevelOfDetailUnclamped" || + field == "Gather" || + field == "GatherRed" || + field == "GatherGreen" || + field == "GatherBlue" || + field == "GatherAlpha" || + field == "GatherCmp" || + field == "GatherCmpRed" || + field == "GatherCmpGreen" || + field == "GatherCmpBlue" || + field == "GatherCmpAlpha" || + field == "GetDimensions" || + field == "GetSamplePosition" || + field == "Load" || + field == "Sample" || + field == "SampleBias" || + field == "SampleCmp" || + field == "SampleCmpLevelZero" || + field == "SampleGrad" || + field == "SampleLevel") { + // If it's not a method on a sampler object, we fall through in case it is a struct member. + if (base->getType().getBasicType() == EbtSampler) { + const TSampler& sampler = base->getType().getSampler(); + if (! sampler.isPureSampler()) { + const int vecSize = sampler.isShadow() ? 1 : 4; // TODO: handle arbitrary sample return sizes + return intermediate.addMethod(base, TType(sampler.type, EvqTemporary, vecSize), &field, loc); + } + } } // It's not .length() if we get to here. @@ -596,7 +783,16 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt return result; else { TType type(base->getBasicType(), EvqTemporary, fields.num); - return addConstructor(loc, base, type, mapTypeToConstructorOp(type)); + 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); } } @@ -606,7 +802,7 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt if (fields.num == 1) { TIntermTyped* index = intermediate.addConstantUnion(fields.offsets[0], loc); result = intermediate.addIndex(EOpIndexDirect, base, index, loc); - result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision)); + result->setType(TType(base->getBasicType(), EvqTemporary)); } else { TString vectorString = field; TIntermTyped* index = intermediate.addSwizzle(fields, loc); @@ -625,12 +821,16 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt } } 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(), ""); @@ -640,11 +840,171 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt return result; } +// Is this an IO variable that can't be passed down the stack? +// E.g., pipeline inputs to the vertex stage and outputs from the fragment stage. +bool HlslParseContext::shouldFlattenIO(const TType& type) const +{ + if (! inEntryPoint) + return false; + + const TStorageQualifier qualifier = type.getQualifier().storage; + + return type.isStruct() && + (qualifier == EvqVaryingIn || + qualifier == EvqVaryingOut); +} + +// Is this a uniform array which should be flattened? +bool HlslParseContext::shouldFlattenUniform(const TType& type) const +{ + const TStorageQualifier qualifier = type.getQualifier().storage; + + return type.isArray() && + intermediate.getFlattenUniformArrays() && + qualifier == EvqUniform && + type.isOpaque(); +} + +void HlslParseContext::flatten(const TSourceLoc& loc, const TVariable& variable) +{ + const TType& type = variable.getType(); + + // Presently, flattening of structure arrays is unimplemented. + // We handle one, or the other. + if (type.isArray() && type.isStruct()) { + error(loc, "cannot flatten structure array", variable.getName().c_str(), ""); + } + + if (type.isStruct()) + flattenStruct(variable); + + if (type.isArray()) + flattenArray(loc, variable); +} + +// 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::flattenStruct(const TVariable& variable) +{ + TVector 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; +} + +// Figure out mapping between an array's members and an +// equivalent set of individual variables. +// +// Assumes shouldFlatten() or equivalent was called first. +void HlslParseContext::flattenArray(const TSourceLoc& loc, const TVariable& variable) +{ + const TType& type = variable.getType(); + assert(type.isArray()); + + if (type.isImplicitlySizedArray()) + error(loc, "cannot flatten implicitly sized array", variable.getName().c_str(), ""); + + if (type.getArraySizes()->getNumDims() != 1) + error(loc, "cannot flatten multi-dimensional array", variable.getName().c_str(), ""); + + const int size = type.getCumulativeArraySize(); + + TVector memberVariables; + + const TType dereferencedType(type, 0); + int binding = type.getQualifier().layoutBinding; + + if (dereferencedType.isStruct() || dereferencedType.isArray()) { + error(loc, "cannot flatten array of aggregate types", variable.getName().c_str(), ""); + } + + for (int element=0; element < size; ++element) { + char elementNumBuf[20]; // sufficient for MAXINT + snprintf(elementNumBuf, sizeof(elementNumBuf)-1, "[%d]", element); + const TString memberName = variable.getName() + elementNumBuf; + + TVariable* memberVariable = makeInternalVariable(memberName.c_str(), dereferencedType); + memberVariable->getWritableType().getQualifier() = variable.getType().getQualifier(); + + memberVariable->getWritableType().getQualifier().layoutBinding = binding; + + if (binding != TQualifier::layoutBindingEnd) + ++binding; + + memberVariables.push_back(memberVariable); + intermediate.addSymbolLinkageNode(linkage, *memberVariable); + } + + flattenMap[variable.getUniqueId()] = memberVariables; +} + +// Turn an access into an aggregate that was flattened to instead be +// an access to the individual variable the 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. @@ -678,7 +1038,7 @@ TFunction* HlslParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFu // 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; } // @@ -710,12 +1070,23 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l 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(loc, *entryPointOutput); + assignLocations(*entryPointOutput); + } + } else + remapNonEntryPointIO(function); + + // Insert the $Global constant buffer. + // TODO: this design fails if new members are declared between function definitions. + if (! insertGlobalUniformBlock()) + error(loc, "failed to insert the global constant buffer", "uniform", ""); // // New symbol table scope for body of function plus its arguments @@ -727,7 +1098,7 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l // 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; @@ -740,13 +1111,20 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l if (! symbolTable.insert(*variable)) error(loc, "redefinition", variable->getName().c_str(), ""); else { + // get IO straightened out + if (inEntryPoint) { + if (shouldFlatten(*param.type)) + flatten(loc, *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); @@ -759,6 +1137,116 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l 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; + + if (currentFunctionType->getBasicType() == EbtVoid) { + error(loc, "void function cannot return a value", "return", ""); + return intermediate.addBranch(EOpReturn, loc); + } else if (*currentFunctionType != value->getType()) { + value = intermediate.addConversion(EOpReturn, *currentFunctionType, value); + if (value && *currentFunctionType != value->getType()) + value = intermediate.addShapeConversion(EOpReturn, *currentFunctionType, value); + if (value == nullptr) { + error(loc, "type does not match, or is not convertible to, the function's return type", "return", ""); + return 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, value); + returnSequence = intermediate.makeAggregate(returnSequence); + returnSequence = intermediate.growAggregate(returnSequence, intermediate.addBranch(EOpReturn, loc), 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 }; @@ -770,6 +1258,137 @@ void HlslParseContext::handleFunctionArgument(TFunction* function, TIntermTyped* 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 +{ + if (left == nullptr || right == nullptr) + return nullptr; + + const auto mustFlatten = [&](const TIntermTyped& node) { + return shouldFlatten(node.getType()) && node.getAsSymbolNode() && + flattenMap.find(node.getAsSymbolNode()->getId()) != flattenMap.end(); + }; + + const bool flattenLeft = mustFlatten(*left); + const bool flattenRight = mustFlatten(*right); + if (! flattenLeft && ! flattenRight) + return intermediate.addAssign(op, left, right, loc); + + TIntermAggregate* assignList = nullptr; + const TVector* leftVariables = nullptr; + const TVector* rightVariables = nullptr; + + // A temporary to store the right node's value, so we don't keep indirecting into it + // if it's not a simple symbol. + TVariable* rhsTempVar = nullptr; + + // If the RHS is a simple symbol node, we'll copy it for each member. + TIntermSymbol* cloneSymNode = nullptr; + + // Array structs are not yet handled in flattening. (Compilation error upstream, so + // this should never fire). + assert(!(left->getType().isStruct() && left->getType().isArray())); + + int memberCount = 0; + + // Track how many items there are to copy. + if (left->getType().isStruct()) + memberCount = (int)left->getType().getStruct()->size(); + if (left->getType().isArray()) + memberCount = left->getType().getCumulativeArraySize(); + + if (flattenLeft) + leftVariables = &flattenMap.find(left->getAsSymbolNode()->getId())->second; + + if (flattenRight) { + rightVariables = &flattenMap.find(right->getAsSymbolNode()->getId())->second; + } else { + // The RHS is not flattened. There are several cases: + // 1. 1 item to copy: Use the RHS directly. + // 2. >1 item, simple symbol RHS: we'll create a new TIntermSymbol node for each, but no assign to temp. + // 3. >1 item, complex RHS: assign it to a new temp variable, and create a TIntermSymbol for each member. + + if (memberCount <= 1) { + // case 1: we'll use the symbol directly below. Nothing to do. + } else { + if (right->getAsSymbolNode() != nullptr) { + // case 2: we'll copy the symbol per iteration below. + cloneSymNode = right->getAsSymbolNode(); + } else { + // case 3: assign to a temp, and indirect into that. + rhsTempVar = makeInternalVariable("flattenTemp", right->getType()); + rhsTempVar->getWritableType().getQualifier().makeTemporary(); + TIntermTyped* noFlattenRHS = intermediate.addSymbol(*rhsTempVar, loc); + + // Add this to the aggregate being built. + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, noFlattenRHS, right, loc), loc); + } + } + } + + const auto getMember = [&](bool flatten, TIntermTyped* node, + const TVector& memberVariables, int member, + TOperator op, const TType& memberType) -> TIntermTyped * { + TIntermTyped* subTree; + if (flatten) + subTree = intermediate.addSymbol(*memberVariables[member]); + else { + subTree = intermediate.addIndex(op, node, intermediate.addConstantUnion(member, loc), loc); + subTree->setType(memberType); + } + + return subTree; + }; + + // Return the proper RHS node: a new symbol from a TVariable, copy + // of an TIntermSymbol node, or sometimes the right node directly. + const auto getRHS = [&]() { + return rhsTempVar ? intermediate.addSymbol(*rhsTempVar, loc) : + cloneSymNode ? intermediate.addSymbol(*cloneSymNode) : + right; + }; + + // Handle struct assignment + if (left->getType().isStruct()) { + // 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(); + + for (int member = 0; member < (int)members.size(); ++member) { + TIntermTyped* subRight = getMember(flattenRight, getRHS(), *rightVariables, member, + EOpIndexDirectStruct, *members[member].type); + TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, member, + EOpIndexDirectStruct, *members[member].type); + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc), loc); + } + } + + // Handle array assignment + if (left->getType().isArray()) { + // If we get here, we are assigning to or from a whole array that must be + // flattened, so have to do member-by-member assignment: + + const TType dereferencedType(left->getType(), 0); + + for (int element=0; element < memberCount; ++element) { + // Add a new AST symbol node if we have a temp variable holding a complex RHS. + TIntermTyped* subRight = getMember(flattenRight, getRHS(), *rightVariables, element, + EOpIndexDirect, dereferencedType); + TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, element, + EOpIndexDirect, dereferencedType); + + assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc), loc); + } + } + + assert(assignList != nullptr); + assignList->setOperator(EOpSequence); + + return assignList; +} + // // HLSL atomic operations have slightly different arguments than // GLSL/AST/SPIRV. The semantics are converted below in decomposeIntrinsic. @@ -778,13 +1397,13 @@ void HlslParseContext::handleFunctionArgument(TFunction* function, TIntermTyped* TOperator HlslParseContext::mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage) { switch (op) { - case EOpInterlockedAdd: return isImage ? EOpImageAtomicAdd : EOpAtomicAdd; - case EOpInterlockedAnd: return isImage ? EOpImageAtomicAnd : EOpAtomicAnd; + case EOpInterlockedAdd: return isImage ? EOpImageAtomicAdd : EOpAtomicAdd; + case EOpInterlockedAnd: return isImage ? EOpImageAtomicAnd : EOpAtomicAnd; case EOpInterlockedCompareExchange: return isImage ? EOpImageAtomicCompSwap : EOpAtomicCompSwap; - case EOpInterlockedMax: return isImage ? EOpImageAtomicMax : EOpAtomicMax; - case EOpInterlockedMin: return isImage ? EOpImageAtomicMin : EOpAtomicMin; - case EOpInterlockedOr: return isImage ? EOpImageAtomicOr : EOpAtomicOr; - case EOpInterlockedXor: return isImage ? EOpImageAtomicXor : EOpAtomicXor; + case EOpInterlockedMax: return isImage ? EOpImageAtomicMax : EOpAtomicMax; + case EOpInterlockedMin: return isImage ? EOpImageAtomicMin : EOpAtomicMin; + case EOpInterlockedOr: return isImage ? EOpImageAtomicOr : EOpAtomicOr; + case EOpInterlockedXor: return isImage ? EOpImageAtomicXor : EOpAtomicXor; case EOpInterlockedExchange: return isImage ? EOpImageAtomicExchange : EOpAtomicExchange; case EOpInterlockedCompareStore: // TODO: ... default: @@ -794,24 +1413,60 @@ TOperator HlslParseContext::mapAtomicOp(const TSourceLoc& loc, TOperator op, boo } // -// Change texture parameters to match AST & SPIR-V semantics +// Create a combined sampler/texture from separate sampler and texture. // -void HlslParseContext::textureParameters(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments) +TIntermAggregate* HlslParseContext::handleSamplerTextureCombine(const TSourceLoc& loc, TIntermTyped* argTex, TIntermTyped* argSampler) +{ + TIntermAggregate* txcombine = new TIntermAggregate(EOpConstructTextureSampler); + + txcombine->getSequence().push_back(argTex); + txcombine->getSequence().push_back(argSampler); + + TSampler samplerType = argTex->getType().getSampler(); + samplerType.combined = true; + samplerType.shadow = argSampler->getType().getSampler().shadow; + + txcombine->setType(TType(samplerType, EvqTemporary)); + txcombine->setLoc(loc); + + return txcombine; +} + +// +// Decompose DX9 and DX10 sample intrinsics & object methods into AST +// +void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments) { if (!node || !node->getAsOperator()) return; + const auto clampReturn = [&loc, &node, this](TIntermTyped* result, const TSampler& sampler) { + // Sampler return must always be a vec4, but we can construct a shorter vector + result->setType(TType(node->getType().getBasicType(), EvqTemporary, node->getVectorSize())); + + if (sampler.vectorSize < (unsigned)node->getVectorSize()) { + // Too many components. Construct shorter vector from it. + const TType clampedType(result->getType().getBasicType(), EvqTemporary, sampler.vectorSize); + + const TOperator op = intermediate.mapTypeToConstructorOp(clampedType); + + result = constructBuiltIn(clampedType, op, result, loc, false); + } + + result->setLoc(loc); + return result; + }; + const TOperator op = node->getAsOperator()->getOp(); const TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr; switch (op) { + // **** DX9 intrinsics: **** case EOpTexture: { - // Texture with ddx & ddy is really gradient form - if (argAggregate->getSequence().size() == 4) { + // Texture with ddx & ddy is really gradient form in HLSL + if (argAggregate->getSequence().size() == 4) node->getAsAggregate()->setOperator(EOpTextureGrad); - break; - } break; } @@ -827,28 +1482,571 @@ void HlslParseContext::textureParameters(const TSourceLoc& loc, TIntermTyped*& n TIntermTyped* bias = intermediate.addIndex(EOpIndexDirect, arg1, w, loc); TOperator constructOp = EOpNull; - switch (arg0->getType().getSampler().dim) { + const TSampler& sampler = arg0->getType().getSampler(); + + switch (sampler.dim) { case Esd1D: constructOp = EOpConstructFloat; break; // 1D case Esd2D: constructOp = EOpConstructVec2; break; // 2D case Esd3D: constructOp = EOpConstructVec3; break; // 3D case EsdCube: constructOp = EOpConstructVec3; break; // also 3D default: break; } - + TIntermAggregate* constructCoord = new TIntermAggregate(constructOp); constructCoord->getSequence().push_back(arg1); constructCoord->setLoc(loc); + // The input vector should never be less than 2, since there's always a bias. + // The max is for safety, and should be a no-op. + constructCoord->setType(TType(arg1->getBasicType(), EvqTemporary, std::max(arg1->getVectorSize() - 1, 0))); + TIntermAggregate* tex = new TIntermAggregate(EOpTexture); tex->getSequence().push_back(arg0); // sampler tex->getSequence().push_back(constructCoord); // coordinate tex->getSequence().push_back(bias); // bias - tex->setLoc(loc); - node = tex; + + node = clampReturn(tex, sampler); break; } + // **** DX10 methods: **** + case EOpMethodSample: // fall through + case EOpMethodSampleBias: // ... + { + TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); + TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); + TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); + TIntermTyped* argBias = nullptr; + TIntermTyped* argOffset = nullptr; + const TSampler& sampler = argTex->getType().getSampler(); + + int nextArg = 3; + + if (op == EOpMethodSampleBias) // SampleBias has a bias arg + argBias = argAggregate->getSequence()[nextArg++]->getAsTyped(); + + TOperator textureOp = EOpTexture; + + if ((int)argAggregate->getSequence().size() == (nextArg+1)) { // last parameter is offset form + textureOp = EOpTextureOffset; + argOffset = argAggregate->getSequence()[nextArg++]->getAsTyped(); + } + + TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); + + TIntermAggregate* txsample = new TIntermAggregate(textureOp); + txsample->getSequence().push_back(txcombine); + txsample->getSequence().push_back(argCoord); + + if (argBias != nullptr) + txsample->getSequence().push_back(argBias); + + if (argOffset != nullptr) + txsample->getSequence().push_back(argOffset); + + node = clampReturn(txsample, sampler); + + break; + } + + case EOpMethodSampleGrad: // ... + { + TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); + TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); + TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); + TIntermTyped* argDDX = argAggregate->getSequence()[3]->getAsTyped(); + TIntermTyped* argDDY = argAggregate->getSequence()[4]->getAsTyped(); + TIntermTyped* argOffset = nullptr; + const TSampler& sampler = argTex->getType().getSampler(); + + TOperator textureOp = EOpTextureGrad; + + if (argAggregate->getSequence().size() == 6) { // last parameter is offset form + textureOp = EOpTextureGradOffset; + argOffset = argAggregate->getSequence()[5]->getAsTyped(); + } + + TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); + + TIntermAggregate* txsample = new TIntermAggregate(textureOp); + txsample->getSequence().push_back(txcombine); + txsample->getSequence().push_back(argCoord); + txsample->getSequence().push_back(argDDX); + txsample->getSequence().push_back(argDDY); + + if (argOffset != nullptr) + txsample->getSequence().push_back(argOffset); + + node = clampReturn(txsample, sampler); + + break; + } + + case EOpMethodGetDimensions: + { + // AST returns a vector of results, which we break apart component-wise into + // separate values to assign to the HLSL method's outputs, ala: + // tx . GetDimensions(width, height); + // float2 sizeQueryTemp = EOpTextureQuerySize + // width = sizeQueryTemp.X; + // height = sizeQueryTemp.Y; + + TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); + const TType& texType = argTex->getType(); + + assert(texType.getBasicType() == EbtSampler); + + const TSampler& sampler = texType.getSampler(); + const TSamplerDim dim = sampler.dim; + const bool isImage = sampler.isImage(); + const int numArgs = (int)argAggregate->getSequence().size(); + + int numDims = 0; + + switch (dim) { + case Esd1D: numDims = 1; break; // W + case Esd2D: numDims = 2; break; // W, H + case Esd3D: numDims = 3; break; // W, H, D + case EsdCube: numDims = 2; break; // W, H (cube) + case EsdBuffer: numDims = 1; break; // W (buffers) + default: + assert(0 && "unhandled texture dimension"); + } + + // Arrayed adds another dimension for the number of array elements + if (sampler.isArrayed()) + ++numDims; + + // Establish whether we're querying mip levels + const bool mipQuery = (numArgs > (numDims + 1)) && (!sampler.isMultiSample()); + + // AST assumes integer return. Will be converted to float if required. + TIntermAggregate* sizeQuery = new TIntermAggregate(isImage ? EOpImageQuerySize : EOpTextureQuerySize); + sizeQuery->getSequence().push_back(argTex); + // If we're querying an explicit LOD, add the LOD, which is always arg #1 + if (mipQuery) { + TIntermTyped* queryLod = argAggregate->getSequence()[1]->getAsTyped(); + sizeQuery->getSequence().push_back(queryLod); + } + sizeQuery->setType(TType(EbtUint, EvqTemporary, numDims)); + sizeQuery->setLoc(loc); + + // Return value from size query + TVariable* tempArg = makeInternalVariable("sizeQueryTemp", sizeQuery->getType()); + tempArg->getWritableType().getQualifier().makeTemporary(); + TIntermTyped* sizeQueryAssign = intermediate.addAssign(EOpAssign, + intermediate.addSymbol(*tempArg, loc), + sizeQuery, loc); + + // Compound statement for assigning outputs + TIntermAggregate* compoundStatement = intermediate.makeAggregate(sizeQueryAssign, loc); + // Index of first output parameter + const int outParamBase = mipQuery ? 2 : 1; + + for (int compNum = 0; compNum < numDims; ++compNum) { + TIntermTyped* indexedOut = nullptr; + TIntermSymbol* sizeQueryReturn = intermediate.addSymbol(*tempArg, loc); + + if (numDims > 1) { + TIntermTyped* component = intermediate.addConstantUnion(compNum, loc, true); + indexedOut = intermediate.addIndex(EOpIndexDirect, sizeQueryReturn, component, loc); + indexedOut->setType(TType(EbtUint, EvqTemporary, 1)); + indexedOut->setLoc(loc); + } else { + indexedOut = sizeQueryReturn; + } + + TIntermTyped* outParam = argAggregate->getSequence()[outParamBase + compNum]->getAsTyped(); + TIntermTyped* compAssign = intermediate.addAssign(EOpAssign, outParam, indexedOut, loc); + + compoundStatement = intermediate.growAggregate(compoundStatement, compAssign); + } + + // handle mip level parameter + if (mipQuery) { + TIntermTyped* outParam = argAggregate->getSequence()[outParamBase + numDims]->getAsTyped(); + + TIntermAggregate* levelsQuery = new TIntermAggregate(EOpTextureQueryLevels); + levelsQuery->getSequence().push_back(argTex); + levelsQuery->setType(TType(EbtUint, EvqTemporary, 1)); + levelsQuery->setLoc(loc); + + TIntermTyped* compAssign = intermediate.addAssign(EOpAssign, outParam, levelsQuery, loc); + compoundStatement = intermediate.growAggregate(compoundStatement, compAssign); + } + + // 2DMS formats query # samples, which needs a different query op + if (sampler.isMultiSample()) { + TIntermTyped* outParam = argAggregate->getSequence()[outParamBase + numDims]->getAsTyped(); + + TIntermAggregate* samplesQuery = new TIntermAggregate(EOpImageQuerySamples); + samplesQuery->getSequence().push_back(argTex); + samplesQuery->setType(TType(EbtUint, EvqTemporary, 1)); + samplesQuery->setLoc(loc); + + TIntermTyped* compAssign = intermediate.addAssign(EOpAssign, outParam, samplesQuery, loc); + compoundStatement = intermediate.growAggregate(compoundStatement, compAssign); + } + + compoundStatement->setOperator(EOpSequence); + compoundStatement->setLoc(loc); + compoundStatement->setType(TType(EbtVoid)); + + node = compoundStatement; + + break; + } + + case EOpMethodSampleCmp: // fall through... + case EOpMethodSampleCmpLevelZero: + { + TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); + TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); + TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); + TIntermTyped* argCmpVal = argAggregate->getSequence()[3]->getAsTyped(); + TIntermTyped* argOffset = nullptr; + + // optional offset value + if (argAggregate->getSequence().size() > 4) + argOffset = argAggregate->getSequence()[4]->getAsTyped(); + + const int coordDimWithCmpVal = argCoord->getType().getVectorSize() + 1; // +1 for cmp + + // AST wants comparison value as one of the texture coordinates + TOperator constructOp = EOpNull; + switch (coordDimWithCmpVal) { + // 1D can't happen: there's always at least 1 coordinate dimension + 1 cmp val + case 2: constructOp = EOpConstructVec2; break; + case 3: constructOp = EOpConstructVec3; break; + case 4: constructOp = EOpConstructVec4; break; + case 5: constructOp = EOpConstructVec4; break; // cubeArrayShadow, cmp value is separate arg. + default: assert(0); break; + } + + TIntermAggregate* coordWithCmp = new TIntermAggregate(constructOp); + coordWithCmp->getSequence().push_back(argCoord); + if (coordDimWithCmpVal != 5) // cube array shadow is special. + coordWithCmp->getSequence().push_back(argCmpVal); + coordWithCmp->setLoc(loc); + coordWithCmp->setType(TType(argCoord->getBasicType(), EvqTemporary, std::min(coordDimWithCmpVal, 4))); + + TOperator textureOp = (op == EOpMethodSampleCmpLevelZero ? EOpTextureLod : EOpTexture); + if (argOffset != nullptr) + textureOp = (op == EOpMethodSampleCmpLevelZero ? EOpTextureLodOffset : EOpTextureOffset); + + // Create combined sampler & texture op + TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); + TIntermAggregate* txsample = new TIntermAggregate(textureOp); + txsample->getSequence().push_back(txcombine); + txsample->getSequence().push_back(coordWithCmp); + + if (coordDimWithCmpVal == 5) // cube array shadow is special: cmp val follows coord. + txsample->getSequence().push_back(argCmpVal); + + // the LevelZero form uses 0 as an explicit LOD + if (op == EOpMethodSampleCmpLevelZero) + txsample->getSequence().push_back(intermediate.addConstantUnion(0.0, EbtFloat, loc, true)); + + // Add offset if present + if (argOffset != nullptr) + txsample->getSequence().push_back(argOffset); + + txsample->setType(node->getType()); + txsample->setLoc(loc); + node = txsample; + + break; + } + + case EOpMethodLoad: + { + TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); + TIntermTyped* argCoord = argAggregate->getSequence()[1]->getAsTyped(); + TIntermTyped* argOffset = nullptr; + TIntermTyped* lodComponent = nullptr; + TIntermTyped* coordSwizzle = nullptr; + + const TSampler& sampler = argTex->getType().getSampler(); + const bool isMS = sampler.isMultiSample(); + const bool isBuffer = sampler.dim == EsdBuffer; + const bool isImage = sampler.isImage(); + const TBasicType coordBaseType = argCoord->getType().getBasicType(); + + // Last component of coordinate is the mip level, for non-MS. we separate them here: + if (isMS || isBuffer || isImage) { + // MS, Buffer, and Image have no LOD + coordSwizzle = argCoord; + } else { + // Extract coordinate + TVectorFields coordFields(0,1,2,3); + coordFields.num = argCoord->getType().getVectorSize() - (isMS ? 0 : 1); + TIntermTyped* coordIdx = intermediate.addSwizzle(coordFields, loc); + coordSwizzle = intermediate.addIndex(EOpVectorSwizzle, argCoord, coordIdx, loc); + coordSwizzle->setType(TType(coordBaseType, EvqTemporary, coordFields.num)); + + // Extract LOD + TIntermTyped* lodIdx = intermediate.addConstantUnion(coordFields.num, loc, true); + lodComponent = intermediate.addIndex(EOpIndexDirect, argCoord, lodIdx, loc); + lodComponent->setType(TType(coordBaseType, EvqTemporary, 1)); + } + + const int numArgs = (int)argAggregate->getSequence().size(); + const bool hasOffset = ((!isMS && numArgs == 3) || (isMS && numArgs == 4)); + + // Create texel fetch + const TOperator fetchOp = (isImage ? EOpImageLoad : + hasOffset ? EOpTextureFetchOffset : + EOpTextureFetch); + TIntermAggregate* txfetch = new TIntermAggregate(fetchOp); + + // Build up the fetch + txfetch->getSequence().push_back(argTex); + txfetch->getSequence().push_back(coordSwizzle); + + if (isMS) { + // add 2DMS sample index + TIntermTyped* argSampleIdx = argAggregate->getSequence()[2]->getAsTyped(); + txfetch->getSequence().push_back(argSampleIdx); + } else if (isBuffer) { + // Nothing else to do for buffers. + } else if (isImage) { + // Nothing else to do for images. + } else { + // 2DMS and buffer have no LOD, but everything else does. + txfetch->getSequence().push_back(lodComponent); + } + + // Obtain offset arg, if there is one. + if (hasOffset) { + const int offsetPos = (isMS ? 3 : 2); + argOffset = argAggregate->getSequence()[offsetPos]->getAsTyped(); + txfetch->getSequence().push_back(argOffset); + } + + node = clampReturn(txfetch, sampler); + + break; + } + + case EOpMethodSampleLevel: + { + TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); + TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); + TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); + TIntermTyped* argLod = argAggregate->getSequence()[3]->getAsTyped(); + TIntermTyped* argOffset = nullptr; + const TSampler& sampler = argTex->getType().getSampler(); + + const int numArgs = (int)argAggregate->getSequence().size(); + + if (numArgs == 5) // offset, if present + argOffset = argAggregate->getSequence()[4]->getAsTyped(); + + const TOperator textureOp = (argOffset == nullptr ? EOpTextureLod : EOpTextureLodOffset); + TIntermAggregate* txsample = new TIntermAggregate(textureOp); + + TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); + + txsample->getSequence().push_back(txcombine); + txsample->getSequence().push_back(argCoord); + txsample->getSequence().push_back(argLod); + + if (argOffset != nullptr) + txsample->getSequence().push_back(argOffset); + + node = clampReturn(txsample, sampler); + + break; + } + + case EOpMethodGather: + { + TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); + TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); + TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); + TIntermTyped* argOffset = nullptr; + + // Offset is optional + if (argAggregate->getSequence().size() > 3) + argOffset = argAggregate->getSequence()[3]->getAsTyped(); + + const TOperator textureOp = (argOffset == nullptr ? EOpTextureGather : EOpTextureGatherOffset); + TIntermAggregate* txgather = new TIntermAggregate(textureOp); + + TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); + + txgather->getSequence().push_back(txcombine); + txgather->getSequence().push_back(argCoord); + // Offset if not given is implicitly channel 0 (red) + + if (argOffset != nullptr) + txgather->getSequence().push_back(argOffset); + + txgather->setType(node->getType()); + txgather->setLoc(loc); + node = txgather; + + break; + } + + case EOpMethodGatherRed: // fall through... + case EOpMethodGatherGreen: // ... + case EOpMethodGatherBlue: // ... + case EOpMethodGatherAlpha: // ... + case EOpMethodGatherCmpRed: // ... + case EOpMethodGatherCmpGreen: // ... + case EOpMethodGatherCmpBlue: // ... + case EOpMethodGatherCmpAlpha: // ... + { + int channel = 0; // the channel we are gathering + int cmpValues = 0; // 1 if there is a compare value (handier than a bool below) + + switch (op) { + case EOpMethodGatherCmpRed: cmpValues = 1; // fall through + case EOpMethodGatherRed: channel = 0; break; + case EOpMethodGatherCmpGreen: cmpValues = 1; // fall through + case EOpMethodGatherGreen: channel = 1; break; + case EOpMethodGatherCmpBlue: cmpValues = 1; // fall through + case EOpMethodGatherBlue: channel = 2; break; + case EOpMethodGatherCmpAlpha: cmpValues = 1; // fall through + case EOpMethodGatherAlpha: channel = 3; break; + default: assert(0); break; + } + + // For now, we have nothing to map the component-wise comparison forms + // to, because neither GLSL nor SPIR-V has such an opcode. Issue an + // unimplemented error instead. Most of the machinery is here if that + // should ever become available. + if (cmpValues) { + error(loc, "unimplemented: component-level gather compare", "", ""); + return; + } + + int arg = 0; + + TIntermTyped* argTex = argAggregate->getSequence()[arg++]->getAsTyped(); + TIntermTyped* argSamp = argAggregate->getSequence()[arg++]->getAsTyped(); + TIntermTyped* argCoord = argAggregate->getSequence()[arg++]->getAsTyped(); + TIntermTyped* argOffset = nullptr; + TIntermTyped* argOffsets[4] = { nullptr, nullptr, nullptr, nullptr }; + // TIntermTyped* argStatus = nullptr; // TODO: residency + TIntermTyped* argCmp = nullptr; + + const TSamplerDim dim = argTex->getType().getSampler().dim; + + const int argSize = (int)argAggregate->getSequence().size(); + bool hasStatus = (argSize == (5+cmpValues) || argSize == (8+cmpValues)); + bool hasOffset1 = false; + bool hasOffset4 = false; + + // Only 2D forms can have offsets. Discover if we have 0, 1 or 4 offsets. + if (dim == Esd2D) { + hasOffset1 = (argSize == (4+cmpValues) || argSize == (5+cmpValues)); + hasOffset4 = (argSize == (7+cmpValues) || argSize == (8+cmpValues)); + } + + assert(!(hasOffset1 && hasOffset4)); + + TOperator textureOp = EOpTextureGather; + + // Compare forms have compare value + if (cmpValues != 0) + argCmp = argOffset = argAggregate->getSequence()[arg++]->getAsTyped(); + + // Some forms have single offset + if (hasOffset1) { + textureOp = EOpTextureGatherOffset; // single offset form + argOffset = argAggregate->getSequence()[arg++]->getAsTyped(); + } + + // Some forms have 4 gather offsets + if (hasOffset4) { + textureOp = EOpTextureGatherOffsets; // note plural, for 4 offset form + for (int offsetNum = 0; offsetNum < 4; ++offsetNum) + argOffsets[offsetNum] = argAggregate->getSequence()[arg++]->getAsTyped(); + } + + // Residency status + if (hasStatus) { + // argStatus = argAggregate->getSequence()[arg++]->getAsTyped(); + error(loc, "unimplemented: residency status", "", ""); + return; + } + + TIntermAggregate* txgather = new TIntermAggregate(textureOp); + TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); + + TIntermTyped* argChannel = intermediate.addConstantUnion(channel, loc, true); + + txgather->getSequence().push_back(txcombine); + txgather->getSequence().push_back(argCoord); + + // AST wants an array of 4 offsets, where HLSL has separate args. Here + // we construct an array from the separate args. + if (hasOffset4) { + TType arrayType(EbtInt, EvqTemporary, 2); + TArraySizes arraySizes; + arraySizes.addInnerSize(4); + arrayType.newArraySizes(arraySizes); + + TIntermAggregate* initList = new TIntermAggregate(EOpNull); + + for (int offsetNum = 0; offsetNum < 4; ++offsetNum) + initList->getSequence().push_back(argOffsets[offsetNum]); + + argOffset = addConstructor(loc, initList, arrayType); + } + + // Add comparison value if we have one + if (argTex->getType().getSampler().isShadow()) + txgather->getSequence().push_back(argCmp); + + // Add offset (either 1, or an array of 4) if we have one + if (argOffset != nullptr) + txgather->getSequence().push_back(argOffset); + + txgather->getSequence().push_back(argChannel); + + txgather->setType(node->getType()); + txgather->setLoc(loc); + node = txgather; + + break; + } + + case EOpMethodCalculateLevelOfDetail: + case EOpMethodCalculateLevelOfDetailUnclamped: + { + TIntermTyped* argTex = argAggregate->getSequence()[0]->getAsTyped(); + TIntermTyped* argSamp = argAggregate->getSequence()[1]->getAsTyped(); + TIntermTyped* argCoord = argAggregate->getSequence()[2]->getAsTyped(); + + TIntermAggregate* txquerylod = new TIntermAggregate(EOpTextureQueryLod); + + TIntermAggregate* txcombine = handleSamplerTextureCombine(loc, argTex, argSamp); + txquerylod->getSequence().push_back(txcombine); + txquerylod->getSequence().push_back(argCoord); + + TIntermTyped* lodComponent = intermediate.addConstantUnion(0, loc, true); + TIntermTyped* lodComponentIdx = intermediate.addIndex(EOpIndexDirect, txquerylod, lodComponent, loc); + lodComponentIdx->setType(TType(EbtFloat, EvqTemporary, 1)); + + node = lodComponentIdx; + + // We cannot currently obtain the unclamped LOD + if (op == EOpMethodCalculateLevelOfDetailUnclamped) + error(loc, "unimplemented: CalculateLevelOfDetailUnclamped", "", ""); + + break; + } + + case EOpMethodGetSamplePosition: + { + error(loc, "unimplemented: GetSamplePosition", "", ""); + break; + } + default: break; // most pass through unchanged } @@ -859,6 +2057,27 @@ void HlslParseContext::textureParameters(const TSourceLoc& loc, TIntermTyped*& n // void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments) { + // Helper to find image data for image atomics: + // OpImageLoad(image[idx]) + // We take the image load apart and add its params to the atomic op aggregate node + const auto imageAtomicParams = [this, &loc, &node](TIntermAggregate* atomic, TIntermTyped* load) { + TIntermAggregate* loadOp = load->getAsAggregate(); + if (loadOp == nullptr) { + error(loc, "unknown image type in atomic operation", "", ""); + node = nullptr; + return; + } + + atomic->getSequence().push_back(loadOp->getSequence()[0]); + atomic->getSequence().push_back(loadOp->getSequence()[1]); + }; + + // Return true if this is an imageLoad, which we will change to an image atomic. + const auto isImageParam = [](TIntermTyped* image) { + TIntermAggregate* imageAggregate = image->getAsAggregate(); + return imageAggregate != nullptr && imageAggregate->getOp() == EOpImageLoad; + }; + // HLSL intrinsics can be pass through to native AST opcodes, or decomposed here to existing AST // opcodes for compatibility with existing software stacks. static const bool decomposeHlslIntrinsics = true; @@ -874,8 +2093,10 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& 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); @@ -1006,9 +2227,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); - TBasicType type0 = arg0->getBasicType(); - TIntermTyped* x = intermediate.addConstantUnion(0, loc, true); TIntermTyped* y = intermediate.addConstantUnion(1, loc, true); TIntermTyped* z = intermediate.addConstantUnion(2, loc, true); TIntermTyped* w = intermediate.addConstantUnion(3, loc, true); @@ -1039,27 +2258,43 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& case EOpInterlockedXor: // ... case EOpInterlockedExchange: // always has output arg { - TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); - TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); + TIntermTyped* arg0 = argAggregate->getSequence()[0]->getAsTyped(); // dest + TIntermTyped* arg1 = argAggregate->getSequence()[1]->getAsTyped(); // value + TIntermTyped* arg2 = nullptr; - const bool isImage = arg0->getType().isImage(); + if (argAggregate->getSequence().size() > 2) + arg2 = argAggregate->getSequence()[2]->getAsTyped(); + + const bool isImage = isImageParam(arg0); const TOperator atomicOp = mapAtomicOp(loc, op, isImage); - - if (argAggregate->getSequence().size() > 2) { - // optional output param is present. return value goes to arg2. - TIntermTyped* arg2 = argAggregate->getSequence()[2]->getAsTyped(); - - TIntermAggregate* atomic = new TIntermAggregate(atomicOp); - atomic->getSequence().push_back(arg0); + TIntermAggregate* atomic = new TIntermAggregate(atomicOp); + atomic->setType(arg0->getType()); + atomic->getWritableType().getQualifier().makeTemporary(); + atomic->setLoc(loc); + + if (isImage) { + // orig_value = imageAtomicOp(image, loc, data) + imageAtomicParams(atomic, arg0); atomic->getSequence().push_back(arg1); - atomic->setLoc(loc); - atomic->setType(arg0->getType()); - atomic->getWritableType().getQualifier().makeTemporary(); - node = intermediate.addAssign(EOpAssign, arg2, atomic, loc); + if (argAggregate->getSequence().size() > 2) { + node = intermediate.addAssign(EOpAssign, arg2, atomic, loc); + } else { + node = atomic; // no assignment needed, as there was no out var. + } } else { - // Set the matching operator. Since output is absent, this is all we need to do. - node->getAsAggregate()->setOperator(atomicOp); + // Normal memory variable: + // arg0 = mem, arg1 = data, arg2(optional,out) = orig_value + if (argAggregate->getSequence().size() > 2) { + // optional output param is present. return value goes to arg2. + atomic->getSequence().push_back(arg0); + atomic->getSequence().push_back(arg1); + + node = intermediate.addAssign(EOpAssign, arg2, atomic, loc); + } else { + // Set the matching operator. Since output is absent, this is all we need to do. + node->getAsAggregate()->setOperator(atomicOp); + } } break; @@ -1072,15 +2307,20 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& TIntermTyped* arg2 = argAggregate->getSequence()[2]->getAsTyped(); // value TIntermTyped* arg3 = argAggregate->getSequence()[3]->getAsTyped(); // orig - const bool isImage = arg0->getType().isImage(); + const bool isImage = isImageParam(arg0); TIntermAggregate* atomic = new TIntermAggregate(mapAtomicOp(loc, op, isImage)); - atomic->getSequence().push_back(arg0); - atomic->getSequence().push_back(arg1); - atomic->getSequence().push_back(arg2); atomic->setLoc(loc); atomic->setType(arg2->getType()); atomic->getWritableType().getQualifier().makeTemporary(); + if (isImage) { + imageAtomicParams(atomic, arg0); + } else { + atomic->getSequence().push_back(arg0); + } + + atomic->getSequence().push_back(arg1); + atomic->getSequence().push_back(arg2); node = intermediate.addAssign(EOpAssign, arg3, atomic, loc); break; @@ -1231,7 +2471,7 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct // // It's a constructor, of type 'type'. // - result = addConstructor(loc, arguments, type, op); + result = addConstructor(loc, arguments, type); if (result == nullptr) error(loc, "cannot construct with these arguments", type.getCompleteString().c_str(), ""); } @@ -1252,21 +2492,9 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct if (builtIn && fnCandidate->getNumExtensions()) requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str()); - if (arguments) { - // Make sure qualifications work for these arguments. - //TIntermAggregate* aggregate = arguments->getAsAggregate(); - //for (int i = 0; i < fnCandidate->getParamCount(); ++i) { - // // At this early point there is a slight ambiguity between whether an aggregate 'arguments' - // // is the single argument itself or its children are the arguments. Only one argument - // // means take 'arguments' itself as the one argument. - // TIntermNode* arg = fnCandidate->getParamCount() == 1 ? arguments : (aggregate ? aggregate->getSequence()[i] : arguments); - // TQualifier& formalQualifier = (*fnCandidate)[i].type->getQualifier(); - // TQualifier& argQualifier = arg->getAsTyped()->getQualifier(); - //} - - // Convert 'in' arguments - addInputArgumentConversions(*fnCandidate, arguments); // arguments may be modified if it's just a single argument node - } + // Convert 'in' arguments + if (arguments) + addInputArgumentConversions(*fnCandidate, arguments); op = fnCandidate->getBuiltInOp(); if (builtIn && op != EOpNull) { @@ -1307,8 +2535,8 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct result = addOutputArgumentConversions(*fnCandidate, *result->getAsAggregate()); } - decomposeIntrinsic(loc, result, arguments); - textureParameters(loc, result, arguments); + decomposeIntrinsic(loc, result, arguments); // HLSL->AST intrinsic decompositions + decomposeSampleMethods(loc, result, arguments); // HLSL->AST sample method decompositions } } @@ -1337,22 +2565,6 @@ TIntermTyped* HlslParseContext::handleLengthMethod(const TSourceLoc& loc, TFunct if (type.isRuntimeSizedArray()) { // Create a unary op and let the back end handle it return intermediate.addBuiltInFunctionCall(loc, EOpArrayLength, true, intermNode, TType(EbtInt)); - } else if (type.isImplicitlySizedArray()) { - if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) { - // We could be between a layout declaration that gives a built-in io array implicit size and - // a user redeclaration of that array, meaning we have to substitute its implicit size here - // without actually redeclaring the array. (It is an error to use a member before the - // redeclaration, but not an error to use the array name itself.) - const TString& name = intermNode->getAsSymbolNode()->getName(); - if (name == "gl_in" || name == "gl_out") - length = getIoArrayImplicitSize(); - } - if (length == 0) { - if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) - error(loc, "", function->getName().c_str(), "array must first be sized by a redeclaration or layout qualifier"); - else - error(loc, "", function->getName().c_str(), "array must be declared with a size before using this method"); - } } else length = type.getOuterArraySize(); } else if (type.isMatrix()) @@ -1377,28 +2589,54 @@ TIntermTyped* HlslParseContext::handleLengthMethod(const TSourceLoc& loc, TFunct 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) { + if (! function[i].type->getQualifier().isParamInput()) + continue; + // At this early point there is a slight ambiguity between whether an aggregate 'arguments' // is the single argument itself or its children are the arguments. Only one argument // means take 'arguments' itself as the one argument. - TIntermTyped* arg = function.getParamCount() == 1 ? arguments->getAsTyped() : (aggregate ? aggregate->getSequence()[i]->getAsTyped() : arguments->getAsTyped()); + TIntermTyped* arg = function.getParamCount() == 1 + ? arguments->getAsTyped() + : (aggregate ? aggregate->getSequence()[i]->getAsTyped() : arguments->getAsTyped()); if (*function[i].type != arg->getType()) { - if (function[i].type->getQualifier().isParamInput()) { - // 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; - } - } + // 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); + arg = intermediate.addShapeConversion(EOpFunctionCall, *function[i].type, arg); + setArg(i, arg); + } else { + if (shouldFlatten(arg->getType())) { + // Will make a two-level subtree. + // The deepest will copy member-by-member to build the structure to pass. + // The level above that will be a two-operand EOpComma sequence that follows the copy by the + // object itself. + TVariable* internalAggregate = makeInternalVariable("aggShadow", *function[i].type); + internalAggregate->getWritableType().getQualifier().makeTemporary(); + TIntermSymbol* internalSymbolNode = new TIntermSymbol(internalAggregate->getUniqueId(), + internalAggregate->getName(), + internalAggregate->getType()); + internalSymbolNode->setLoc(arg->getLoc()); + // This makes the deepest level, the member-wise copy + TIntermAggregate* assignAgg = handleAssign(arg->getLoc(), EOpAssign, internalSymbolNode, arg)->getAsAggregate(); + + // Now, pair that with the resulting aggregate. + assignAgg = intermediate.growAggregate(assignAgg, internalSymbolNode, arg->getLoc()); + assignAgg->setOperator(EOpComma); + assignAgg->setType(internalAggregate->getType()); + setArg(i, assignAgg); } } } @@ -1411,14 +2649,20 @@ void HlslParseContext::addInputArgumentConversions(const TFunction& function, TI // // Returns a node of a subtree that evaluates to the return value of the function. // -TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode) const +TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode) { TIntermSequence& arguments = intermNode.getSequence(); + const auto needsConversion = [&](int argNum) { + return function[argNum].type->getQualifier().isParamOutput() && + (*function[argNum].type != arguments[argNum]->getAsTyped()->getType() || + shouldConvertLValue(arguments[argNum]) || + shouldFlatten(arguments[argNum]->getAsTyped()->getType())); + }; // Will there be any output conversions? bool outputConversions = false; for (int i = 0; i < function.getParamCount(); ++i) { - if (*function[i].type != arguments[i]->getAsTyped()->getType() && function[i].type->getQualifier().storage == EvqOut) { + if (needsConversion(i)) { outputConversions = true; break; } @@ -1449,18 +2693,22 @@ TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& fu // Process each argument's conversion for (int i = 0; i < function.getParamCount(); ++i) { - if (*function[i].type != arguments[i]->getAsTyped()->getType()) { - if (function[i].type->getQualifier().isParamOutput()) { - // Out-qualified arguments need to use the topology set up above. - // do the " ...(tempArg, ...), arg = tempArg" bit from above - TVariable* tempArg = makeInternalVariable("tempArg", *function[i].type); - tempArg->getWritableType().getQualifier().makeTemporary(); - TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, intermNode.getLoc()); - TIntermTyped* tempAssign = intermediate.addAssign(EOpAssign, arguments[i]->getAsTyped(), tempArgNode, arguments[i]->getLoc()); - conversionTree = intermediate.growAggregate(conversionTree, tempAssign, arguments[i]->getLoc()); - // replace the argument with another node for the same tempArg variable - arguments[i] = intermediate.addSymbol(*tempArg, intermNode.getLoc()); - } + if (needsConversion(i)) { + // Out-qualified arguments needing conversion need to use the topology setup above. + // Do the " ...(tempArg, ...), arg = tempArg" bit from above. + + // Make a temporary for what the function expects the argument to look like. + TVariable* tempArg = makeInternalVariable("tempArg", *function[i].type); + tempArg->getWritableType().getQualifier().makeTemporary(); + TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, intermNode.getLoc()); + + // This makes the deepest level, the member-wise copy + TIntermTyped* tempAssign = handleAssign(arguments[i]->getLoc(), EOpAssign, arguments[i]->getAsTyped(), tempArgNode); + tempAssign = handleLvalue(arguments[i]->getLoc(), "assign", tempAssign); + conversionTree = intermediate.growAggregate(conversionTree, tempAssign, arguments[i]->getLoc()); + + // replace the argument with another node for the same tempArg variable + arguments[i] = intermediate.addSymbol(*tempArg, intermNode.getLoc()); } } @@ -1500,11 +2748,6 @@ void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fn } const TIntermSequence& aggArgs = *argp; // only valid when unaryArg is nullptr - // built-in texturing functions get their return value precision from the precision of the sampler - if (fnCandidate.getType().getQualifier().precision == EpqNone && - fnCandidate.getParamCount() > 0 && fnCandidate[0].type->getBasicType() == EbtSampler) - callNode.getQualifier().precision = arg0->getQualifier().precision; - switch (callNode.getOp()) { case EOpTextureGather: case EOpTextureGatherOffset: @@ -1607,11 +2850,6 @@ void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fn case EOpInterpolateAtCentroid: case EOpInterpolateAtSample: case EOpInterpolateAtOffset: - // "For the interpolateAt* functions, the call will return a precision - // qualification matching the precision of the 'interpolant' argument to - // the function call." - callNode.getQualifier().precision = arg0->getQualifier().precision; - // Make sure the first argument is an interpolant, or an array element of an interpolant if (arg0->getType().getQualifier().storage != EvqVaryingIn) { // It might still be an array element. @@ -1637,7 +2875,7 @@ void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fn // TFunction* HlslParseContext::handleConstructorCall(const TSourceLoc& loc, const TType& type) { - TOperator op = mapTypeToConstructorOp(type); + TOperator op = intermediate.mapTypeToConstructorOp(type); if (op == EOpNull) { error(loc, "cannot construct this type", type.getBasicString(), ""); @@ -1653,158 +2891,222 @@ TFunction* HlslParseContext::handleConstructorCall(const TSourceLoc& loc, const // 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_DISPATCHTHREADID") + qualifier.builtIn = EbvLocalInvocationId; + 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; + else if( semanticUpperCase == "SV_COVERAGE") + qualifier.builtIn = EbvSampleMask; + + //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; need ARB_shader_stencil_export", "SV_STENCILREF", ""); + else if( semanticUpperCase == "SV_GROUPINDEX") + error(loc, "unimplemented", "SV_GROUPINDEX", ""); } // -// Given a type, find what operation would fully construct it. +// Handle seeing something like "PACKOFFSET LEFT_PAREN c[Subcomponent][.component] RIGHT_PAREN" // -TOperator HlslParseContext::mapTypeToConstructorOp(const TType& type) const +// 'location' has the "c[Subcomponent]" part. +// 'component' points to the "component" part, or nullptr if not present. +// +void HlslParseContext::handlePackOffset(const TSourceLoc& loc, TQualifier& qualifier, const glslang::TString& location, + const glslang::TString* component) { - TOperator op = EOpNull; + if (location.size() == 0 || location[0] != 'c') { + error(loc, "expected 'c'", "packoffset", ""); + return; + } + if (location.size() == 1) + return; + if (! isdigit(location[1])) { + error(loc, "expected number after 'c'", "packoffset", ""); + return; + } - switch (type.getBasicType()) { - case EbtStruct: - op = EOpConstructStruct; - break; - case EbtSampler: - if (type.getSampler().combined) - op = EOpConstructTextureSampler; - break; - case EbtFloat: - if (type.isMatrix()) { - switch (type.getMatrixCols()) { - case 2: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructMat2x2; break; - case 3: op = EOpConstructMat2x3; break; - case 4: op = EOpConstructMat2x4; break; - default: break; // some compilers want this - } - break; - case 3: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructMat3x2; break; - case 3: op = EOpConstructMat3x3; break; - case 4: op = EOpConstructMat3x4; break; - default: break; // some compilers want this - } - break; - case 4: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructMat4x2; break; - case 3: op = EOpConstructMat4x3; break; - case 4: op = EOpConstructMat4x4; break; - default: break; // some compilers want this - } - break; - default: break; // some compilers want this - } - } else { - switch (type.getVectorSize()) { - case 1: op = EOpConstructFloat; break; - case 2: op = EOpConstructVec2; break; - case 3: op = EOpConstructVec3; break; - case 4: op = EOpConstructVec4; break; - default: break; // some compilers want this - } + qualifier.layoutOffset = 16 * atoi(location.substr(1, location.size()).c_str()); + if (component != nullptr) { + int componentOffset = 0; + switch ((*component)[0]) { + case 'x': componentOffset = 0; break; + case 'y': componentOffset = 4; break; + case 'z': componentOffset = 8; break; + case 'w': componentOffset = 12; break; + default: + componentOffset = -1; + break; } - break; - case EbtDouble: - if (type.getMatrixCols()) { - switch (type.getMatrixCols()) { - case 2: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructDMat2x2; break; - case 3: op = EOpConstructDMat2x3; break; - case 4: op = EOpConstructDMat2x4; break; - default: break; // some compilers want this - } - break; - case 3: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructDMat3x2; break; - case 3: op = EOpConstructDMat3x3; break; - case 4: op = EOpConstructDMat3x4; break; - default: break; // some compilers want this - } - break; - case 4: - switch (type.getMatrixRows()) { - case 2: op = EOpConstructDMat4x2; break; - case 3: op = EOpConstructDMat4x3; break; - case 4: op = EOpConstructDMat4x4; break; - default: break; // some compilers want this - } - break; - } - } else { - switch (type.getVectorSize()) { - case 1: op = EOpConstructDouble; break; - case 2: op = EOpConstructDVec2; break; - case 3: op = EOpConstructDVec3; break; - case 4: op = EOpConstructDVec4; break; - default: break; // some compilers want this - } + if (componentOffset < 0 || component->size() > 1) { + error(loc, "expected {x, y, z, w} for component", "packoffset", ""); + return; } - break; - case EbtInt: - switch (type.getVectorSize()) { - case 1: op = EOpConstructInt; break; - case 2: op = EOpConstructIVec2; break; - case 3: op = EOpConstructIVec3; break; - case 4: op = EOpConstructIVec4; break; - default: break; // some compilers want this - } - break; - case EbtUint: - switch (type.getVectorSize()) { - case 1: op = EOpConstructUint; break; - case 2: op = EOpConstructUVec2; break; - case 3: op = EOpConstructUVec3; break; - case 4: op = EOpConstructUVec4; break; - default: break; // some compilers want this - } - break; - case EbtBool: - switch (type.getVectorSize()) { - case 1: op = EOpConstructBool; break; - case 2: op = EOpConstructBVec2; break; - case 3: op = EOpConstructBVec3; break; - case 4: op = EOpConstructBVec4; break; - default: break; // some compilers want this + qualifier.layoutOffset += componentOffset; + } +} + +// +// Handle seeing something like "REGISTER LEFT_PAREN [shader_profile,] Type# RIGHT_PAREN" +// +// 'profile' points to the shader_profile part, or nullptr if not present. +// 'desc' is the type# part. +// +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", ""); + + if (desc.size() < 1) { + error(loc, "expected register type", "register", ""); + return; + } + + int regNumber = 0; + if (desc.size() > 1) { + if (isdigit(desc[1])) + regNumber = atoi(desc.substr(1, desc.size()).c_str()); + else { + error(loc, "expected register number after register type", "register", ""); + return; } + } + + // TODO: learn what all these really mean and how they interact with regNumber and subComponent + switch (desc[0]) { + case 'b': + case 't': + case 'c': + case 's': + qualifier.layoutBinding = regNumber + subComponent; break; default: + warn(loc, "ignoring unrecognized register type", "register", "%c", desc[0]); break; } - return op; + // space + unsigned int setNumber; + const auto crackSpace = [&]() -> bool { + 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; + } } // @@ -2157,23 +3459,17 @@ void HlslParseContext::globalQualifierFix(const TSourceLoc&, TQualifier& qualifi // '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) dst.storage = src.storage; else if ((dst.storage == EvqIn && src.storage == EvqOut) || - (dst.storage == EvqOut && src.storage == EvqIn)) + (dst.storage == EvqOut && src.storage == EvqIn)) dst.storage = EvqInOut; else if ((dst.storage == EvqIn && src.storage == EvqConst) || - (dst.storage == EvqConst && src.storage == EvqIn)) + (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), ""); - - // Precision qualifiers - if (dst.precision == EpqNone || (force && src.precision != EpqNone)) - dst.precision = src.precision; // Layout qualifiers mergeObjectLayoutQualifiers(dst, src, false); @@ -2300,14 +3596,6 @@ void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier, symbolTable.insert(*symbol); newDeclaration = true; - if (! symbolTable.atBuiltInLevel()) { - if (isIoResizeArray(type)) { - ioArraySymbolResizeList.push_back(symbol); - checkIoArraysConsistency(loc, true); - } else - fixIoArraySize(loc, symbol->getWritableType()); - } - return; } if (symbol->getAsAnonMember()) { @@ -2332,15 +3620,10 @@ void HlslParseContext::declareArray(const TSourceLoc& loc, TString& identifier, if (existingType.isExplicitlySizedArray()) { // be more lenient for input arrays to geometry shaders and tessellation control outputs, where the redeclaration is the same size - if (! (isIoResizeArray(type) && existingType.getOuterArraySize() == type.getOuterArraySize())) - error(loc, "redeclaration of array with size", identifier.c_str(), ""); return; } existingType.updateArraySizes(type); - - if (isIoResizeArray(type)) - checkIoArraysConsistency(loc); } void HlslParseContext::updateImplicitArraySize(const TSourceLoc& loc, TIntermNode *node, int index) @@ -2525,13 +3808,6 @@ void HlslParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& n symbolTable.insert(*block); - // Tracking for implicit sizing of array - if (isIoResizeArray(block->getType())) { - ioArraySymbolResizeList.push_back(block); - checkIoArraysConsistency(loc, true); - } else if (block->getType().isArray()) - fixIoArraySize(loc, block->getWritableType()); - // Save it in the AST for linker use. intermediate.addSymbolLinkageNode(linkage, *block); } @@ -2563,51 +3839,58 @@ void HlslParseContext::specializationCheck(const TSourceLoc& loc, const TType& t // 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 = ElmRowMajor; return; } if (id == TQualifier::getLayoutMatrixString(ElmRowMajor)) { - publicType.qualifier.layoutMatrix = ElmRowMajor; + qualifier.layoutMatrix = ElmColumnMajor; 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 { @@ -2615,65 +3898,78 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& pu // 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; } } @@ -2683,7 +3979,8 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& pu 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; } @@ -2698,7 +3995,7 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& pu // 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"; @@ -2713,38 +4010,38 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& pu 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 @@ -2760,13 +4057,13 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& pu 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 @@ -2776,7 +4073,7 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& pu 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; } } @@ -2786,7 +4083,7 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& pu 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") { @@ -2794,8 +4091,8 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& pu 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(), ""); } @@ -2811,7 +4108,8 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& pu 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; @@ -2824,24 +4122,26 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& pu 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; @@ -2849,28 +4149,34 @@ void HlslParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& pu 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; } } @@ -2951,6 +4257,10 @@ void HlslParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQuali // // 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) @@ -2967,57 +4277,96 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu 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 candidateList; + // create list of candidates to send + TVector candidateList; symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn); + + // can 'from' convert to 'to'? + const auto convertible = [this](const TType& from, const TType& to) -> bool { + if (from == to) + return true; - for (TVector::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) -> bool { + // 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) -> int { + 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; } // @@ -3026,16 +4375,11 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, const TFu // 'parseType' is the type part of the declaration (to the left) // 'arraySizes' is the arrayness tagged on the identifier (to the right) // -void HlslParseContext::declareTypedef(const TSourceLoc& loc, TString& identifier, const TType& parseType, TArraySizes* arraySizes) +void HlslParseContext::declareTypedef(const TSourceLoc& loc, TString& identifier, const TType& parseType, TArraySizes* /*arraySizes*/) { TType type; type.deepCopy(parseType); - // Arrayness is potentially coming both from the type and from the - // variable: "int[] a[];" or just one or the other. - // Merge it all to the type, so all arrayness is part of the type. - arrayDimMerge(type, arraySizes); - TVariable* typeSymbol = new TVariable(&identifier, type, true); if (! symbolTable.insert(*typeSymbol)) error(loc, "name already defined", "typedef", identifier.c_str()); @@ -3052,17 +4396,8 @@ void HlslParseContext::declareTypedef(const TSourceLoc& loc, TString& identifier // 'parseType' is the type part of the declaration (to the left) // 'arraySizes' is the arrayness tagged on the identifier (to the right) // -TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& identifier, const TType& parseType, TArraySizes* arraySizes, TIntermTyped* initializer) +TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& identifier, TType& type, TIntermTyped* initializer) { - TType type; - type.shallowCopy(parseType); - if (type.isImplicitlySizedArray()) { - // Because "int[] a = int[2](...), b = int[3](...)" makes two arrays a and b - // of different sizes, for this case sharing the shallow copy of arrayness - // with the parseType oversubscribes it, so get a deep copy of the arrayness. - type.newArraySizes(*parseType.getArraySizes()); - } - if (voidErrorCheck(loc, identifier, type.getBasicType())) return nullptr; @@ -3072,13 +4407,15 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i inheritGlobalDefaults(type.getQualifier()); + bool flattenVar = false; + // Declare the variable - if (arraySizes || type.isArray()) { - // Arrayness is potentially coming both from the type and from the - // variable: "int[] a[];" or just one or the other. - // Merge it all to the type, so all arrayness is part of the type. - arrayDimMerge(type, arraySizes); + if (type.isArray()) { + // array case declareArray(loc, identifier, type, symbol, newDeclaration); + flattenVar = shouldFlatten(type); + if (flattenVar) + flatten(loc, *symbol->getAsVariable()); } else { // non-array case if (! symbol) @@ -3093,6 +4430,9 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i // Deal with initializer TIntermNode* initNode = nullptr; if (symbol && initializer) { + if (flattenVar) + error(loc, "flattened array with initializer list unsupported", identifier.c_str(), ""); + TVariable* variable = symbol->getAsVariable(); if (! variable) { error(loc, "initializer requires a variable, not a member", identifier.c_str(), ""); @@ -3101,9 +4441,12 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, TString& i initNode = executeInitializer(loc, initializer, variable); } - // see if it's a linker-level object to track - if (newDeclaration && symbolTable.atGlobalLevel()) - intermediate.addSymbolLinkageNode(linkage, *symbol); + // see if it's a linker-level object to track. if it's flattened above, + // that process added linkage objects for the flattened symbols, we don't + // add the aggregate here. + if (!flattenVar) + if (newDeclaration && symbolTable.atGlobalLevel()) + intermediate.addSymbolLinkageNode(linkage, *symbol); return initNode; } @@ -3234,7 +4577,7 @@ TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TInterm // normal assigning of a value to a variable... specializationCheck(loc, initializer->getType(), "initializer"); TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc); - TIntermNode* initNode = intermediate.addAssign(EOpAssign, intermSymbol, initializer, loc); + TIntermNode* initNode = handleAssign(loc, EOpAssign, intermSymbol, initializer); if (! initNode) assignError(loc, "=", intermSymbol->getCompleteString(), initializer->getCompleteString()); @@ -3291,7 +4634,7 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co return nullptr; } - return addConstructor(loc, initList, arrayType, mapTypeToConstructorOp(arrayType)); + return addConstructor(loc, initList, arrayType); } else if (type.isStruct()) { if (type.getStruct()->size() != initList->getSequence().size()) { error(loc, "wrong number of structure members", "initializer list", ""); @@ -3303,28 +4646,45 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co 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()) { error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString().c_str()); return nullptr; } - } else { + } else if (type.isScalar()) { + if ((int)initList->getSequence().size() != 1) { + error(loc, "scalar expected one element:", "initializer list", type.getCompleteString().c_str()); + return nullptr; + } + } else { error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString().c_str()); return nullptr; } - // now that the subtree is processed, process this node - return addConstructor(loc, initList, type, mapTypeToConstructorOp(type)); + // Now that the subtree is processed, process this node as if the + // initializer list is a set of arguments to a constructor. + TIntermNode* emulatedConstructorArguments; + if (initList->getSequence().size() == 1) + emulatedConstructorArguments = initList->getSequence()[0]; + else + emulatedConstructorArguments = initList; + return addConstructor(loc, emulatedConstructorArguments, type); } // @@ -3333,12 +4693,13 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co // // Returns nullptr for an error or the constructed node (aggregate or typed) for no error. // -TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* node, const TType& type, TOperator op) +TIntermTyped* HlslParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* node, const TType& type) { if (node == nullptr || node->getAsTyped() == nullptr) return nullptr; TIntermAggregate* aggrNode = node->getAsAggregate(); + TOperator op = intermediate.mapTypeToConstructorOp(type); // Combined texture-sampler constructors are completely semantic checked // in constructorTextureSamplerError() @@ -3528,28 +4889,31 @@ TIntermTyped* HlslParseContext::constructAggregate(TIntermNode* node, const TTyp // // Do everything needed to add an interface block. // -void HlslParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, const TString* instanceName, TArraySizes* arraySizes) +void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TString* instanceName, TArraySizes* arraySizes) { + assert(type.getWritableStruct() != nullptr); + + TTypeList& typeList = *type.getWritableStruct(); // fix and check for member storage qualifiers and types that don't belong within a block for (unsigned int member = 0; member < typeList.size(); ++member) { TType& memberType = *typeList[member].type; TQualifier& memberQualifier = memberType.getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; globalQualifierFix(memberLoc, memberQualifier); - memberQualifier.storage = currentBlockQualifier.storage; + memberQualifier.storage = type.getQualifier().storage; } // This might be a redeclaration of a built-in block. If so, redeclareBuiltinBlock() will // do all the rest. - if (! symbolTable.atBuiltInLevel() && builtInName(*blockName)) { - redeclareBuiltinBlock(loc, typeList, *blockName, instanceName, arraySizes); - return; - } + //if (! symbolTable.atBuiltInLevel() && builtInName(*blockName)) { + // redeclareBuiltinBlock(loc, typeList, *blockName, instanceName, arraySizes); + // return; + //} // Make default block qualification, and adjust the member qualifications TQualifier defaultQualification; - switch (currentBlockQualifier.storage) { + switch (type.getQualifier().storage) { case EvqUniform: defaultQualification = globalUniformDefaults; break; case EvqBuffer: defaultQualification = globalBufferDefaults; break; case EvqVaryingIn: defaultQualification = globalInputDefaults; break; @@ -3559,12 +4923,12 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, // Special case for "push_constant uniform", which has a default of std430, // contrary to normal uniform defaults, and can't have a default tracked for it. - if (currentBlockQualifier.layoutPushConstant && ! currentBlockQualifier.hasPacking()) - currentBlockQualifier.layoutPacking = ElpStd430; + if (type.getQualifier().layoutPushConstant && ! type.getQualifier().hasPacking()) + type.getQualifier().layoutPacking = ElpStd430; // fix and check for member layout qualifiers - mergeObjectLayoutQualifiers(defaultQualification, currentBlockQualifier, true); + mergeObjectLayoutQualifiers(defaultQualification, type.getQualifier(), true); bool memberWithLocation = false; bool memberWithoutLocation = false; @@ -3588,7 +4952,7 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, if (memberQualifier.hasPacking()) error(memberLoc, "member of block cannot have a packing layout qualifier", typeList[member].type->getFieldName().c_str(), ""); if (memberQualifier.hasLocation()) { - switch (currentBlockQualifier.storage) { + switch (type.getQualifier().storage) { case EvqVaryingIn: case EvqVaryingOut: memberWithLocation = true; @@ -3604,55 +4968,30 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, } TQualifier newMemberQualification = defaultQualification; - mergeQualifiers(memberLoc, newMemberQualification, memberQualifier, false); + mergeQualifiers(newMemberQualification, memberQualifier); memberQualifier = newMemberQualification; } // Process the members - fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation); - fixBlockXfbOffsets(currentBlockQualifier, typeList); - fixBlockUniformOffsets(currentBlockQualifier, typeList); + fixBlockLocations(loc, type.getQualifier(), typeList, memberWithLocation, memberWithoutLocation); + fixBlockXfbOffsets(type.getQualifier(), typeList); + fixBlockUniformOffsets(type.getQualifier(), typeList); // reverse merge, so that currentBlockQualifier now has all layout information // (can't use defaultQualification directly, it's missing other non-layout-default-class qualifiers) - mergeObjectLayoutQualifiers(currentBlockQualifier, defaultQualification, true); + mergeObjectLayoutQualifiers(type.getQualifier(), defaultQualification, true); // // Build and add the interface block as a new type named 'blockName' // - TType blockType(&typeList, *blockName, currentBlockQualifier); + // Use the instance name as the interface name if one exists, else the block name. + const TString& interfaceName = (instanceName && !instanceName->empty()) ? *instanceName : type.getTypeName(); + + TType blockType(&typeList, interfaceName, type.getQualifier()); if (arraySizes) blockType.newArraySizes(*arraySizes); - // - // Don't make a user-defined type out of block name; that will cause an error - // if the same block name gets reused in a different interface. - // - // "Block names have no other use within a shader - // beyond interface matching; it is a compile-time error to use a block name at global scope for anything - // other than as a block name (e.g., use of a block name for a global variable name or function name is - // currently reserved)." - // - // Use the symbol table to prevent normal reuse of the block's name, as a variable entry, - // whose type is EbtBlock, but without all the structure; that will come from the type - // the instances point to. - // - TType blockNameType(EbtBlock, blockType.getQualifier().storage); - TVariable* blockNameVar = new TVariable(blockName, blockNameType); - if (! symbolTable.insert(*blockNameVar)) { - TSymbol* existingName = symbolTable.find(*blockName); - if (existingName->getType().getBasicType() == EbtBlock) { - if (existingName->getType().getQualifier().storage == blockType.getQualifier().storage) { - error(loc, "Cannot reuse block name within the same interface:", blockName->c_str(), blockType.getStorageQualifierString()); - return; - } - } else { - error(loc, "block name cannot redefine a non-block name", blockName->c_str(), ""); - return; - } - } - // Add the variable, as anonymous or named instanceName. // Make an anonymous variable if no name was provided. if (! instanceName) @@ -3661,23 +5000,24 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, TVariable& variable = *new TVariable(instanceName, blockType); if (! symbolTable.insert(variable)) { if (*instanceName == "") - error(loc, "nameless block contains a member that already has a name at global scope", blockName->c_str(), ""); + error(loc, "nameless block contains a member that already has a name at global scope", "" /* blockName->c_str() */, ""); else error(loc, "block instance name redefinition", variable.getName().c_str(), ""); return; } - if (isIoResizeArray(blockType)) { - ioArraySymbolResizeList.push_back(&variable); - checkIoArraysConsistency(loc, true); - } else - fixIoArraySize(loc, variable.getWritableType()); - // Save it in the AST for linker use. intermediate.addSymbolLinkageNode(linkage, variable); } +void HlslParseContext::finalizeGlobalUniformBlockLayout(TVariable& block) +{ + block.getWritableType().getQualifier().layoutPacking = ElpStd140; + block.getWritableType().getQualifier().layoutMatrix = ElmRowMajor; + fixBlockUniformOffsets(block.getType().getQualifier(), *block.getWritableType().getWritableStruct()); +} + // // "For a block, this process applies to the entire block, or until the first member // is reached that has a location layout qualifier. When a block member is declared with a location @@ -3758,7 +5098,7 @@ void HlslParseContext::fixBlockXfbOffsets(TQualifier& qualifier, TTypeList& type // Also, compute and save the total size of the block. For the block's size, arrayness // is not taken into account, as each element is backed by a separate buffer. // -void HlslParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& typeList) +void HlslParseContext::fixBlockUniformOffsets(const TQualifier& qualifier, TTypeList& typeList) { if (! qualifier.isUniformOrBuffer()) return; @@ -3776,19 +5116,16 @@ void HlslParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& // modify just the children's view of matrix layout, if there is one for this member TLayoutMatrix subMatrixLayout = typeList[member].type->getQualifier().layoutMatrix; int dummyStride; - int memberAlignment = intermediate.getBaseAlignment(*typeList[member].type, memberSize, dummyStride, qualifier.layoutPacking == ElpStd140, - subMatrixLayout != ElmNone ? subMatrixLayout == ElmRowMajor : qualifier.layoutMatrix == ElmRowMajor); + int memberAlignment = intermediate.getBaseAlignment(*typeList[member].type, memberSize, dummyStride, + qualifier.layoutPacking == ElpStd140, + subMatrixLayout != ElmNone ? subMatrixLayout == ElmRowMajor + : qualifier.layoutMatrix == ElmRowMajor); if (memberQualifier.hasOffset()) { // "The specified offset must be a multiple // of the base alignment of the type of the block member it qualifies, or a compile-time error results." if (! IsMultipleOfPow2(memberQualifier.layoutOffset, memberAlignment)) error(memberLoc, "must be a multiple of the member's alignment", "offset", ""); - // "It is a compile-time error to specify an offset that is smaller than the offset of the previous - // member in the block or that lies within the previous member of the block" - if (memberQualifier.layoutOffset < offset) - error(memberLoc, "cannot lie in previous members", "offset", ""); - // "The offset qualifier forces the qualified member to start at or after the specified // integral-constant expression, which will be its byte offset from the beginning of the buffer. // "The actual offset of a member is computed as @@ -3869,9 +5206,6 @@ void HlslParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) { assert(language == EShLangTessControl || language == EShLangGeometry); // const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices"; - - if (language == EShLangTessControl) - checkIoArraysConsistency(loc); } if (publicType.shaderQualifiers.invocations != TQualifier::layoutNotSet) { if (! intermediate.setInvocations(publicType.shaderQualifiers.invocations)) @@ -3887,11 +5221,6 @@ void HlslParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, case ElgTrianglesAdjacency: case ElgQuads: case ElgIsolines: - if (intermediate.setInputPrimitive(publicType.shaderQualifiers.geometry)) { - if (language == EShLangGeometry) - checkIoArraysConsistency(loc); - } else - error(loc, "cannot change previously set input primitive", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; default: error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h index ed1955eb..2eeba5ac 100755 --- a/hlsl/hlslParseHelper.h +++ b/hlsl/hlslParseHelper.h @@ -47,18 +47,11 @@ public: int version, EProfile, const SpvVersion& spvVersion, EShLanguage, TInfoSink&, bool forwardCompatible = false, EShMessages messages = EShMsgDefault); virtual ~HlslParseContext(); + void initializeExtensionBehavior(); + void setLimits(const TBuiltInResource&); bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false); - void getPreamble(std::string&); - - void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - void C_DECL ppError(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); - void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...); + virtual const char* getGlobalUniformBlockName() { return "$Global"; } void reservedPpErrorCheck(const TSourceLoc&, const char* /*name*/, const char* /*op*/) { } bool lineContinuationCheck(const TSourceLoc&, bool /*endOfComment*/) { return true; } @@ -68,32 +61,36 @@ public: void handlePragma(const TSourceLoc&, const TVector&); TIntermTyped* handleVariable(const TSourceLoc&, TSymbol* symbol, const TString* string); TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); + TIntermTyped* handleBracketOperator(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); void checkIndex(const TSourceLoc&, const TType&, int& index); - void makeEditable(TSymbol*&); - TVariable* getEditableVariable(const char* name); - bool isIoResizeArray(const TType&) const; - void fixIoArraySize(const TSourceLoc&, TType&); - void handleIoResizeArrayAccess(const TSourceLoc&, TIntermTyped* base); - void checkIoArraysConsistency(const TSourceLoc&, bool tailOnly = false); - int getIoArrayImplicitSize() const; - void checkIoArrayConsistency(const TSourceLoc&, int requiredSize, const char* feature, TType&, const TString&); - 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); + 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 textureParameters(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); + void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments); TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*); void addInputArgumentConversions(const TFunction&, TIntermNode*&) const; - TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&) const; + TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&); void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&); TFunction* handleConstructorCall(const TSourceLoc&, const TType&); - void handleSemantic(TType& type, const TString& semantic); + void handleSemantic(TSourceLoc, TQualifier&, const TString& semantic); + void handlePackOffset(const TSourceLoc&, TQualifier&, const glslang::TString& location, + const glslang::TString* component); + 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); bool parseVectorFields(const TSourceLoc&, const TString&, int vecSize, TVectorFields&); void assignError(const TSourceLoc&, const char* op, TString left, TString right); @@ -113,28 +110,29 @@ public: 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&); const TFunction* findFunction(const TSourceLoc& loc, const TFunction& call, bool& builtIn); void declareTypedef(const TSourceLoc&, TString& identifier, const TType&, TArraySizes* typeArray = 0); - TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, const TType&, TArraySizes* typeArray = 0, TIntermTyped* initializer = 0); - TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&, TOperator); + TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, TType&, TIntermTyped* initializer = 0); + TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&); TIntermTyped* constructAggregate(TIntermNode*, const TType&, int, const TSourceLoc&); TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset); - void declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = 0, TArraySizes* arraySizes = 0); + void declareBlock(const TSourceLoc&, TType&, const TString* instanceName = 0, TArraySizes* arraySizes = 0); + void finalizeGlobalUniformBlockLayout(TVariable& block); void fixBlockLocations(const TSourceLoc&, TQualifier&, TTypeList&, bool memberWithLocation, bool memberWithoutLocation); void fixBlockXfbOffsets(TQualifier&, TTypeList&); - void fixBlockUniformOffsets(TQualifier&, TTypeList&); + void fixBlockUniformOffsets(const TQualifier&, TTypeList&); void addQualifierToExisting(const TSourceLoc&, TQualifier, const TString& identifier); void addQualifierToExisting(const TSourceLoc&, TQualifier, TIdentifierList&); void updateStandaloneQualifierDefaults(const TSourceLoc&, const TPublicType&); @@ -143,14 +141,23 @@ public: void updateImplicitArraySize(const TSourceLoc&, TIntermNode*, int index); - void nestLooping() { ++loopNestingLevel; } - void unnestLooping() { --loopNestingLevel; } - void pushScope() { symbolTable.push(); } - void popScope() { symbolTable.pop(0); } + void nestLooping() { ++loopNestingLevel; } + void unnestLooping() { --loopNestingLevel; } + void nestAnnotations() { ++annotationNestingLevel; } + void unnestAnnotations() { --annotationNestingLevel; } + int getAnnotationNestingLevel() { return annotationNestingLevel; } + void pushScope() { symbolTable.push(); } + void popScope() { symbolTable.pop(0); } void pushSwitchSequence(TIntermSequence* sequence) { switchSequenceStack.push_back(sequence); } void popSwitchSequence() { switchSequenceStack.pop_back(); } + // Apply L-value conversions. E.g, turning a write to a RWTexture into an ImageStore. + TIntermTyped* handleLvalue(const TSourceLoc&, const char* op, TIntermTyped* node); + bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override; + + TLayoutFormat getLayoutFromTxType(const TSourceLoc&, const TType&); + protected: void inheritGlobalDefaults(TQualifier& dst) const; TVariable* makeInternalVariable(const char* name, const TType&) const; @@ -158,33 +165,38 @@ protected: void declareArray(const TSourceLoc&, TString& identifier, const TType&, TSymbol*&, bool& newDeclaration); TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); - TOperator mapTypeToConstructorOp(const TType&) const; TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage); - void outputMessage(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, TPrefixType prefix, - va_list args); + + // Return true if this node requires L-value conversion (e.g, to an imageStore). + bool shouldConvertLValue(const TIntermNode*) const; + + // Array and struct flattening + bool shouldFlatten(const TType& type) const { return shouldFlattenIO(type) || shouldFlattenUniform(type); } + TIntermTyped* flattenAccess(TIntermTyped* base, int member); + bool shouldFlattenIO(const TType&) const; + bool shouldFlattenUniform(const TType&) const; + void flatten(const TSourceLoc& loc, const TVariable& variable); + void flattenStruct(const TVariable& variable); + void flattenArray(const TSourceLoc& loc, const TVariable& variable); // Current state of parsing struct TPragma contextPragma; int loopNestingLevel; // 0 if outside all loops + int annotationNestingLevel; // 0 if outside all annotations int structNestingLevel; // 0 if outside blocks and structures int controlFlowNestingLevel; // 0 if outside all flow control TList 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 - const TString* blockName; - TQualifier currentBlockQualifier; TBuiltInResource resources; TLimits& limits; HlslParseContext(HlslParseContext&); HlslParseContext& operator=(HlslParseContext&); - TMap extensionBehavior; // for each extension string, what its current behavior is set to static const int maxSamplerIndex = EsdNumDims * (EbtNumTypes * (2 * 2 * 2)); // see computeSamplerTypeIndex() - bool afterEOF; TQualifier globalBufferDefaults; TQualifier globalUniformDefaults; TQualifier globalInputDefaults; @@ -192,6 +204,7 @@ protected: TString currentCaller; // name of last function body entered (not valid when at global scope) TIdSetType inductiveLoopIds; TVector needsIndexLimitationChecking; + TVariable* entryPointOutput; // // Geometry shader input arrays: @@ -226,6 +239,10 @@ protected: // array-sizing declarations // TVector ioArraySymbolResizeList; + + TMap> flattenMap; + unsigned int nextInLocation; + unsigned int nextOutLocation; }; } // end namespace glslang diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp index b454d4bd..7ab159dc 100755 --- a/hlsl/hlslParseables.cpp +++ b/hlsl/hlslParseables.cpp @@ -51,21 +51,164 @@ #include "hlslParseables.h" #include #include +#include namespace { // anonymous namespace functions const bool UseHlslTypes = false; -const char* BaseTypeName(const char* argOrder, const char* scalarName, const char* vecName, const char* matName) +const char* BaseTypeName(const char argOrder, const char* scalarName, const char* vecName, const char* matName) { - switch (*argOrder) { + switch (argOrder) { case 'S': return scalarName; case 'V': return vecName; case 'M': return matName; default: return "UNKNOWN_TYPE"; } } - + +bool IsSamplerType(const char argType) { return argType == 'S' || argType == 's'; } +bool IsArrayed(const char argOrder) { return argOrder == '@' || argOrder == '&' || argOrder == '#'; } +bool IsTextureMS(const char argOrder) { return argOrder == '$' || argOrder == '&'; } +bool IsBuffer(const char argOrder) { return argOrder == '*' || argOrder == '~'; } +bool IsImage(const char argOrder) { return argOrder == '!' || argOrder == '#' || argOrder == '~'; } +bool IsTextureType(const char argOrder) +{ + return argOrder == '%' || argOrder == '@' || IsTextureMS(argOrder) || IsBuffer(argOrder) | IsImage(argOrder); +} + +// Reject certain combinations that are illegal sample methods. For example, +// 3D arrays. +bool IsIllegalSample(const glslang::TString& name, const char* argOrder, int dim0) +{ + const bool isArrayed = IsArrayed(*argOrder); + const bool isMS = IsTextureMS(*argOrder); + const bool isBuffer = IsBuffer(*argOrder); + + // there are no 3D arrayed textures, or 3D SampleCmp(LevelZero) + if (dim0 == 3 && (isArrayed || name == "SampleCmp" || name == "SampleCmpLevelZero")) + return true; + + const int numArgs = int(std::count(argOrder, argOrder + strlen(argOrder), ',')) + 1; + + // Reject invalid offset forms with cubemaps + if (dim0 == 4) { + if ((name == "Sample" && numArgs >= 4) || + (name == "SampleBias" && numArgs >= 5) || + (name == "SampleCmp" && numArgs >= 5) || + (name == "SampleCmpLevelZero" && numArgs >= 5) || + (name == "SampleGrad" && numArgs >= 6) || + (name == "SampleLevel" && numArgs >= 5)) + return true; + } + + const bool isGather = + (name == "Gather" || + name == "GatherRed" || + name == "GatherGreen" || + name == "GatherBlue" || + name == "GatherAlpha"); + + const bool isGatherCmp = + (name == "GatherCmpRed" || + name == "GatherCmpGreen" || + name == "GatherCmpBlue" || + name == "GatherCmpAlpha"); + + // Reject invalid Gathers + if (isGather || isGatherCmp) { + if (dim0 == 1 || dim0 == 3) // there are no 1D or 3D gathers + return true; + + // no offset on cube or cube array gathers + if (dim0 == 4) { + if ((isGather && numArgs > 3) || (isGatherCmp && numArgs > 4)) + return true; + } + } + + // Reject invalid Loads + if (name == "Load" && dim0 == 4) + return true; // Load does not support any cubemaps, arrayed or not. + + // Multisample formats are only 2D and 2Darray + if (isMS && dim0 != 2) + return true; + + // Buffer are only 1D + if (isBuffer && dim0 != 1) + return true; + + return false; +} + +// Return the number of the coordinate arg, if any +int CoordinateArgPos(const glslang::TString& name, bool isTexture) +{ + if (!isTexture || (name == "GetDimensions")) + return -1; // has none + else if (name == "Load") + return 1; + else + return 2; // other texture methods are 2 +} + +// Some texture methods use an addition coordinate dimension for the mip +bool HasMipInCoord(const glslang::TString& name, bool isMS, bool isBuffer, bool isImage) +{ + return name == "Load" && !isMS && !isBuffer && !isImage; +} + +// LOD calculations don't pass the array level in the coordinate. +bool NoArrayCoord(const glslang::TString& name) +{ + return name == "CalculateLevelOfDetail" || name == "CalculateLevelOfDetailUnclamped"; +} + +// Handle IO params marked with > or < +const char* IoParam(glslang::TString& s, const char* nthArgOrder) +{ + if (*nthArgOrder == '>') { // output params + ++nthArgOrder; + s.append("out "); + } else if (*nthArgOrder == '<') { // input params + ++nthArgOrder; + s.append("in "); + } + + return nthArgOrder; +} + +// Handle repeated args +void HandleRepeatArg(const char*& arg, const char*& prev, const char* current) +{ + if (*arg == ',' || *arg == '\0') + arg = prev; + else + prev = current; +} + +// Return true for the end of a single argument key, which can be the end of the string, or +// the comma separator. +inline bool IsEndOfArg(const char* arg) +{ + return arg == nullptr || *arg == '\0' || *arg == ','; +} + + +// If this is a fixed vector size, such as V3, return the size. Else return 0. +int FixedVecSize(const char* arg) +{ + while (!IsEndOfArg(arg)) { + if (isdigit(*arg)) + return *arg - '0'; + ++arg; + } + + return 0; // none found. +} + + // Create and return a type name. This is done in GLSL, not HLSL conventions, until such // time as builtins are parsed using the HLSL parser. // @@ -75,102 +218,148 @@ const char* BaseTypeName(const char* argOrder, const char* scalarName, const cha // dim1 = matrix 2nd dimension glslang::TString& AppendTypeName(glslang::TString& s, const char* argOrder, const char* argType, int dim0, int dim1) { - const bool transpose = (argOrder[0] == '^'); - const bool matMul = (argOrder[0] == '#'); + const bool isTranspose = (argOrder[0] == '^'); + const bool isTexture = IsTextureType(argOrder[0]); + const bool isArrayed = IsArrayed(argOrder[0]); + const bool isSampler = IsSamplerType(argType[0]); + const bool isMS = IsTextureMS(argOrder[0]); + const bool isBuffer = IsBuffer(argOrder[0]); + const bool isImage = IsImage(argOrder[0]); - if (transpose) { // Take transpose of matrix dimensions + char type = *argType; + + if (isTranspose) { // Take transpose of matrix dimensions std::swap(dim0, dim1); - ++argOrder; - } else if (matMul) { - dim0 = dim1; // set vector dimension to mat col - ++argOrder; + } else if (isTexture) { + if (type == 'F') // map base type to texture of that type. + type = 'T'; // e.g, int -> itexture, uint -> utexture, etc. + else if (type == 'I') + type = 'i'; + else if (type == 'U') + type = 'u'; } + if (isTranspose) + ++argOrder; + + char order = *argOrder; + if (UseHlslTypes) { - switch (*argType) { - case '-': s += "void"; break; - case 'F': s += "float"; break; - case 'D': s += "double"; break; - case 'I': s += "int"; break; - case 'U': s += "uint"; break; - case 'B': s += "bool"; break; - case 'S': s += "sampler"; break; - default: s += "UNKNOWN_TYPE"; break; + switch (type) { + case '-': s += "void"; break; + case 'F': s += "float"; break; + case 'D': s += "double"; break; + case 'I': s += "int"; break; + case 'U': s += "uint"; break; + case 'B': s += "bool"; break; + case 'S': s += "sampler"; break; + case 's': s += "SamplerComparisonState"; break; + case 'T': s += ((isBuffer && isImage) ? "RWBuffer" : + isBuffer ? "Buffer" : + isImage ? "RWTexture" : "Texture"); break; + case 'i': s += ((isBuffer && isImage) ? "RWBuffer " : + isBuffer ? "Buffer " : + isImage ? "RWTexture " : "Texture "); break; + case 'u': s += ((isBuffer && isImage) ? "RWBuffer " : + isBuffer ? "Buffer " : + isImage ? "RWTexture " : "Texture ");break; + default: s += "UNKNOWN_TYPE"; break; } } else { - switch (*argType) { + switch (type) { case '-': s += "void"; break; - case 'F': s += BaseTypeName(argOrder, "float", "vec", "mat"); break; - case 'D': s += BaseTypeName(argOrder, "double", "dvec", "dmat"); break; - case 'I': s += BaseTypeName(argOrder, "int", "ivec", "imat"); break; - case 'U': s += BaseTypeName(argOrder, "uint", "uvec", "umat"); break; - case 'B': s += BaseTypeName(argOrder, "bool", "bvec", "bmat"); break; - case 'S': s += BaseTypeName(argOrder, "sampler", "sampler", "sampler"); break; // TODO: + case 'F': s += BaseTypeName(order, "float", "vec", "mat"); break; + case 'D': s += BaseTypeName(order, "double", "dvec", "dmat"); break; + case 'I': s += BaseTypeName(order, "int", "ivec", "imat"); break; + case 'U': s += BaseTypeName(order, "uint", "uvec", "umat"); break; + case 'B': s += BaseTypeName(order, "bool", "bvec", "bmat"); break; + case 'S': s += "sampler"; break; + case 's': s += "samplerShadow"; break; + case 'T': // fall through + case 'i': // ... + case 'u': // ... + if (type != 'T') // create itexture, utexture, etc + s += type; + + s += ((isImage && isBuffer) ? "imageBuffer" : + isImage ? "image" : + isBuffer ? "samplerBuffer" : + "texture"); + break; + default: s += "UNKNOWN_TYPE"; break; } } // handle fixed vector sizes, such as float3, and only ever 3. - const int fixedVecSize = isdigit(argOrder[1]) ? (argOrder[1] - '0') : 0; + const int fixedVecSize = FixedVecSize(argOrder); if (fixedVecSize != 0) dim0 = dim1 = fixedVecSize; // Add sampler dimensions - if (*argType == 'S') { - switch (dim0) { - case 1: s += "1D"; break; - case 2: s += "2D"; break; - case 3: s += "3D"; break; - case 4: s += "Cube"; break; - default: s += "UNKNOWN_SAMPLER"; break; + if (isSampler || isTexture) { + if ((order == 'V' || isTexture) && !isBuffer) { + switch (dim0) { + case 1: s += "1D"; break; + case 2: s += (isMS ? "2DMS" : "2D"); break; + case 3: s += "3D"; break; + case 4: s += "Cube"; break; + default: s += "UNKNOWN_SAMPLER"; break; + } + } + } else { + // Non-sampler type: + // verify dimensions + if (((order == 'V' || order == 'M') && (dim0 < 1 || dim0 > 4)) || + (order == 'M' && (dim1 < 1 || dim1 > 4))) { + s += "UNKNOWN_DIMENSION"; + return s; } - } - // verify dimensions - if ((*argOrder == 'V' || *argOrder == 'M') && (dim0 < 1 || dim0 > 4) || - (*argOrder == 'M' && (dim1 < 1 || dim1 > 4))) { - s += "UNKNOWN_DIMENSION"; - return s; - } - - switch (*argOrder) { - case '-': break; // no dimensions for voids - case 'S': break; // no dimensions on scalars - 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); + switch (order) { + case '-': break; // no dimensions for voids + case 'S': break; // no dimensions on scalars + case 'V': + s += ('0' + char(dim0)); + break; + case 'M': + s += ('0' + char(dim0)); s += 'x'; - s += ('0' + (char)dim1); + s += ('0' + char(dim1)); + break; + default: break; } } + // handle arrayed textures + if (isArrayed) + s += "Array"; + return s; } // TODO: the GLSL parser is currently used to parse HLSL prototypes. However, many valid HLSL prototypes // are not valid GLSL prototypes. This rejects the invalid ones. Thus, there is a single switch below // to enable creation of the entire HLSL space. -inline bool IsValidGlsl(const char* cname, char retOrder, char retType, char /*argOrder*/, char argType, +inline bool IsValidGlsl(const char* cname, char retOrder, char retType, char argOrder, char argType, int dim0, int dim1, int dim0Max, int dim1Max) { const bool isVec = dim0Max > 1 || argType == 'V'; const bool isMat = dim1Max > 1 || argType == 'M'; - if ((isVec && dim0 == 1) || // avoid vec1 - (isMat && dim0 == 1 && dim1 == 1)) // avoid mat1x1 + if (!IsTextureType(argOrder) && + ((isVec && dim0 == 1) || // avoid vec1 + (isMat && dim0 == 1 && dim1 == 1))) // avoid mat1x1 return false; const std::string name(cname); // for ease of comparison. slow, but temporary, until HLSL parser is online. - + if (isMat && dim1 == 1) // TODO: avoid mat Nx1 until we find the right GLSL profile return false; - if (isMat && (argType == 'I' || argType == 'U' || argType == 'B') || - retOrder == 'M' && (retType == 'I' || retType == 'U' || retType == 'B')) + if ((isMat && (argType == 'I' || argType == 'U' || argType == 'B')) || + (retOrder == 'M' && (retType == 'I' || retType == 'U' || retType == 'B'))) return false; if (name == "GetRenderTargetSamplePosition" || @@ -182,14 +371,6 @@ inline bool IsValidGlsl(const char* cname, char retOrder, char retType, char /*a } -// Return true for the end of a single argument key, which can be the end of the string, or -// the comma separator. -inline bool IsEndOfArg(const char* arg) -{ - return arg == nullptr || *arg == '\0' || *arg == ','; -} - - // return position of end of argument specifier inline const char* FindEndOfArg(const char* arg) { @@ -199,7 +380,6 @@ inline const char* FindEndOfArg(const char* arg) return *arg == '\0' ? nullptr : arg; } - // Return pointer to beginning of Nth argument specifier in the string. inline const char* NthArg(const char* arg, int n) { @@ -252,6 +432,7 @@ void TBuiltInParseablesHlsl::createMatTimesMat() 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 @@ -263,6 +444,31 @@ void TBuiltInParseablesHlsl::createMatTimesMat() 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 } } } @@ -277,19 +483,43 @@ void TBuiltInParseablesHlsl::createMatTimesMat() // void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, const SpvVersion& /*spvVersion*/) { - static const EShLanguageMask EShLangAll = EShLanguageMask(EShLangCount - 1); + static const EShLanguageMask EShLangAll = EShLanguageMask(EShLangCount - 1); + + // 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. // orderKey can be: // S = scalar, V = vector, M = matrix, - = void // typekey can be: - // D = double, F = float, U = uint, I = int, B = bool, S = sampler, - = void + // D = double, F = float, U = uint, I = int, B = bool, S = sampler, s = shadowSampler // An empty order or type key repeats the first one. E.g: SVM,, means 3 args each of SVM. // '>' 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 + // '*' as first letter of order creates buffer object + // '!' as first letter of order creates image object + // '#' as first letter of order creates arrayed image object + // '~' as first letter of order creates an image buffer object static const struct { const char* name; // intrinsic name @@ -299,162 +529,307 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c const char* argType; // argument type key unsigned int stage; // stage mask } hlslIntrinsics[] = { - // name retOrd retType argOrder argType stage mask + // name retOrd retType argOrder argType stage mask // ----------------------------------------------------------------------------------------------- - { "abort", nullptr, nullptr, "-", "-", EShLangAll }, - { "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 }, - { "any", "S", "B", "SVM", "BFI", EShLangAll }, - { "asdouble", "S", "D", "S,", "U,", EShLangAll }, - { "asdouble", "V2", "D", "V2,", "U,", EShLangAll }, - { "asfloat", nullptr, "F", "SVM", "BFIU", EShLangAll }, - { "asin", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "asint", nullptr, "I", "SVM", "FU", EShLangAll }, - { "asuint", nullptr, "U", "SVM", "FU", EShLangAll }, - { "atan", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "atan2", nullptr, nullptr, "SVM,", "F,", EShLangAll }, - { "ceil", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "CheckAccessFullyMapped", "S", "B" , "S", "U", EShLangFragmentMask | EShLangComputeMask }, - { "clamp", nullptr, nullptr, "SVM,,", "FUI,,", EShLangAll }, - { "clip", "-", "-", "SVM", "F", EShLangFragmentMask }, - { "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 }, - { "degrees", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "determinant", "S", "F", "M", "F", EShLangAll }, - { "DeviceMemoryBarrier", nullptr, nullptr, "-", "-", EShLangFragmentMask | EShLangComputeMask }, - { "DeviceMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask }, - { "distance", "S", "F", "V,", "F,", EShLangAll }, - { "dot", "S", nullptr, "V,", "FI,", EShLangAll }, - { "dst", nullptr, nullptr, "V4,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 }, - { "exp", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "exp2", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "f16tof32", nullptr, "F", "SV", "U", EShLangAll }, - { "f32tof16", nullptr, "U", "SV", "F", EShLangAll }, - { "faceforward", nullptr, nullptr, "V,,", "F,,", EShLangAll }, - { "firstbithigh", nullptr, nullptr, "SV", "UI", EShLangAll }, - { "firstbitlow", nullptr, nullptr, "SV", "UI", EShLangAll }, - { "floor", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "fma", nullptr, nullptr, "SVM,,", "D,,", EShLangAll }, - { "fmod", nullptr, nullptr, "SVM,", "F,", EShLangAll }, - { "frac", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "frexp", nullptr, nullptr, "SVM,", "F,", EShLangAll }, - { "fwidth", nullptr, nullptr, "SVM", "F", EShLangFragmentMask }, - { "GetRenderTargetSampleCount", "S", "U", "-", "-", EShLangAll }, - { "GetRenderTargetSamplePosition", "V2", "F", "V1", "I", EShLangAll }, - { "GroupMemoryBarrier", nullptr, nullptr, "-", "-", EShLangComputeMask }, - { "GroupMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask }, - { "InterlockedAdd", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedAdd", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedAnd", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedAnd", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedCompareExchange", "-", "-", "SVM,,,>", "UI,,,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedCompareStore", "-", "-", "SVM,,", "UI,,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedExchange", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedMax", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedMax", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedMin", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedMin", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedOr", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedOr", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedXor", "-", "-", "SVM,,>", "UI,,", EShLangFragmentMask | EShLangComputeMask }, - { "InterlockedXor", "-", "-", "SVM,", "UI,", EShLangFragmentMask | EShLangComputeMask }, - { "isfinite", nullptr, "B" , "SVM", "F", EShLangAll }, - { "isinf", nullptr, "B" , "SVM", "F", EShLangAll }, - { "isnan", nullptr, "B" , "SVM", "F", EShLangAll }, - { "ldexp", nullptr, nullptr, "SVM,", "F,", EShLangAll }, - { "length", "S", "F", "V", "F", EShLangAll }, - { "lerp", nullptr, nullptr, "SVM,,", "F,,", EShLangAll }, - { "lit", "V4", "F", "S,,", "F,,", EShLangAll }, - { "log", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "log10", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "log2", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "mad", nullptr, nullptr, "SVM,,", "DFUI,,", EShLangAll }, - { "max", nullptr, nullptr, "SVM,", "FI,", EShLangAll }, - { "min", nullptr, nullptr, "SVM,", "FI,", EShLangAll }, - { "modf", nullptr, nullptr, "SVM,>", "FI,", EShLangAll }, - { "msad4", "V4", "U", "S,V2,V4", "U,,", EShLangAll }, - { "mul", "S", nullptr, "S,S", "FI,", EShLangAll }, - { "mul", "V", nullptr, "S,V", "FI,", EShLangAll }, - { "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 }, + { "abort", nullptr, nullptr, "-", "-", EShLangAll }, + { "abs", nullptr, nullptr, "SVM", "DFUI", EShLangAll }, + { "acos", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "all", "S", "B", "SVM", "BFI", EShLangAll }, + { "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 }, + { "asfloat", nullptr, "F", "SVM", "BFIU", EShLangAll }, + { "asin", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "asint", nullptr, "I", "SVM", "FU", EShLangAll }, + { "asuint", nullptr, "U", "SVM", "FU", EShLangAll }, + { "atan", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "atan2", nullptr, nullptr, "SVM,", "F,", EShLangAll }, + { "ceil", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "CheckAccessFullyMapped", "S", "B" , "S", "U", EShLangPSCS }, + { "clamp", nullptr, nullptr, "SVM,,", "FUI,,", EShLangAll }, + { "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", 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, "-", "-", 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", 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 }, + { "f32tof16", nullptr, "U", "SV", "F", EShLangAll }, + { "faceforward", nullptr, nullptr, "V,,", "F,,", EShLangAll }, + { "firstbithigh", nullptr, nullptr, "SV", "UI", EShLangAll }, + { "firstbitlow", nullptr, nullptr, "SV", "UI", EShLangAll }, + { "floor", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "fma", nullptr, nullptr, "SVM,,", "D,,", EShLangAll }, + { "fmod", nullptr, nullptr, "SVM,", "F,", EShLangAll }, + { "frac", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "frexp", nullptr, nullptr, "SVM,", "F,", EShLangAll }, + { "fwidth", nullptr, nullptr, "SVM", "F", EShLangPS }, + { "GetRenderTargetSampleCount", "S", "U", "-", "-", EShLangAll }, + { "GetRenderTargetSamplePosition", "V2", "F", "V1", "I", EShLangAll }, + { "GroupMemoryBarrier", nullptr, nullptr, "-", "-", EShLangCS }, + { "GroupMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS }, + { "InterlockedAdd", "-", "-", "SVM,,>", "UI,,", EShLangPSCS }, + { "InterlockedAdd", "-", "-", "SVM,", "UI,", EShLangPSCS }, + { "InterlockedAnd", "-", "-", "SVM,,>", "UI,,", EShLangPSCS }, + { "InterlockedAnd", "-", "-", "SVM,", "UI,", EShLangPSCS }, + { "InterlockedCompareExchange", "-", "-", "SVM,,,>", "UI,,,", EShLangPSCS }, + { "InterlockedCompareStore", "-", "-", "SVM,,", "UI,,", EShLangPSCS }, + { "InterlockedExchange", "-", "-", "SVM,,>", "UI,,", EShLangPSCS }, + { "InterlockedMax", "-", "-", "SVM,,>", "UI,,", EShLangPSCS }, + { "InterlockedMax", "-", "-", "SVM,", "UI,", EShLangPSCS }, + { "InterlockedMin", "-", "-", "SVM,,>", "UI,,", EShLangPSCS }, + { "InterlockedMin", "-", "-", "SVM,", "UI,", EShLangPSCS }, + { "InterlockedOr", "-", "-", "SVM,,>", "UI,,", EShLangPSCS }, + { "InterlockedOr", "-", "-", "SVM,", "UI,", EShLangPSCS }, + { "InterlockedXor", "-", "-", "SVM,,>", "UI,,", EShLangPSCS }, + { "InterlockedXor", "-", "-", "SVM,", "UI,", EShLangPSCS }, + { "isfinite", nullptr, "B" , "SVM", "F", EShLangAll }, + { "isinf", nullptr, "B" , "SVM", "F", EShLangAll }, + { "isnan", nullptr, "B" , "SVM", "F", EShLangAll }, + { "ldexp", nullptr, nullptr, "SVM,", "F,", EShLangAll }, + { "length", "S", "F", "V", "F", EShLangAll }, + { "lerp", nullptr, nullptr, "VM,,", "F,,", EShLangAll }, + { "lerp", nullptr, nullptr, "SVM,,S", "F,,", EShLangAll }, + { "lit", "V4", "F", "S,,", "F,,", EShLangAll }, + { "log", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "log10", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "log2", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "mad", nullptr, nullptr, "SVM,,", "DFUI,,", EShLangAll }, + { "max", nullptr, nullptr, "SVM,", "FI,", EShLangAll }, + { "min", nullptr, nullptr, "SVM,", "FI,", EShLangAll }, + { "modf", nullptr, nullptr, "SVM,>", "FI,", EShLangAll }, + { "msad4", "V4", "U", "S,V2,V4", "U,,", EShLangAll }, + { "mul", "S", nullptr, "S,S", "FI,", EShLangAll }, + { "mul", "V", nullptr, "S,V", "FI,", EShLangAll }, + { "mul", "M", nullptr, "S,M", "FI,", EShLangAll }, + { "mul", "V", nullptr, "V,S", "FI,", EShLangAll }, + { "mul", "S", nullptr, "V,V", "FI,", EShLangAll }, + { "mul", "M", nullptr, "M,S", "FI,", EShLangAll }, // mat*mat form of mul is handled in createMatTimesMat() - { "noise", "S", "F", "V", "F", EShLangFragmentMask }, - { "normalize", nullptr, nullptr, "V", "F", EShLangAll }, - { "pow", nullptr, nullptr, "SVM,", "F,", EShLangAll }, - // { "printf", "-", "-", "", "", EShLangAll }, TODO: varargs - { "Process2DQuadTessFactorsAvg", "-", "-", "V4,V2,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask }, - { "Process2DQuadTessFactorsMax", "-", "-", "V4,V2,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask }, - { "Process2DQuadTessFactorsMin", "-", "-", "V4,V2,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask }, - { "ProcessIsolineTessFactors", "-", "-", "S,,>,>", "F,,,", EShLangTessControlMask }, - { "ProcessQuadTessFactorsAvg", "-", "-", "V4,S,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask }, - { "ProcessQuadTessFactorsMax", "-", "-", "V4,S,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask }, - { "ProcessQuadTessFactorsMin", "-", "-", "V4,S,>V4,>V2,>V2", "F,,,,", EShLangTessControlMask }, - { "ProcessTriTessFactorsAvg", "-", "-", "V3,S,>V3,>S,>S", "F,,,,", EShLangTessControlMask }, - { "ProcessTriTessFactorsMax", "-", "-", "V3,S,>V3,>S,>S", "F,,,,", EShLangTessControlMask }, - { "ProcessTriTessFactorsMin", "-", "-", "V3,S,>V3,>S,>S", "F,,,,", EShLangTessControlMask }, - { "radians", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "rcp", nullptr, nullptr, "SVM", "FD", EShLangAll }, - { "reflect", nullptr, nullptr, "V,", "F,", EShLangAll }, - { "refract", nullptr, nullptr, "V,V,S", "F,,", EShLangAll }, - { "reversebits", nullptr, nullptr, "SV", "U", EShLangAll }, - { "round", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "rsqrt", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "saturate", nullptr, nullptr , "SVM", "F", EShLangAll }, - { "sign", nullptr, nullptr, "SVM", "FI", EShLangAll }, - { "sin", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "sincos", "-", "-", "SVM,>,>", "F,,", EShLangAll }, - { "sinh", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "smoothstep", nullptr, nullptr, "SVM,,", "F,,", EShLangAll }, - { "sqrt", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "step", nullptr, nullptr, "SVM,", "F,", EShLangAll }, - { "tan", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "tanh", nullptr, nullptr, "SVM", "F", EShLangAll }, - { "tex1D", "V4", "F", "S1,S", "S,F", EShLangFragmentMask }, - { "tex1D", "V4", "F", "S1,S,V1,V1", "S,F,F,F",EShLangFragmentMask }, - { "tex1Dbias", "V4", "F", "S1,V4", "S,F", EShLangFragmentMask }, - { "tex1Dgrad", "V4", "F", "S1,V1,V1,V1","S,F,F,F",EShLangFragmentMask }, - { "tex1Dlod", "V4", "F", "S1,V4", "S,F", EShLangFragmentMask }, - { "tex1Dproj", "V4", "F", "S1,V4", "S,F", EShLangFragmentMask }, - { "tex2D", "V4", "F", "S2,V2", "S,F", EShLangFragmentMask }, - { "tex2D", "V4", "F", "S2,V2,V2,V2","S,F,F,F",EShLangFragmentMask }, - { "tex2Dbias", "V4", "F", "S2,V4", "S,F", EShLangFragmentMask }, - { "tex2Dgrad", "V4", "F", "S2,V2,V2,V2","S,F,F,F",EShLangFragmentMask }, - { "tex2Dlod", "V4", "F", "S2,V4", "S,F", EShLangFragmentMask }, - { "tex2Dproj", "V4", "F", "S2,V4", "S,F", EShLangFragmentMask }, - { "tex3D", "V4", "F", "S3,V3", "S,F", EShLangFragmentMask }, - { "tex3D", "V4", "F", "S3,V3,V3,V3","S,F,F,F",EShLangFragmentMask }, - { "tex3Dbias", "V4", "F", "S3,V4", "S,F", EShLangFragmentMask }, - { "tex3Dgrad", "V4", "F", "S3,V3,V3,V3","S,F,F,F",EShLangFragmentMask }, - { "tex3Dlod", "V4", "F", "S3,V4", "S,F", EShLangFragmentMask }, - { "tex3Dproj", "V4", "F", "S3,V4", "S,F", EShLangFragmentMask }, - { "texCUBE", "V4", "F", "S4,V3", "S,F", EShLangFragmentMask }, - { "texCUBE", "V4", "F", "S4,V3,V3,V3","S,F,F,F",EShLangFragmentMask }, - { "texCUBEbias", "V4", "F", "S4,V4", "S,F", EShLangFragmentMask }, - { "texCUBEgrad", "V4", "F", "S4,V3,V3,V3","S,F,F,F",EShLangFragmentMask }, - { "texCUBElod", "V4", "F", "S4,V4", "S,F", EShLangFragmentMask }, - { "texCUBEproj", "V4", "F", "S4,V4", "S,F", EShLangFragmentMask }, - { "transpose", "^M", nullptr, "M", "F", EShLangAll }, - { "trunc", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "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,,,,", 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 }, + { "refract", nullptr, nullptr, "V,V,S", "F,,", EShLangAll }, + { "reversebits", nullptr, nullptr, "SV", "U", EShLangAll }, + { "round", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "rsqrt", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "saturate", nullptr, nullptr , "SVM", "F", EShLangAll }, + { "sign", nullptr, nullptr, "SVM", "FI", EShLangAll }, + { "sin", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "sincos", "-", "-", "SVM,>,>", "F,,", EShLangAll }, + { "sinh", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "smoothstep", nullptr, nullptr, "SVM,,", "F,,", EShLangAll }, + { "sqrt", nullptr, nullptr, "SVM", "F", EShLangAll }, + { "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", 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", EShLangPS }, + { "Sample", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangPS }, + + { "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,", 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", 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 }, + + { "SampleLevel", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,", EShLangAll }, + { "SampleLevel", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,,I", EShLangAll }, + + { "Load", /*!O*/ "V4", nullptr, "%@,V", "FIU,I", EShLangAll }, + { "Load", /* O*/ "V4", nullptr, "%@,V,V", "FIU,I,I", EShLangAll }, + { "Load", /* +sampleidex*/ "V4", nullptr, "$&,V,S", "FIU,I,I", EShLangAll }, + { "Load", /* +samplindex, offset*/ "V4", nullptr, "$&,V,S,V", "FIU,I,I,I", EShLangAll }, + + // RWTexture loads + { "Load", "V4", nullptr, "!#,V", "FIU,I", EShLangAll }, + // (RW)Buffer loads + { "Load", "V4", nullptr, "~*1,V", "FIU,I", EShLangAll }, + + { "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", EShLangPS }, + { "CalculateLevelOfDetailUnclamped", "S", "F", "%@,S,V", "FUI,S,F", EShLangPS }, + + { "GetSamplePosition", "V2", "F", "$&2,S", "FUI,I", EShLangVSPSGS }, + + // + // UINT Width + // UINT MipLevel, UINT Width, UINT NumberOfLevels + { "GetDimensions", /* 1D */ "-", "-", "%!~1,>S", "FUI,U", EShLangAll }, + { "GetDimensions", /* 1D */ "-", "-", "%!~1,>S", "FUI,F", EShLangAll }, + { "GetDimensions", /* 1D */ "-", "-", "%1,S,>S,", "FUI,U,,", EShLangAll }, + { "GetDimensions", /* 1D */ "-", "-", "%1,S,>S,", "FUI,U,F,", EShLangAll }, + + // UINT Width, UINT Elements + // UINT MipLevel, UINT Width, UINT Elements, UINT NumberOfLevels + { "GetDimensions", /* 1DArray */ "-", "-", "@#1,>S,", "FUI,U,", EShLangAll }, + { "GetDimensions", /* 1DArray */ "-", "-", "@#1,>S,", "FUI,F,", EShLangAll }, + { "GetDimensions", /* 1DArray */ "-", "-", "@1,S,>S,,", "FUI,U,,,", EShLangAll }, + { "GetDimensions", /* 1DArray */ "-", "-", "@1,S,>S,,", "FUI,U,F,,", EShLangAll }, + + // UINT Width, UINT Height + // UINT MipLevel, UINT Width, UINT Height, UINT NumberOfLevels + { "GetDimensions", /* 2D */ "-", "-", "%!2,>S,", "FUI,U,", EShLangAll }, + { "GetDimensions", /* 2D */ "-", "-", "%!2,>S,", "FUI,F,", EShLangAll }, + { "GetDimensions", /* 2D */ "-", "-", "%2,S,>S,,", "FUI,U,,,", EShLangAll }, + { "GetDimensions", /* 2D */ "-", "-", "%2,S,>S,,", "FUI,U,F,,", EShLangAll }, + + // UINT Width, UINT Height, UINT Elements + // UINT MipLevel, UINT Width, UINT Height, UINT Elements, UINT NumberOfLevels + { "GetDimensions", /* 2DArray */ "-", "-", "@#2,>S,,", "FUI,U,,", EShLangAll }, + { "GetDimensions", /* 2DArray */ "-", "-", "@#2,>S,,", "FUI,F,F,F", EShLangAll }, + { "GetDimensions", /* 2DArray */ "-", "-", "@2,S,>S,,,", "FUI,U,,,,", EShLangAll }, + { "GetDimensions", /* 2DArray */ "-", "-", "@2,S,>S,,,", "FUI,U,F,,,", EShLangAll }, + + // UINT Width, UINT Height, UINT Depth + // UINT MipLevel, UINT Width, UINT Height, UINT Depth, UINT NumberOfLevels + { "GetDimensions", /* 3D */ "-", "-", "%!3,>S,,", "FUI,U,,", EShLangAll }, + { "GetDimensions", /* 3D */ "-", "-", "%!3,>S,,", "FUI,F,,", EShLangAll }, + { "GetDimensions", /* 3D */ "-", "-", "%3,S,>S,,,", "FUI,U,,,,", EShLangAll }, + { "GetDimensions", /* 3D */ "-", "-", "%3,S,>S,,,", "FUI,U,F,,,", EShLangAll }, + + // UINT Width, UINT Height + // UINT MipLevel, UINT Width, UINT Height, UINT NumberOfLevels + { "GetDimensions", /* Cube */ "-", "-", "%4,>S,", "FUI,U,", EShLangAll }, + { "GetDimensions", /* Cube */ "-", "-", "%4,>S,", "FUI,F,", EShLangAll }, + { "GetDimensions", /* Cube */ "-", "-", "%4,S,>S,,", "FUI,U,,,", EShLangAll }, + { "GetDimensions", /* Cube */ "-", "-", "%4,S,>S,,", "FUI,U,F,,", EShLangAll }, + + // UINT Width, UINT Height, UINT Elements + // UINT MipLevel, UINT Width, UINT Height, UINT Elements, UINT NumberOfLevels + { "GetDimensions", /* CubeArray */ "-", "-", "@4,>S,,", "FUI,U,,", EShLangAll }, + { "GetDimensions", /* CubeArray */ "-", "-", "@4,>S,,", "FUI,F,,", EShLangAll }, + { "GetDimensions", /* CubeArray */ "-", "-", "@4,S,>S,,,", "FUI,U,,,,", EShLangAll }, + { "GetDimensions", /* CubeArray */ "-", "-", "@4,S,>S,,,", "FUI,U,F,,,", EShLangAll }, + + // UINT Width, UINT Height, UINT Samples + // UINT Width, UINT Height, UINT Elements, UINT Samples + { "GetDimensions", /* 2DMS */ "-", "-", "$2,>S,,", "FUI,U,,", EShLangAll }, + { "GetDimensions", /* 2DMS */ "-", "-", "$2,>S,,", "FUI,U,,", EShLangAll }, + { "GetDimensions", /* 2DMSArray */ "-", "-", "&2,>S,,,", "FUI,U,,,", EShLangAll }, + { "GetDimensions", /* 2DMSArray */ "-", "-", "&2,>S,,,", "FUI,U,,,", EShLangAll }, + + // SM5 texture methods + { "GatherRed", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll }, + { "GatherRed", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangAll }, + { "GatherRed", /* O, status*/ "V4", nullptr, "%@,S,V,,>S", "FIU,S,F,I,U", EShLangAll }, + { "GatherRed", /* O-4 */ "V4", nullptr, "%@,S,V,,,,", "FIU,S,F,I,,,", EShLangAll }, + { "GatherRed", /* O-4, status */"V4", nullptr, "%@,S,V,,,,,S", "FIU,S,F,I,,,,U",EShLangAll }, + + { "GatherGreen", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll }, + { "GatherGreen", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangAll }, + { "GatherGreen", /* O, status*/ "V4", nullptr, "%@,S,V,,>S", "FIU,S,F,I,U", EShLangAll }, + { "GatherGreen", /* O-4 */ "V4", nullptr, "%@,S,V,,,,", "FIU,S,F,I,,,", EShLangAll }, + { "GatherGreen", /* O-4, status */"V4", nullptr, "%@,S,V,,,,,S", "FIU,S,F,I,,,,U",EShLangAll }, + + { "GatherBlue", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll }, + { "GatherBlue", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangAll }, + { "GatherBlue", /* O, status*/ "V4", nullptr, "%@,S,V,,>S", "FIU,S,F,I,U", EShLangAll }, + { "GatherBlue", /* O-4 */ "V4", nullptr, "%@,S,V,,,,", "FIU,S,F,I,,,", EShLangAll }, + { "GatherBlue", /* O-4, status */"V4", nullptr, "%@,S,V,,,,,S", "FIU,S,F,I,,,,U",EShLangAll }, + + { "GatherAlpha", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll }, + { "GatherAlpha", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangAll }, + { "GatherAlpha", /* O, status*/ "V4", nullptr, "%@,S,V,,>S", "FIU,S,F,I,U", EShLangAll }, + { "GatherAlpha", /* O-4 */ "V4", nullptr, "%@,S,V,,,,", "FIU,S,F,I,,,", EShLangAll }, + { "GatherAlpha", /* O-4, status */"V4", nullptr, "%@,S,V,,,,,S", "FIU,S,F,I,,,,U",EShLangAll }, + + { "GatherCmpRed", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll }, + { "GatherCmpRed", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll }, + { "GatherCmpRed", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll }, + { "GatherCmpRed", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll }, + { "GatherCmpRed", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,V,S","FIU,s,F,,I,,,,U",EShLangAll }, + + { "GatherCmpGreen", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll }, + { "GatherCmpGreen", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll }, + { "GatherCmpGreen", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll }, + { "GatherCmpGreen", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll }, + { "GatherCmpGreen", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,,,S","FIU,s,F,,I,,,,U",EShLangAll }, + + { "GatherCmpBlue", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll }, + { "GatherCmpBlue", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll }, + { "GatherCmpBlue", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll }, + { "GatherCmpBlue", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll }, + { "GatherCmpBlue", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,,,S","FIU,s,F,,I,,,,U",EShLangAll }, + + { "GatherCmpAlpha", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,s,F,", EShLangAll }, + { "GatherCmpAlpha", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,s,F,,I", EShLangAll }, + { "GatherCmpAlpha", /* O, status*/ "V4", nullptr, "%@,S,V,S,V,>S", "FIU,s,F,,I,U", EShLangAll }, + { "GatherCmpAlpha", /* O-4 */ "V4", nullptr, "%@,S,V,S,V,,,", "FIU,s,F,,I,,,", EShLangAll }, + { "GatherCmpAlpha", /* O-4, status */"V4", nullptr, "%@,S,V,S,V,,,,S","FIU,s,F,,I,,,,U",EShLangAll }, // Mark end of list, since we want to avoid a range-based for, as some compilers don't handle it yet. { nullptr, nullptr, nullptr, nullptr, nullptr, 0 }, @@ -476,7 +851,14 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c TString& s = (intrinsic.stage == EShLangAll) ? commonBuiltins : stageBuiltins[stage]; for (const char* argOrder = intrinsic.argOrder; !IsEndOfArg(argOrder); ++argOrder) { // for each order... - const int fixedVecSize = isdigit(argOrder[1]) ? (argOrder[1] - '0') : 0; + const bool isTexture = IsTextureType(*argOrder); + const bool isArrayed = IsArrayed(*argOrder); + const bool isMS = IsTextureMS(*argOrder); + const bool isBuffer = IsBuffer(*argOrder); + const bool isImage = IsImage(*argOrder); + const bool mipInCoord = HasMipInCoord(intrinsic.name, isMS, isBuffer, isImage); + const int fixedVecSize = FixedVecSize(argOrder); + const int coordArg = CoordinateArgPos(intrinsic.name, isTexture); // calculate min and max vector and matrix dimensions int dim0Min = 1; @@ -496,11 +878,18 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c dim0, dim1, dim0Max, dim1Max)) continue; + // Reject some forms of sample methods that don't exist. + if (isTexture && IsIllegalSample(intrinsic.name, argOrder, dim0)) + continue; + AppendTypeName(s, retOrder, retType, dim0, dim1); // add return type s.append(" "); // space between type and name s.append(intrinsic.name); // intrinsic name s.append("("); // open paren + const char* prevArgOrder = nullptr; + const char* prevArgType = nullptr; + // Append argument types, if any. for (int arg = 0; ; ++arg) { const char* nthArgOrder(NthArg(argOrder, arg)); @@ -509,31 +898,48 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c if (nthArgOrder == nullptr || nthArgType == nullptr) break; + // cube textures use vec3 coordinates + int argDim0 = isTexture && arg > 0 ? std::min(dim0, 3) : dim0; + s.append(arg > 0 ? ", ": ""); // comma separator if needed - - if (*nthArgOrder == '>') { // output params - ++nthArgOrder; - s.append("out "); - } else if (*nthArgOrder == '<') { // input params - ++nthArgOrder; - s.append("in "); - } - // Comma means use the 1st argument order and type. - if (*nthArgOrder == ',' || *nthArgOrder == '\0') nthArgOrder = argOrder; - if (*nthArgType == ',' || *nthArgType == '\0') nthArgType = argType; + const char* orderBegin = nthArgOrder; + nthArgOrder = IoParam(s, nthArgOrder); - AppendTypeName(s, nthArgOrder, nthArgType, dim0, dim1); // Add arguments + // Comma means use the previous argument order and type. + HandleRepeatArg(nthArgOrder, prevArgOrder, orderBegin); + HandleRepeatArg(nthArgType, prevArgType, nthArgType); + + // In case the repeated arg has its own I/O marker + nthArgOrder = IoParam(s, nthArgOrder); + + // arrayed textures have one extra coordinate dimension, except for + // the CalculateLevelOfDetail family. + if (isArrayed && arg == coordArg && !NoArrayCoord(intrinsic.name)) + argDim0++; + + // Some texture methods use an addition arg dimension to hold mip + if (arg == coordArg && mipInCoord) + argDim0++; + + // For textures, the 1D case isn't a 1-vector, but a scalar. + if (isTexture && argDim0 == 1 && arg > 0 && *nthArgOrder == 'V') + nthArgOrder = "S"; + + AppendTypeName(s, nthArgOrder, nthArgType, argDim0, dim1); // Add arguments } s.append(");\n"); // close paren and trailing semicolon - } - } - } + } // dim 1 loop + } // dim 0 loop + } // arg type loop - if (fixedVecSize > 0) // skip over number for fixed size vectors + // skip over special characters + if (isTexture && isalpha(argOrder[1])) ++argOrder; - } + if (isdigit(argOrder[1])) + ++argOrder; + } // arg order loop if (intrinsic.stage == EShLangAll) // common builtins are only added once. break; @@ -606,7 +1012,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil symbolTable.relateToOperator("ddy_fine", EOpDPdyFine); symbolTable.relateToOperator("degrees", EOpDegrees); symbolTable.relateToOperator("determinant", EOpDeterminant); - symbolTable.relateToOperator("DeviceMemoryBarrier", EOpGroupMemoryBarrier); // == ScopeDevice+CrossWorkGroup + symbolTable.relateToOperator("DeviceMemoryBarrier", EOpGroupMemoryBarrier); symbolTable.relateToOperator("DeviceMemoryBarrierWithGroupSync", EOpGroupMemoryBarrierWithGroupSync); // ... symbolTable.relateToOperator("distance", EOpDistance); symbolTable.relateToOperator("dot", EOpDot); @@ -710,6 +1116,30 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil symbolTable.relateToOperator("texCUBEproj", EOpTextureProj); symbolTable.relateToOperator("transpose", EOpTranspose); symbolTable.relateToOperator("trunc", EOpTrunc); + + // Texture methods + symbolTable.relateToOperator("Sample", EOpMethodSample); + symbolTable.relateToOperator("SampleBias", EOpMethodSampleBias); + symbolTable.relateToOperator("SampleCmp", EOpMethodSampleCmp); + symbolTable.relateToOperator("SampleCmpLevelZero", EOpMethodSampleCmpLevelZero); + symbolTable.relateToOperator("SampleGrad", EOpMethodSampleGrad); + symbolTable.relateToOperator("SampleLevel", EOpMethodSampleLevel); + symbolTable.relateToOperator("Load", EOpMethodLoad); + symbolTable.relateToOperator("GetDimensions", EOpMethodGetDimensions); + symbolTable.relateToOperator("GetSamplePosition", EOpMethodGetSamplePosition); + symbolTable.relateToOperator("Gather", EOpMethodGather); + symbolTable.relateToOperator("CalculateLevelOfDetail", EOpMethodCalculateLevelOfDetail); + symbolTable.relateToOperator("CalculateLevelOfDetailUnclamped", EOpMethodCalculateLevelOfDetailUnclamped); + + // SM5 Texture methods + symbolTable.relateToOperator("GatherRed", EOpMethodGatherRed); + symbolTable.relateToOperator("GatherGreen", EOpMethodGatherGreen); + symbolTable.relateToOperator("GatherBlue", EOpMethodGatherBlue); + symbolTable.relateToOperator("GatherAlpha", EOpMethodGatherAlpha); + symbolTable.relateToOperator("GatherCmpRed", EOpMethodGatherCmpRed); + symbolTable.relateToOperator("GatherCmpGreen", EOpMethodGatherCmpGreen); + symbolTable.relateToOperator("GatherCmpBlue", EOpMethodGatherCmpBlue); + symbolTable.relateToOperator("GatherCmpAlpha", EOpMethodGatherCmpAlpha); } // diff --git a/hlsl/hlslScanContext.cpp b/hlsl/hlslScanContext.cpp index 69e582f6..f25bdd8c 100755 --- a/hlsl/hlslScanContext.cpp +++ b/hlsl/hlslScanContext.cpp @@ -1,5 +1,6 @@ // //Copyright (C) 2016 Google, Inc. +//Copyright (C) 2016 LunarG, Inc. // //All rights reserved. // @@ -37,7 +38,7 @@ // HLSL scanning, leveraging the scanning done by the preprocessor. // -#include +#include #include #include @@ -113,12 +114,17 @@ void HlslScanContext::fillInKeywordMap() (*KeywordMap)["row_major"] = EHTokRowMajor; (*KeywordMap)["column_major"] = EHTokColumnMajor; (*KeywordMap)["packoffset"] = EHTokPackOffset; + (*KeywordMap)["in"] = EHTokIn; + (*KeywordMap)["out"] = EHTokOut; + (*KeywordMap)["inout"] = EHTokInOut; + (*KeywordMap)["layout"] = EHTokLayout; (*KeywordMap)["Buffer"] = EHTokBuffer; (*KeywordMap)["vector"] = EHTokVector; (*KeywordMap)["matrix"] = EHTokMatrix; (*KeywordMap)["void"] = EHTokVoid; + (*KeywordMap)["string"] = EHTokString; (*KeywordMap)["bool"] = EHTokBool; (*KeywordMap)["int"] = EHTokInt; (*KeywordMap)["uint"] = EHTokUint; @@ -249,8 +255,20 @@ void HlslScanContext::fillInKeywordMap() (*KeywordMap)["Texture2DArray"] = EHTokTexture2darray; (*KeywordMap)["Texture3D"] = EHTokTexture3d; (*KeywordMap)["TextureCube"] = EHTokTextureCube; + (*KeywordMap)["TextureCubeArray"] = EHTokTextureCubearray; + (*KeywordMap)["Texture2DMS"] = EHTokTexture2DMS; + (*KeywordMap)["Texture2DMSArray"] = EHTokTexture2DMSarray; + (*KeywordMap)["RWTexture1D"] = EHTokRWTexture1d; + (*KeywordMap)["RWTexture1DArray"] = EHTokRWTexture1darray; + (*KeywordMap)["RWTexture2D"] = EHTokRWTexture2d; + (*KeywordMap)["RWTexture2DArray"] = EHTokRWTexture2darray; + (*KeywordMap)["RWTexture3D"] = EHTokRWTexture3d; + (*KeywordMap)["RWBuffer"] = EHTokRWBuffer; + (*KeywordMap)["struct"] = EHTokStruct; + (*KeywordMap)["cbuffer"] = EHTokCBuffer; + (*KeywordMap)["tbuffer"] = EHTokTBuffer; (*KeywordMap)["typedef"] = EHTokTypedef; (*KeywordMap)["true"] = EHTokBoolConstant; @@ -401,6 +419,11 @@ EHlslTokenClass HlslScanContext::tokenizeClass(HlslToken& token) return token; } + case PpAtomConstString: { + parserToken->string = NewPoolTString(ppToken.name); + return EHTokStringConstant; + } + case EndOfInput: return EHTokNone; default: @@ -445,6 +468,11 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() case EHTokRowMajor: case EHTokColumnMajor: case EHTokPackOffset: + case EHTokIn: + case EHTokOut: + case EHTokInOut: + case EHTokPrecise: + case EHTokLayout: return keyword; // template types @@ -455,6 +483,7 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() // scalar types case EHTokVoid: + case EHTokString: case EHTokBool: case EHTokInt: case EHTokUint: @@ -556,11 +585,23 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() case EHTokTexture2darray: case EHTokTexture3d: case EHTokTextureCube: + case EHTokTextureCubearray: + case EHTokTexture2DMS: + case EHTokTexture2DMSarray: + case EHTokRWTexture1d: + case EHTokRWTexture1darray: + case EHTokRWTexture2d: + case EHTokRWTexture2darray: + case EHTokRWTexture3d: + case EHTokRWBuffer: return keyword; // variable, user type, ... case EHTokStruct: case EHTokTypedef: + case EHTokCBuffer: + case EHTokTBuffer: + return keyword; case EHTokBoolConstant: if (strcmp("true", tokenText) == 0) diff --git a/hlsl/hlslTokenStream.cpp b/hlsl/hlslTokenStream.cpp index 47f779a8..c915e0b5 100755 --- a/hlsl/hlslTokenStream.cpp +++ b/hlsl/hlslTokenStream.cpp @@ -39,27 +39,29 @@ namespace glslang { void HlslTokenStream::pushPreToken(const HlslToken& tok) { - assert(preTokenStackSize == 0); - preTokenStack = tok; - ++preTokenStackSize; + assert(preTokenStackSize < tokenBufferSize); + preTokenStack[preTokenStackSize++] = tok; } HlslToken HlslTokenStream::popPreToken() { - assert(preTokenStackSize == 1); - --preTokenStackSize; + assert(preTokenStackSize > 0); - return preTokenStack; + return preTokenStack[--preTokenStackSize]; } void HlslTokenStream::pushTokenBuffer(const HlslToken& tok) { - tokenBuffer = tok; + tokenBuffer[tokenBufferPos] = tok; + tokenBufferPos = (tokenBufferPos+1) % tokenBufferSize; } HlslToken HlslTokenStream::popTokenBuffer() { - return tokenBuffer; + // Back up + tokenBufferPos = (tokenBufferPos+tokenBufferSize-1) % tokenBufferSize; + + return tokenBuffer[tokenBufferPos]; } // Load 'token' with the next token in the stream of tokens. diff --git a/hlsl/hlslTokenStream.h b/hlsl/hlslTokenStream.h index 12c2a2a0..ec428894 100755 --- a/hlsl/hlslTokenStream.h +++ b/hlsl/hlslTokenStream.h @@ -43,7 +43,7 @@ namespace glslang { class HlslTokenStream { public: explicit HlslTokenStream(HlslScanContext& scanner) - : scanner(scanner), preTokenStackSize(0) { } + : scanner(scanner), preTokenStackSize(0), tokenBufferPos(0) { } virtual ~HlslTokenStream() { } public: @@ -62,20 +62,24 @@ namespace glslang { HlslScanContext& scanner; // lexical scanner, to get next token + // This is the number of tokens we can recedeToken() over. + static const int tokenBufferSize = 2; + // Previously scanned tokens, returned for future advances, // so logically in front of the token stream. // Is logically a stack; needs last in last out semantics. - // Currently implemented as a stack of size 1. - HlslToken preTokenStack; + // Currently implemented as a stack of size 2. + HlslToken preTokenStack[tokenBufferSize]; int preTokenStackSize; void pushPreToken(const HlslToken&); HlslToken popPreToken(); - // Previously scanned tokens, not yet return for future advances, + // Previously scanned tokens, not yet returned for future advances, // but available for that. // Is logically a fifo for normal advances, and a stack for recession. - // Currently implemented with an intrinsic size of 1. - HlslToken tokenBuffer; + // Currently implemented with an intrinsic size of 2. + HlslToken tokenBuffer[tokenBufferSize]; + int tokenBufferPos; void pushTokenBuffer(const HlslToken&); HlslToken popTokenBuffer(); }; diff --git a/hlsl/hlslTokens.h b/hlsl/hlslTokens.h index b3c1227d..2994001d 100755 --- a/hlsl/hlslTokens.h +++ b/hlsl/hlslTokens.h @@ -1,5 +1,6 @@ // //Copyright (C) 2016 Google, Inc. +//Copyright (C) 2016 LunarG, Inc. // //All rights reserved. // @@ -60,6 +61,10 @@ enum EHlslTokenClass { EHTokRowMajor, EHTokColumnMajor, EHTokPackOffset, + EHTokIn, + EHTokOut, + EHTokInOut, + EHTokLayout, // template types EHTokBuffer, @@ -68,6 +73,7 @@ enum EHlslTokenClass { // scalar types EHTokVoid, + EHTokString, EHTokBool, EHTokInt, EHTokUint, @@ -200,11 +206,23 @@ enum EHlslTokenClass { EHTokTexture2darray, EHTokTexture3d, EHTokTextureCube, + EHTokTextureCubearray, + EHTokTexture2DMS, + EHTokTexture2DMSarray, + EHTokRWTexture1d, + EHTokRWTexture1darray, + EHTokRWTexture2d, + EHTokRWTexture2darray, + EHTokRWTexture3d, + EHTokRWBuffer, + // variable, user type, ... EHTokIdentifier, EHTokTypeName, EHTokStruct, + EHTokCBuffer, + EHTokTBuffer, EHTokTypedef, // constant @@ -213,6 +231,7 @@ enum EHlslTokenClass { EHTokIntConstant, EHTokUintConstant, EHTokBoolConstant, + EHTokStringConstant, // control flow EHTokFor, @@ -278,4 +297,4 @@ enum EHlslTokenClass { } // end namespace glslang -#endif // EHLSLTOKENS_H_ \ No newline at end of file +#endif // EHLSLTOKENS_H_