Merge pull request #427 from wesleygriffin/master
Build: Bump required CMake version down to 2.8.11
diff --git a/OGLCompilersDLL/InitializeDll.cpp b/OGLCompilersDLL/InitializeDll.cpp
index cc2b742..e479881 100644
--- a/OGLCompilersDLL/InitializeDll.cpp
+++ b/OGLCompilersDLL/InitializeDll.cpp
@@ -34,7 +34,7 @@
#define SH_EXPORTING
-#include <assert.h>
+#include <cassert>
#include "InitializeDll.h"
#include "../glslang/Include/InitializeGlobals.h"
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index be266ac..5993e16 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -283,10 +283,10 @@
}
}
-// 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:
@@ -294,6 +294,12 @@
}
}
+// 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)
{
@@ -940,7 +946,7 @@
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());
@@ -1065,7 +1071,7 @@
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());
@@ -1142,7 +1148,7 @@
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
@@ -1187,7 +1193,7 @@
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());
@@ -1249,7 +1255,7 @@
assert(node->getOp());
- spv::Decoration precision = TranslatePrecisionDecoration(node->getType());
+ spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision());
switch (node->getOp()) {
case glslang::EOpSequence:
@@ -2573,7 +2579,7 @@
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];
@@ -3076,11 +3082,9 @@
// Handle comparison instructions
- if (reduceComparison && (builder.isVector(left) || builder.isMatrix(left) || builder.isAggregate(left))) {
- assert(op == glslang::EOpEqual || op == glslang::EOpNotEqual);
-
+ if (reduceComparison && (op == glslang::EOpEqual || op == glslang::EOpNotEqual)
+ && (builder.isVector(left) || builder.isMatrix(left) || builder.isAggregate(left)))
return builder.createCompositeCompare(precision, left, right, op == glslang::EOpEqual);
- }
switch (op) {
case glslang::EOpLessThan:
diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h
index e5e8e1b..c2dc529 100755
--- a/SPIRV/SPVRemapper.h
+++ b/SPIRV/SPVRemapper.h
@@ -38,7 +38,7 @@
#include <string>
#include <vector>
-#include <stdlib.h>
+#include <cstdlib>
namespace spv {
@@ -74,7 +74,7 @@
} // namespace SPV
#if !defined (use_cpp11)
-#include <stdio.h>
+#include <cstdio>
namespace spv {
class spirvbin_t : public spirvbin_base_t
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index 1411d16..f2af3b5 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -38,8 +38,8 @@
// SpvBuilder.h.
//
-#include <assert.h>
-#include <stdlib.h>
+#include <cassert>
+#include <cstdlib>
#include <unordered_set>
#include <algorithm>
diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp
index b60b3ba..a7838a1 100644
--- a/SPIRV/disassemble.cpp
+++ b/SPIRV/disassemble.cpp
@@ -36,9 +36,9 @@
// Disassembler for SPIR-V.
//
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
+#include <cstdlib>
+#include <cstring>
+#include <cassert>
#include <iomanip>
#include <stack>
#include <sstream>
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
index 9b58b59..a25f7c0 100755
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -33,7 +33,7 @@
//POSSIBILITY OF SUCH DAMAGE.
//
-// 1) Programatically fill in instruction/operand information.
+// 1) Programmatically fill in instruction/operand information.
// This can be used for disassembly, printing documentation, etc.
//
// 2) Print documentation from this parameterization.
@@ -41,8 +41,8 @@
#include "doc.h"
-#include <stdio.h>
-#include <string.h>
+#include <cstdio>
+#include <cstring>
#include <algorithm>
#ifdef AMD_EXTENSIONS
diff --git a/SPIRV/doc.h b/SPIRV/doc.h
index cf9e059..743896f 100644
--- a/SPIRV/doc.h
+++ b/SPIRV/doc.h
@@ -149,7 +149,7 @@
OperandMemorySemantics,
OperandMemoryAccess,
OperandScope,
- OperandGroupOperation,
+ OperandGroupOperation,
OperandKernelEnqueueFlags,
OperandKernelProfilingInfo,
OperandCapability,
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index c014be2..c0fdeb9 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -46,9 +46,9 @@
#include "../SPIRV/GLSL.std.450.h"
#include "../SPIRV/doc.h"
#include "../SPIRV/disassemble.h"
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
+#include <cstring>
+#include <cstdlib>
+#include <cmath>
#include "../glslang/OSDependent/osinclude.h"
diff --git a/Test/440.vert b/Test/440.vert
index bfcdfd2..2e61f79 100644
--- a/Test/440.vert
+++ b/Test/440.vert
@@ -73,6 +73,9 @@
layout(location = 56, component = 3) out float sf2o;
layout(location = 57, component = 2) out vec2 dv3o;
layout(location = 57, component = 3) out float sf4o; // ERROR, overlapping component
+layout(location=58) out flat dvec3 dv3o2; // uses part of location 59
+layout(location=59, component=2) out flat double dfo3; // okay, fits
+layout(location=59, component=0) out flat double dfo4; // ERROR, overlaps the dvec3 in starting in 58
out bblck1 {
vec4 bbv;
diff --git a/Test/baseResults/100.frag.out b/Test/baseResults/100.frag.out
index 70b8934..edd65ab 100644
--- a/Test/baseResults/100.frag.out
+++ b/Test/baseResults/100.frag.out
@@ -241,7 +241,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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/300.frag.out b/Test/baseResults/300.frag.out
index a0c2615..2a3341a 100644
--- a/Test/baseResults/300.frag.out
+++ b/Test/baseResults/300.frag.out
@@ -72,20 +72,20 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 80745ab..66a0651 100644
--- a/Test/baseResults/300.vert.out
+++ b/Test/baseResults/300.vert.out
@@ -175,7 +175,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 c2f12c9..a3bab69 100644
--- a/Test/baseResults/300BuiltIns.frag.out
+++ b/Test/baseResults/300BuiltIns.frag.out
@@ -128,12 +128,12 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 b56f070..9a5e4e8 100644
--- a/Test/baseResults/310.comp.out
+++ b/Test/baseResults/310.comp.out
@@ -122,7 +122,7 @@
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 @@
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 @@
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 @@
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 905a9ca..6cfd3f4 100644
--- a/Test/baseResults/310.frag.out
+++ b/Test/baseResults/310.frag.out
@@ -353,7 +353,7 @@
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 @@
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 @@
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 @@
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 678c3e1..84a50e8 100644
--- a/Test/baseResults/310.vert.out
+++ b/Test/baseResults/310.vert.out
@@ -125,12 +125,12 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 40c4321..83f105c 100644
--- a/Test/baseResults/310AofA.vert.out
+++ b/Test/baseResults/310AofA.vert.out
@@ -310,7 +310,7 @@
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 @@
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/440.vert.out b/Test/baseResults/440.vert.out
index d4cbb0b..2e1f5fe 100644
--- a/Test/baseResults/440.vert.out
+++ b/Test/baseResults/440.vert.out
@@ -23,74 +23,75 @@
ERROR: 0:67: 'component' : type overflows the available 4 components
ERROR: 0:71: 'location' : overlapping use of location 55
ERROR: 0:75: 'location' : overlapping use of location 57
-ERROR: 0:92: 'xfb layout qualifier' : can only be used on an output
-ERROR: 0:98: 'xfb_offset' : cannot declare a default, use a full declaration
-ERROR: 0:108: 'xfb_buffer' : member cannot contradict block (or what block inherited from global)
-ERROR: 0:113: 'xfb_buffer' : member cannot contradict block (or what block inherited from global)
-ERROR: 0:113: 'xfb_offset' : overlapping offsets at offset 32 in buffer 3
-ERROR: 0:114: 'xfb_offset' : overlapping offsets at offset 0 in buffer 2
-ERROR: 0:116: 'xfb_offset' : overlapping offsets at offset 24 in buffer 2
-ERROR: 0:119: 'xfb_stride' : all stride settings must match for xfb buffer 15
-ERROR: 0:123: 'xfb_offset' : overlapping offsets at offset 4 in buffer 1
-ERROR: 0:125: 'xfb_stride' : all stride settings must match for xfb buffer 3
-ERROR: 0:126: 'xfb_stride' : all stride settings must match for xfb buffer 3
-ERROR: 0:130: 'xfb_stride' : all stride settings must match for xfb buffer 3
+ERROR: 0:78: 'location' : overlapping use of location 59
+ERROR: 0:95: 'xfb layout qualifier' : can only be used on an output
+ERROR: 0:101: 'xfb_offset' : cannot declare a default, use a full declaration
+ERROR: 0:111: 'xfb_buffer' : member cannot contradict block (or what block inherited from global)
+ERROR: 0:116: 'xfb_buffer' : member cannot contradict block (or what block inherited from global)
+ERROR: 0:116: 'xfb_offset' : overlapping offsets at offset 32 in buffer 3
+ERROR: 0:117: 'xfb_offset' : overlapping offsets at offset 0 in buffer 2
+ERROR: 0:119: 'xfb_offset' : overlapping offsets at offset 24 in buffer 2
+ERROR: 0:122: 'xfb_stride' : all stride settings must match for xfb buffer 15
+ERROR: 0:126: 'xfb_offset' : overlapping offsets at offset 4 in buffer 1
ERROR: 0:128: 'xfb_stride' : all stride settings must match for xfb buffer 3
-ERROR: 0:149: 'xfb_offset' : overlapping offsets at offset 64 in buffer 0
-ERROR: 0:154: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
-ERROR: 0:155: 'xfb_offset' : must be a multiple of size of first component
-ERROR: 0:156: 'xfb_offset' : type contains double; xfb_offset must be a multiple of 8
+ERROR: 0:129: 'xfb_stride' : all stride settings must match for xfb buffer 3
+ERROR: 0:133: 'xfb_stride' : all stride settings must match for xfb buffer 3
+ERROR: 0:131: 'xfb_stride' : all stride settings must match for xfb buffer 3
+ERROR: 0:152: 'xfb_offset' : overlapping offsets at offset 64 in buffer 0
+ERROR: 0:157: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
ERROR: 0:158: 'xfb_offset' : must be a multiple of size of first component
ERROR: 0:159: 'xfb_offset' : type contains double; xfb_offset must be a multiple of 8
-ERROR: 0:163: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
+ERROR: 0:161: 'xfb_offset' : must be a multiple of size of first component
+ERROR: 0:162: 'xfb_offset' : type contains double; xfb_offset must be a multiple of 8
ERROR: 0:166: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
-ERROR: 0:166: 'xfb_stride' : 1/4 stride is too large: gl_MaxTransformFeedbackInterleavedComponents is 64
-ERROR: 0:168: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
-ERROR: 0:176: 'gl_BaseVertexARB' : required extension not requested: GL_ARB_shader_draw_parameters
-ERROR: 0:176: 'gl_BaseInstanceARB' : required extension not requested: GL_ARB_shader_draw_parameters
-ERROR: 0:176: 'gl_DrawIDARB' : required extension not requested: GL_ARB_shader_draw_parameters
-ERROR: 0:184: 'assign' : l-value required "gl_BaseVertexARB" (can't modify shader input)
-ERROR: 0:185: 'assign' : l-value required "gl_BaseInstanceARB" (can't modify shader input)
-ERROR: 0:186: 'assign' : l-value required "gl_DrawIDARB" (can't modify shader input)
-ERROR: 0:187: 'glBaseInstanceARB' : undeclared identifier
-ERROR: 53 compilation errors. No code generated.
+ERROR: 0:169: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
+ERROR: 0:169: 'xfb_stride' : 1/4 stride is too large: gl_MaxTransformFeedbackInterleavedComponents is 64
+ERROR: 0:171: 'xfb_buffer' : buffer is too large: gl_MaxTransformFeedbackBuffers is 4
+ERROR: 0:179: 'gl_BaseVertexARB' : required extension not requested: GL_ARB_shader_draw_parameters
+ERROR: 0:179: 'gl_BaseInstanceARB' : required extension not requested: GL_ARB_shader_draw_parameters
+ERROR: 0:179: 'gl_DrawIDARB' : required extension not requested: GL_ARB_shader_draw_parameters
+ERROR: 0:187: 'assign' : l-value required "gl_BaseVertexARB" (can't modify shader input)
+ERROR: 0:188: 'assign' : l-value required "gl_BaseInstanceARB" (can't modify shader input)
+ERROR: 0:189: 'assign' : l-value required "gl_DrawIDARB" (can't modify shader input)
+ERROR: 0:190: 'glBaseInstanceARB' : undeclared identifier
+ERROR: 54 compilation errors. No code generated.
Shader version: 440
Requested GL_ARB_shader_draw_parameters
in xfb mode
ERROR: node is still EOpNull!
-0:174 Function Definition: drawParamsBad( (global int)
-0:174 Function Parameters:
-0:176 Sequence
-0:176 Branch: Return with expression
-0:176 add (temp int)
-0:176 add (temp int)
-0:176 'gl_BaseVertexARB' (in int BaseVertex)
-0:176 'gl_BaseInstanceARB' (in int BaseInstance)
-0:176 'gl_DrawIDARB' (in int DrawId)
-0:181 Function Definition: drawParams( (global int)
-0:181 Function Parameters:
-0:183 Sequence
-0:183 Branch: Return with expression
-0:183 add (temp int)
-0:183 add (temp int)
-0:183 'gl_BaseVertexARB' (in int BaseVertex)
-0:183 'gl_BaseInstanceARB' (in int BaseInstance)
-0:183 'gl_DrawIDARB' (in int DrawId)
-0:184 move second child to first child (temp int)
-0:184 'gl_BaseVertexARB' (in int BaseVertex)
-0:184 Constant:
-0:184 3 (const int)
-0:185 move second child to first child (temp int)
-0:185 'gl_BaseInstanceARB' (in int BaseInstance)
-0:185 Constant:
-0:185 3 (const int)
-0:186 move second child to first child (temp int)
-0:186 'gl_DrawIDARB' (in int DrawId)
-0:186 Constant:
-0:186 3 (const int)
-0:187 'glBaseInstanceARB' (temp float)
+0:177 Function Definition: drawParamsBad( (global int)
+0:177 Function Parameters:
+0:179 Sequence
+0:179 Branch: Return with expression
+0:179 add (temp int)
+0:179 add (temp int)
+0:179 'gl_BaseVertexARB' (in int BaseVertex)
+0:179 'gl_BaseInstanceARB' (in int BaseInstance)
+0:179 'gl_DrawIDARB' (in int DrawId)
+0:184 Function Definition: drawParams( (global int)
+0:184 Function Parameters:
+0:186 Sequence
+0:186 Branch: Return with expression
+0:186 add (temp int)
+0:186 add (temp int)
+0:186 'gl_BaseVertexARB' (in int BaseVertex)
+0:186 'gl_BaseInstanceARB' (in int BaseInstance)
+0:186 'gl_DrawIDARB' (in int DrawId)
+0:187 move second child to first child (temp int)
+0:187 'gl_BaseVertexARB' (in int BaseVertex)
+0:187 Constant:
+0:187 3 (const int)
+0:188 move second child to first child (temp int)
+0:188 'gl_BaseInstanceARB' (in int BaseInstance)
+0:188 Constant:
+0:188 3 (const int)
+0:189 move second child to first child (temp int)
+0:189 'gl_DrawIDARB' (in int DrawId)
+0:189 Constant:
+0:189 3 (const int)
+0:190 'glBaseInstanceARB' (temp float)
0:? Linker Objects
0:? 'a' (layout(location=2 component=2 ) in 2-component vector of float)
0:? 'b' (layout(location=2 component=1 ) in float)
@@ -133,6 +134,9 @@
0:? 'sf2o' (layout(location=56 component=3 ) smooth out float)
0:? 'dv3o' (layout(location=57 component=2 ) smooth out 2-component vector of float)
0:? 'sf4o' (layout(location=57 component=3 ) smooth out float)
+0:? 'dv3o2' (layout(location=58 ) flat out 3-component vector of double)
+0:? 'dfo3' (layout(location=59 component=2 ) flat out double)
+0:? 'dfo4' (layout(location=59 component=0 ) flat out double)
0:? 'bbinst1' (out block{out 4-component vector of float bbv})
0:? 'bbinst2' (out block{layout(xfb_buffer=0 xfb_offset=64 ) out 4-component vector of float bbv})
0:? 'bbinst3' (out block{layout(xfb_buffer=3 xfb_offset=16 ) out 4-component vector of float bbv})
@@ -170,37 +174,37 @@
Requested GL_ARB_shader_draw_parameters
in xfb mode
ERROR: node is still EOpNull!
-0:174 Function Definition: drawParamsBad( (global int)
-0:174 Function Parameters:
-0:176 Sequence
-0:176 Branch: Return with expression
-0:176 add (temp int)
-0:176 add (temp int)
-0:176 'gl_BaseVertexARB' (in int BaseVertex)
-0:176 'gl_BaseInstanceARB' (in int BaseInstance)
-0:176 'gl_DrawIDARB' (in int DrawId)
-0:181 Function Definition: drawParams( (global int)
-0:181 Function Parameters:
-0:183 Sequence
-0:183 Branch: Return with expression
-0:183 add (temp int)
-0:183 add (temp int)
-0:183 'gl_BaseVertexARB' (in int BaseVertex)
-0:183 'gl_BaseInstanceARB' (in int BaseInstance)
-0:183 'gl_DrawIDARB' (in int DrawId)
-0:184 move second child to first child (temp int)
-0:184 'gl_BaseVertexARB' (in int BaseVertex)
-0:184 Constant:
-0:184 3 (const int)
-0:185 move second child to first child (temp int)
-0:185 'gl_BaseInstanceARB' (in int BaseInstance)
-0:185 Constant:
-0:185 3 (const int)
-0:186 move second child to first child (temp int)
-0:186 'gl_DrawIDARB' (in int DrawId)
-0:186 Constant:
-0:186 3 (const int)
-0:187 'glBaseInstanceARB' (temp float)
+0:177 Function Definition: drawParamsBad( (global int)
+0:177 Function Parameters:
+0:179 Sequence
+0:179 Branch: Return with expression
+0:179 add (temp int)
+0:179 add (temp int)
+0:179 'gl_BaseVertexARB' (in int BaseVertex)
+0:179 'gl_BaseInstanceARB' (in int BaseInstance)
+0:179 'gl_DrawIDARB' (in int DrawId)
+0:184 Function Definition: drawParams( (global int)
+0:184 Function Parameters:
+0:186 Sequence
+0:186 Branch: Return with expression
+0:186 add (temp int)
+0:186 add (temp int)
+0:186 'gl_BaseVertexARB' (in int BaseVertex)
+0:186 'gl_BaseInstanceARB' (in int BaseInstance)
+0:186 'gl_DrawIDARB' (in int DrawId)
+0:187 move second child to first child (temp int)
+0:187 'gl_BaseVertexARB' (in int BaseVertex)
+0:187 Constant:
+0:187 3 (const int)
+0:188 move second child to first child (temp int)
+0:188 'gl_BaseInstanceARB' (in int BaseInstance)
+0:188 Constant:
+0:188 3 (const int)
+0:189 move second child to first child (temp int)
+0:189 'gl_DrawIDARB' (in int DrawId)
+0:189 Constant:
+0:189 3 (const int)
+0:190 'glBaseInstanceARB' (temp float)
0:? Linker Objects
0:? 'a' (layout(location=2 component=2 ) in 2-component vector of float)
0:? 'b' (layout(location=2 component=1 ) in float)
@@ -243,6 +247,9 @@
0:? 'sf2o' (layout(location=56 component=3 ) smooth out float)
0:? 'dv3o' (layout(location=57 component=2 ) smooth out 2-component vector of float)
0:? 'sf4o' (layout(location=57 component=3 ) smooth out float)
+0:? 'dv3o2' (layout(location=58 ) flat out 3-component vector of double)
+0:? 'dfo3' (layout(location=59 component=2 ) flat out double)
+0:? 'dfo4' (layout(location=59 component=0 ) flat out double)
0:? 'bbinst1' (out block{out 4-component vector of float bbv})
0:? 'bbinst2' (out block{layout(xfb_buffer=0 xfb_offset=64 ) out 4-component vector of float bbv})
0:? 'bbinst3' (out block{layout(xfb_buffer=3 xfb_offset=16 ) out 4-component vector of float bbv})
diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
new file mode 100644
index 0000000..cad56b6
--- /dev/null
+++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
@@ -0,0 +1,884 @@
+hlsl.gatherRGBA.array.dx10.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:72 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function 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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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 FragDepth 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 FragDepth)
+0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:68 Constant:
+0:68 1 (const int)
+0:68 Constant:
+0:68 1.000000
+0:70 Branch: Return with expression
+0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? 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:? 'c1' (uniform float)
+0:? 'c2' (uniform 2-component vector of float)
+0:? 'c3' (uniform 3-component vector of float)
+0:? 'c4' (uniform 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:72 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:28 Function 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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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' (uniform 4-component vector of float)
+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 FragDepth 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 FragDepth)
+0:68 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:68 Constant:
+0:68 1 (const int)
+0:68 Constant:
+0:68 1.000000
+0:70 Branch: Return with expression
+0:70 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? 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:? 'c1' (uniform float)
+0:? 'c2' (uniform 2-component vector of float)
+0:? 'c3' (uniform 3-component vector of float)
+0:? 'c4' (uniform 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 220
+
+ Capability Shader
+ Capability Sampled1D
+ Capability SampledCubeArray
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 450
+ Name 4 "main"
+ Name 9 "txval00"
+ Name 12 "g_tTex2df4a"
+ Name 16 "g_sSamp"
+ Name 22 "c3"
+ Name 29 "txval01"
+ Name 32 "g_tTex2di4a"
+ Name 42 "txval02"
+ Name 45 "g_tTex2du4a"
+ Name 52 "txval10"
+ Name 59 "txval11"
+ Name 65 "txval12"
+ Name 71 "txval20"
+ Name 78 "txval21"
+ Name 84 "txval22"
+ Name 90 "txval30"
+ Name 97 "txval31"
+ Name 103 "txval32"
+ Name 109 "txval40"
+ Name 112 "g_tTexcdf4a"
+ Name 118 "c4"
+ Name 121 "txval41"
+ Name 124 "g_tTexcdi4a"
+ Name 131 "txval42"
+ Name 134 "g_tTexcdu4a"
+ Name 141 "txval50"
+ Name 147 "txval51"
+ Name 153 "txval52"
+ Name 159 "txval60"
+ Name 165 "txval61"
+ Name 171 "txval62"
+ Name 177 "txval70"
+ Name 183 "txval71"
+ Name 189 "txval72"
+ Name 195 "PS_OUTPUT"
+ MemberName 195(PS_OUTPUT) 0 "Color"
+ MemberName 195(PS_OUTPUT) 1 "Depth"
+ Name 197 "psout"
+ Name 205 "g_sSamp2d"
+ Name 208 "g_tTex1df4a"
+ Name 211 "g_tTex1di4a"
+ Name 214 "g_tTex1du4a"
+ Name 216 "c1"
+ Name 219 "c2"
+ Decorate 12(g_tTex2df4a) DescriptorSet 0
+ Decorate 16(g_sSamp) DescriptorSet 0
+ Decorate 16(g_sSamp) Binding 0
+ Decorate 32(g_tTex2di4a) DescriptorSet 0
+ Decorate 45(g_tTex2du4a) DescriptorSet 0
+ Decorate 112(g_tTexcdf4a) DescriptorSet 0
+ Decorate 124(g_tTexcdi4a) DescriptorSet 0
+ Decorate 134(g_tTexcdu4a) DescriptorSet 0
+ MemberDecorate 195(PS_OUTPUT) 1 BuiltIn FragDepth
+ Decorate 205(g_sSamp2d) DescriptorSet 0
+ Decorate 208(g_tTex1df4a) DescriptorSet 0
+ Decorate 208(g_tTex1df4a) Binding 0
+ Decorate 211(g_tTex1di4a) DescriptorSet 0
+ Decorate 214(g_tTex1du4a) DescriptorSet 0
+ 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: TypePointer UniformConstant 20(fvec3)
+ 22(c3): 21(ptr) Variable UniformConstant
+ 24: TypeInt 32 1
+ 25: 24(int) Constant 0
+ 27: TypeVector 24(int) 4
+ 28: TypePointer Function 27(ivec4)
+ 30: TypeImage 24(int) 2D array sampled format:Unknown
+ 31: TypePointer UniformConstant 30
+ 32(g_tTex2di4a): 31(ptr) Variable UniformConstant
+ 35: TypeSampledImage 30
+ 39: TypeInt 32 0
+ 40: TypeVector 39(int) 4
+ 41: TypePointer Function 40(ivec4)
+ 43: TypeImage 39(int) 2D array sampled format:Unknown
+ 44: TypePointer UniformConstant 43
+ 45(g_tTex2du4a): 44(ptr) Variable UniformConstant
+ 48: TypeSampledImage 43
+ 57: 24(int) Constant 1
+ 76: 24(int) Constant 2
+ 95: 24(int) Constant 3
+ 110: TypeImage 6(float) Cube array sampled format:Unknown
+ 111: TypePointer UniformConstant 110
+112(g_tTexcdf4a): 111(ptr) Variable UniformConstant
+ 115: TypeSampledImage 110
+ 117: TypePointer UniformConstant 7(fvec4)
+ 118(c4): 117(ptr) Variable UniformConstant
+ 122: TypeImage 24(int) Cube array sampled format:Unknown
+ 123: TypePointer UniformConstant 122
+124(g_tTexcdi4a): 123(ptr) Variable UniformConstant
+ 127: TypeSampledImage 122
+ 132: TypeImage 39(int) Cube array sampled format:Unknown
+ 133: TypePointer UniformConstant 132
+134(g_tTexcdu4a): 133(ptr) Variable UniformConstant
+ 137: TypeSampledImage 132
+ 195(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
+ 196: TypePointer Function 195(PS_OUTPUT)
+ 198: 6(float) Constant 1065353216
+ 199: 7(fvec4) ConstantComposite 198 198 198 198
+ 201: TypePointer Function 6(float)
+ 205(g_sSamp2d): 15(ptr) Variable UniformConstant
+ 206: TypeImage 6(float) 1D array sampled format:Unknown
+ 207: TypePointer UniformConstant 206
+208(g_tTex1df4a): 207(ptr) Variable UniformConstant
+ 209: TypeImage 24(int) 1D array sampled format:Unknown
+ 210: TypePointer UniformConstant 209
+211(g_tTex1di4a): 210(ptr) Variable UniformConstant
+ 212: TypeImage 39(int) 1D array sampled format:Unknown
+ 213: TypePointer UniformConstant 212
+214(g_tTex1du4a): 213(ptr) Variable UniformConstant
+ 215: TypePointer UniformConstant 6(float)
+ 216(c1): 215(ptr) Variable UniformConstant
+ 217: TypeVector 6(float) 2
+ 218: TypePointer UniformConstant 217(fvec2)
+ 219(c2): 218(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(txval00): 8(ptr) Variable Function
+ 29(txval01): 28(ptr) Variable Function
+ 42(txval02): 41(ptr) Variable Function
+ 52(txval10): 8(ptr) Variable Function
+ 59(txval11): 28(ptr) Variable Function
+ 65(txval12): 41(ptr) Variable Function
+ 71(txval20): 8(ptr) Variable Function
+ 78(txval21): 28(ptr) Variable Function
+ 84(txval22): 41(ptr) Variable Function
+ 90(txval30): 8(ptr) Variable Function
+ 97(txval31): 28(ptr) Variable Function
+ 103(txval32): 41(ptr) Variable Function
+ 109(txval40): 8(ptr) Variable Function
+ 121(txval41): 28(ptr) Variable Function
+ 131(txval42): 41(ptr) Variable Function
+ 141(txval50): 8(ptr) Variable Function
+ 147(txval51): 28(ptr) Variable Function
+ 153(txval52): 41(ptr) Variable Function
+ 159(txval60): 8(ptr) Variable Function
+ 165(txval61): 28(ptr) Variable Function
+ 171(txval62): 41(ptr) Variable Function
+ 177(txval70): 8(ptr) Variable Function
+ 183(txval71): 28(ptr) Variable Function
+ 189(txval72): 41(ptr) Variable Function
+ 197(psout): 196(ptr) Variable Function
+ 13: 10 Load 12(g_tTex2df4a)
+ 17: 14 Load 16(g_sSamp)
+ 19: 18 SampledImage 13 17
+ 23: 20(fvec3) Load 22(c3)
+ 26: 7(fvec4) ImageGather 19 23 25
+ Store 9(txval00) 26
+ 33: 30 Load 32(g_tTex2di4a)
+ 34: 14 Load 16(g_sSamp)
+ 36: 35 SampledImage 33 34
+ 37: 20(fvec3) Load 22(c3)
+ 38: 27(ivec4) ImageGather 36 37 25
+ Store 29(txval01) 38
+ 46: 43 Load 45(g_tTex2du4a)
+ 47: 14 Load 16(g_sSamp)
+ 49: 48 SampledImage 46 47
+ 50: 20(fvec3) Load 22(c3)
+ 51: 40(ivec4) ImageGather 49 50 25
+ Store 42(txval02) 51
+ 53: 10 Load 12(g_tTex2df4a)
+ 54: 14 Load 16(g_sSamp)
+ 55: 18 SampledImage 53 54
+ 56: 20(fvec3) Load 22(c3)
+ 58: 7(fvec4) ImageGather 55 56 57
+ Store 52(txval10) 58
+ 60: 30 Load 32(g_tTex2di4a)
+ 61: 14 Load 16(g_sSamp)
+ 62: 35 SampledImage 60 61
+ 63: 20(fvec3) Load 22(c3)
+ 64: 27(ivec4) ImageGather 62 63 57
+ Store 59(txval11) 64
+ 66: 43 Load 45(g_tTex2du4a)
+ 67: 14 Load 16(g_sSamp)
+ 68: 48 SampledImage 66 67
+ 69: 20(fvec3) Load 22(c3)
+ 70: 40(ivec4) ImageGather 68 69 57
+ Store 65(txval12) 70
+ 72: 10 Load 12(g_tTex2df4a)
+ 73: 14 Load 16(g_sSamp)
+ 74: 18 SampledImage 72 73
+ 75: 20(fvec3) Load 22(c3)
+ 77: 7(fvec4) ImageGather 74 75 76
+ Store 71(txval20) 77
+ 79: 30 Load 32(g_tTex2di4a)
+ 80: 14 Load 16(g_sSamp)
+ 81: 35 SampledImage 79 80
+ 82: 20(fvec3) Load 22(c3)
+ 83: 27(ivec4) ImageGather 81 82 76
+ Store 78(txval21) 83
+ 85: 43 Load 45(g_tTex2du4a)
+ 86: 14 Load 16(g_sSamp)
+ 87: 48 SampledImage 85 86
+ 88: 20(fvec3) Load 22(c3)
+ 89: 40(ivec4) ImageGather 87 88 76
+ Store 84(txval22) 89
+ 91: 10 Load 12(g_tTex2df4a)
+ 92: 14 Load 16(g_sSamp)
+ 93: 18 SampledImage 91 92
+ 94: 20(fvec3) Load 22(c3)
+ 96: 7(fvec4) ImageGather 93 94 95
+ Store 90(txval30) 96
+ 98: 30 Load 32(g_tTex2di4a)
+ 99: 14 Load 16(g_sSamp)
+ 100: 35 SampledImage 98 99
+ 101: 20(fvec3) Load 22(c3)
+ 102: 27(ivec4) ImageGather 100 101 95
+ Store 97(txval31) 102
+ 104: 43 Load 45(g_tTex2du4a)
+ 105: 14 Load 16(g_sSamp)
+ 106: 48 SampledImage 104 105
+ 107: 20(fvec3) Load 22(c3)
+ 108: 40(ivec4) ImageGather 106 107 95
+ Store 103(txval32) 108
+ 113: 110 Load 112(g_tTexcdf4a)
+ 114: 14 Load 16(g_sSamp)
+ 116: 115 SampledImage 113 114
+ 119: 7(fvec4) Load 118(c4)
+ 120: 7(fvec4) ImageGather 116 119 25
+ Store 109(txval40) 120
+ 125: 122 Load 124(g_tTexcdi4a)
+ 126: 14 Load 16(g_sSamp)
+ 128: 127 SampledImage 125 126
+ 129: 7(fvec4) Load 118(c4)
+ 130: 27(ivec4) ImageGather 128 129 25
+ Store 121(txval41) 130
+ 135: 132 Load 134(g_tTexcdu4a)
+ 136: 14 Load 16(g_sSamp)
+ 138: 137 SampledImage 135 136
+ 139: 7(fvec4) Load 118(c4)
+ 140: 40(ivec4) ImageGather 138 139 25
+ Store 131(txval42) 140
+ 142: 110 Load 112(g_tTexcdf4a)
+ 143: 14 Load 16(g_sSamp)
+ 144: 115 SampledImage 142 143
+ 145: 7(fvec4) Load 118(c4)
+ 146: 7(fvec4) ImageGather 144 145 57
+ Store 141(txval50) 146
+ 148: 122 Load 124(g_tTexcdi4a)
+ 149: 14 Load 16(g_sSamp)
+ 150: 127 SampledImage 148 149
+ 151: 7(fvec4) Load 118(c4)
+ 152: 27(ivec4) ImageGather 150 151 57
+ Store 147(txval51) 152
+ 154: 132 Load 134(g_tTexcdu4a)
+ 155: 14 Load 16(g_sSamp)
+ 156: 137 SampledImage 154 155
+ 157: 7(fvec4) Load 118(c4)
+ 158: 40(ivec4) ImageGather 156 157 57
+ Store 153(txval52) 158
+ 160: 110 Load 112(g_tTexcdf4a)
+ 161: 14 Load 16(g_sSamp)
+ 162: 115 SampledImage 160 161
+ 163: 7(fvec4) Load 118(c4)
+ 164: 7(fvec4) ImageGather 162 163 76
+ Store 159(txval60) 164
+ 166: 122 Load 124(g_tTexcdi4a)
+ 167: 14 Load 16(g_sSamp)
+ 168: 127 SampledImage 166 167
+ 169: 7(fvec4) Load 118(c4)
+ 170: 27(ivec4) ImageGather 168 169 76
+ Store 165(txval61) 170
+ 172: 132 Load 134(g_tTexcdu4a)
+ 173: 14 Load 16(g_sSamp)
+ 174: 137 SampledImage 172 173
+ 175: 7(fvec4) Load 118(c4)
+ 176: 40(ivec4) ImageGather 174 175 76
+ Store 171(txval62) 176
+ 178: 110 Load 112(g_tTexcdf4a)
+ 179: 14 Load 16(g_sSamp)
+ 180: 115 SampledImage 178 179
+ 181: 7(fvec4) Load 118(c4)
+ 182: 7(fvec4) ImageGather 180 181 95
+ Store 177(txval70) 182
+ 184: 122 Load 124(g_tTexcdi4a)
+ 185: 14 Load 16(g_sSamp)
+ 186: 127 SampledImage 184 185
+ 187: 7(fvec4) Load 118(c4)
+ 188: 27(ivec4) ImageGather 186 187 95
+ Store 183(txval71) 188
+ 190: 132 Load 134(g_tTexcdu4a)
+ 191: 14 Load 16(g_sSamp)
+ 192: 137 SampledImage 190 191
+ 193: 7(fvec4) Load 118(c4)
+ 194: 40(ivec4) ImageGather 192 193 95
+ Store 189(txval72) 194
+ 200: 8(ptr) AccessChain 197(psout) 25
+ Store 200 199
+ 202: 201(ptr) AccessChain 197(psout) 57
+ Store 202 198
+ 203:195(PS_OUTPUT) Load 197(psout)
+ ReturnValue 203
+ 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 0000000..8fd9691
--- /dev/null
+++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
@@ -0,0 +1,910 @@
+hlsl.gatherRGBA.basic.dx10.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:78 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 Function 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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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 FragDepth 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 FragDepth)
+0:74 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:74 Constant:
+0:74 1 (const int)
+0:74 Constant:
+0:74 1.000000
+0:76 Branch: Return with expression
+0:76 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? 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:? 'c1' (uniform float)
+0:? 'c2' (uniform 2-component vector of float)
+0:? 'c3' (uniform 3-component vector of float)
+0:? 'c4' (uniform 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:78 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:34 Function 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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 2-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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' (uniform 3-component vector of float)
+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 FragDepth 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 FragDepth)
+0:74 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:74 Constant:
+0:74 1 (const int)
+0:74 Constant:
+0:74 1.000000
+0:76 Branch: Return with expression
+0:76 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? 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:? 'c1' (uniform float)
+0:? 'c2' (uniform 2-component vector of float)
+0:? 'c3' (uniform 3-component vector of float)
+0:? 'c4' (uniform 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 230
+
+ Capability Shader
+ Capability Sampled1D
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 450
+ Name 4 "main"
+ Name 9 "txval00"
+ Name 12 "g_tTex2df4"
+ Name 16 "g_sSamp"
+ Name 22 "c2"
+ Name 29 "txval01"
+ Name 32 "g_tTex2di4"
+ Name 42 "txval02"
+ Name 45 "g_tTex2du4"
+ Name 52 "txval10"
+ Name 59 "txval11"
+ Name 65 "txval12"
+ Name 71 "txval20"
+ Name 78 "txval21"
+ Name 84 "txval22"
+ Name 90 "txval30"
+ Name 97 "txval31"
+ Name 103 "txval32"
+ Name 109 "txval40"
+ Name 112 "g_tTexcdf4"
+ Name 119 "c3"
+ Name 122 "txval41"
+ Name 125 "g_tTexcdi4"
+ Name 132 "txval42"
+ Name 135 "g_tTexcdu4"
+ Name 142 "txval50"
+ Name 148 "txval51"
+ Name 154 "txval52"
+ Name 160 "txval60"
+ Name 166 "txval61"
+ Name 172 "txval62"
+ Name 178 "txval70"
+ Name 184 "txval71"
+ Name 190 "txval72"
+ Name 196 "PS_OUTPUT"
+ MemberName 196(PS_OUTPUT) 0 "Color"
+ MemberName 196(PS_OUTPUT) 1 "Depth"
+ Name 198 "psout"
+ Name 206 "g_sSamp2d"
+ Name 209 "g_tTex1df4a"
+ Name 210 "g_tTex1df4"
+ Name 213 "g_tTex1di4"
+ Name 216 "g_tTex1du4"
+ Name 219 "g_tTex3df4"
+ Name 222 "g_tTex3di4"
+ Name 225 "g_tTex3du4"
+ Name 227 "c1"
+ Name 229 "c4"
+ 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 45(g_tTex2du4) DescriptorSet 0
+ Decorate 112(g_tTexcdf4) DescriptorSet 0
+ Decorate 125(g_tTexcdi4) DescriptorSet 0
+ Decorate 135(g_tTexcdu4) DescriptorSet 0
+ MemberDecorate 196(PS_OUTPUT) 1 BuiltIn FragDepth
+ Decorate 206(g_sSamp2d) DescriptorSet 0
+ Decorate 209(g_tTex1df4a) DescriptorSet 0
+ Decorate 209(g_tTex1df4a) Binding 1
+ Decorate 210(g_tTex1df4) DescriptorSet 0
+ Decorate 210(g_tTex1df4) Binding 0
+ Decorate 213(g_tTex1di4) DescriptorSet 0
+ Decorate 216(g_tTex1du4) DescriptorSet 0
+ Decorate 219(g_tTex3df4) DescriptorSet 0
+ Decorate 222(g_tTex3di4) DescriptorSet 0
+ Decorate 225(g_tTex3du4) DescriptorSet 0
+ 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: TypePointer UniformConstant 20(fvec2)
+ 22(c2): 21(ptr) Variable UniformConstant
+ 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
+ 39: TypeInt 32 0
+ 40: TypeVector 39(int) 4
+ 41: TypePointer Function 40(ivec4)
+ 43: TypeImage 39(int) 2D sampled format:Unknown
+ 44: TypePointer UniformConstant 43
+ 45(g_tTex2du4): 44(ptr) Variable UniformConstant
+ 48: TypeSampledImage 43
+ 57: 24(int) Constant 1
+ 76: 24(int) Constant 2
+ 95: 24(int) Constant 3
+ 110: TypeImage 6(float) Cube sampled format:Unknown
+ 111: TypePointer UniformConstant 110
+ 112(g_tTexcdf4): 111(ptr) Variable UniformConstant
+ 115: TypeSampledImage 110
+ 117: TypeVector 6(float) 3
+ 118: TypePointer UniformConstant 117(fvec3)
+ 119(c3): 118(ptr) Variable UniformConstant
+ 123: TypeImage 24(int) Cube sampled format:Unknown
+ 124: TypePointer UniformConstant 123
+ 125(g_tTexcdi4): 124(ptr) Variable UniformConstant
+ 128: TypeSampledImage 123
+ 133: TypeImage 39(int) Cube sampled format:Unknown
+ 134: TypePointer UniformConstant 133
+ 135(g_tTexcdu4): 134(ptr) Variable UniformConstant
+ 138: TypeSampledImage 133
+ 196(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
+ 197: TypePointer Function 196(PS_OUTPUT)
+ 199: 6(float) Constant 1065353216
+ 200: 7(fvec4) ConstantComposite 199 199 199 199
+ 202: TypePointer Function 6(float)
+ 206(g_sSamp2d): 15(ptr) Variable UniformConstant
+ 207: TypeImage 6(float) 1D sampled format:Unknown
+ 208: TypePointer UniformConstant 207
+209(g_tTex1df4a): 208(ptr) Variable UniformConstant
+ 210(g_tTex1df4): 208(ptr) Variable UniformConstant
+ 211: TypeImage 24(int) 1D sampled format:Unknown
+ 212: TypePointer UniformConstant 211
+ 213(g_tTex1di4): 212(ptr) Variable UniformConstant
+ 214: TypeImage 39(int) 1D sampled format:Unknown
+ 215: TypePointer UniformConstant 214
+ 216(g_tTex1du4): 215(ptr) Variable UniformConstant
+ 217: TypeImage 6(float) 3D sampled format:Unknown
+ 218: TypePointer UniformConstant 217
+ 219(g_tTex3df4): 218(ptr) Variable UniformConstant
+ 220: TypeImage 24(int) 3D sampled format:Unknown
+ 221: TypePointer UniformConstant 220
+ 222(g_tTex3di4): 221(ptr) Variable UniformConstant
+ 223: TypeImage 39(int) 3D sampled format:Unknown
+ 224: TypePointer UniformConstant 223
+ 225(g_tTex3du4): 224(ptr) Variable UniformConstant
+ 226: TypePointer UniformConstant 6(float)
+ 227(c1): 226(ptr) Variable UniformConstant
+ 228: TypePointer UniformConstant 7(fvec4)
+ 229(c4): 228(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(txval00): 8(ptr) Variable Function
+ 29(txval01): 28(ptr) Variable Function
+ 42(txval02): 41(ptr) Variable Function
+ 52(txval10): 8(ptr) Variable Function
+ 59(txval11): 28(ptr) Variable Function
+ 65(txval12): 41(ptr) Variable Function
+ 71(txval20): 8(ptr) Variable Function
+ 78(txval21): 28(ptr) Variable Function
+ 84(txval22): 41(ptr) Variable Function
+ 90(txval30): 8(ptr) Variable Function
+ 97(txval31): 28(ptr) Variable Function
+ 103(txval32): 41(ptr) Variable Function
+ 109(txval40): 8(ptr) Variable Function
+ 122(txval41): 28(ptr) Variable Function
+ 132(txval42): 41(ptr) Variable Function
+ 142(txval50): 8(ptr) Variable Function
+ 148(txval51): 28(ptr) Variable Function
+ 154(txval52): 41(ptr) Variable Function
+ 160(txval60): 8(ptr) Variable Function
+ 166(txval61): 28(ptr) Variable Function
+ 172(txval62): 41(ptr) Variable Function
+ 178(txval70): 8(ptr) Variable Function
+ 184(txval71): 28(ptr) Variable Function
+ 190(txval72): 41(ptr) Variable Function
+ 198(psout): 197(ptr) Variable Function
+ 13: 10 Load 12(g_tTex2df4)
+ 17: 14 Load 16(g_sSamp)
+ 19: 18 SampledImage 13 17
+ 23: 20(fvec2) Load 22(c2)
+ 26: 7(fvec4) ImageGather 19 23 25
+ Store 9(txval00) 26
+ 33: 30 Load 32(g_tTex2di4)
+ 34: 14 Load 16(g_sSamp)
+ 36: 35 SampledImage 33 34
+ 37: 20(fvec2) Load 22(c2)
+ 38: 27(ivec4) ImageGather 36 37 25
+ Store 29(txval01) 38
+ 46: 43 Load 45(g_tTex2du4)
+ 47: 14 Load 16(g_sSamp)
+ 49: 48 SampledImage 46 47
+ 50: 20(fvec2) Load 22(c2)
+ 51: 40(ivec4) ImageGather 49 50 25
+ Store 42(txval02) 51
+ 53: 10 Load 12(g_tTex2df4)
+ 54: 14 Load 16(g_sSamp)
+ 55: 18 SampledImage 53 54
+ 56: 20(fvec2) Load 22(c2)
+ 58: 7(fvec4) ImageGather 55 56 57
+ Store 52(txval10) 58
+ 60: 30 Load 32(g_tTex2di4)
+ 61: 14 Load 16(g_sSamp)
+ 62: 35 SampledImage 60 61
+ 63: 20(fvec2) Load 22(c2)
+ 64: 27(ivec4) ImageGather 62 63 57
+ Store 59(txval11) 64
+ 66: 43 Load 45(g_tTex2du4)
+ 67: 14 Load 16(g_sSamp)
+ 68: 48 SampledImage 66 67
+ 69: 20(fvec2) Load 22(c2)
+ 70: 40(ivec4) ImageGather 68 69 57
+ Store 65(txval12) 70
+ 72: 10 Load 12(g_tTex2df4)
+ 73: 14 Load 16(g_sSamp)
+ 74: 18 SampledImage 72 73
+ 75: 20(fvec2) Load 22(c2)
+ 77: 7(fvec4) ImageGather 74 75 76
+ Store 71(txval20) 77
+ 79: 30 Load 32(g_tTex2di4)
+ 80: 14 Load 16(g_sSamp)
+ 81: 35 SampledImage 79 80
+ 82: 20(fvec2) Load 22(c2)
+ 83: 27(ivec4) ImageGather 81 82 76
+ Store 78(txval21) 83
+ 85: 43 Load 45(g_tTex2du4)
+ 86: 14 Load 16(g_sSamp)
+ 87: 48 SampledImage 85 86
+ 88: 20(fvec2) Load 22(c2)
+ 89: 40(ivec4) ImageGather 87 88 76
+ Store 84(txval22) 89
+ 91: 10 Load 12(g_tTex2df4)
+ 92: 14 Load 16(g_sSamp)
+ 93: 18 SampledImage 91 92
+ 94: 20(fvec2) Load 22(c2)
+ 96: 7(fvec4) ImageGather 93 94 95
+ Store 90(txval30) 96
+ 98: 30 Load 32(g_tTex2di4)
+ 99: 14 Load 16(g_sSamp)
+ 100: 35 SampledImage 98 99
+ 101: 20(fvec2) Load 22(c2)
+ 102: 27(ivec4) ImageGather 100 101 95
+ Store 97(txval31) 102
+ 104: 43 Load 45(g_tTex2du4)
+ 105: 14 Load 16(g_sSamp)
+ 106: 48 SampledImage 104 105
+ 107: 20(fvec2) Load 22(c2)
+ 108: 40(ivec4) ImageGather 106 107 95
+ Store 103(txval32) 108
+ 113: 110 Load 112(g_tTexcdf4)
+ 114: 14 Load 16(g_sSamp)
+ 116: 115 SampledImage 113 114
+ 120: 117(fvec3) Load 119(c3)
+ 121: 7(fvec4) ImageGather 116 120 25
+ Store 109(txval40) 121
+ 126: 123 Load 125(g_tTexcdi4)
+ 127: 14 Load 16(g_sSamp)
+ 129: 128 SampledImage 126 127
+ 130: 117(fvec3) Load 119(c3)
+ 131: 27(ivec4) ImageGather 129 130 25
+ Store 122(txval41) 131
+ 136: 133 Load 135(g_tTexcdu4)
+ 137: 14 Load 16(g_sSamp)
+ 139: 138 SampledImage 136 137
+ 140: 117(fvec3) Load 119(c3)
+ 141: 40(ivec4) ImageGather 139 140 25
+ Store 132(txval42) 141
+ 143: 110 Load 112(g_tTexcdf4)
+ 144: 14 Load 16(g_sSamp)
+ 145: 115 SampledImage 143 144
+ 146: 117(fvec3) Load 119(c3)
+ 147: 7(fvec4) ImageGather 145 146 57
+ Store 142(txval50) 147
+ 149: 123 Load 125(g_tTexcdi4)
+ 150: 14 Load 16(g_sSamp)
+ 151: 128 SampledImage 149 150
+ 152: 117(fvec3) Load 119(c3)
+ 153: 27(ivec4) ImageGather 151 152 57
+ Store 148(txval51) 153
+ 155: 133 Load 135(g_tTexcdu4)
+ 156: 14 Load 16(g_sSamp)
+ 157: 138 SampledImage 155 156
+ 158: 117(fvec3) Load 119(c3)
+ 159: 40(ivec4) ImageGather 157 158 57
+ Store 154(txval52) 159
+ 161: 110 Load 112(g_tTexcdf4)
+ 162: 14 Load 16(g_sSamp)
+ 163: 115 SampledImage 161 162
+ 164: 117(fvec3) Load 119(c3)
+ 165: 7(fvec4) ImageGather 163 164 76
+ Store 160(txval60) 165
+ 167: 123 Load 125(g_tTexcdi4)
+ 168: 14 Load 16(g_sSamp)
+ 169: 128 SampledImage 167 168
+ 170: 117(fvec3) Load 119(c3)
+ 171: 27(ivec4) ImageGather 169 170 76
+ Store 166(txval61) 171
+ 173: 133 Load 135(g_tTexcdu4)
+ 174: 14 Load 16(g_sSamp)
+ 175: 138 SampledImage 173 174
+ 176: 117(fvec3) Load 119(c3)
+ 177: 40(ivec4) ImageGather 175 176 76
+ Store 172(txval62) 177
+ 179: 110 Load 112(g_tTexcdf4)
+ 180: 14 Load 16(g_sSamp)
+ 181: 115 SampledImage 179 180
+ 182: 117(fvec3) Load 119(c3)
+ 183: 7(fvec4) ImageGather 181 182 95
+ Store 178(txval70) 183
+ 185: 123 Load 125(g_tTexcdi4)
+ 186: 14 Load 16(g_sSamp)
+ 187: 128 SampledImage 185 186
+ 188: 117(fvec3) Load 119(c3)
+ 189: 27(ivec4) ImageGather 187 188 95
+ Store 184(txval71) 189
+ 191: 133 Load 135(g_tTexcdu4)
+ 192: 14 Load 16(g_sSamp)
+ 193: 138 SampledImage 191 192
+ 194: 117(fvec3) Load 119(c3)
+ 195: 40(ivec4) ImageGather 193 194 95
+ Store 190(txval72) 195
+ 201: 8(ptr) AccessChain 198(psout) 25
+ Store 201 200
+ 203: 202(ptr) AccessChain 198(psout) 57
+ Store 203 199
+ 204:196(PS_OUTPUT) Load 198(psout)
+ ReturnValue 204
+ 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 0000000..ea0d94a
--- /dev/null
+++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
@@ -0,0 +1,1148 @@
+hlsl.gatherRGBA.offset.dx10.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:117 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 Function 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' (uniform 2-component vector of float)
+0:46 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:47 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:48 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:50 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:50 'o2' (uniform 2-component vector of int)
+0:50 'o2' (uniform 2-component vector of int)
+0:50 'o2' (uniform 2-component vector of int)
+0:50 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:51 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:51 'o2' (uniform 2-component vector of int)
+0:51 'o2' (uniform 2-component vector of int)
+0:51 'o2' (uniform 2-component vector of int)
+0:51 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:52 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:52 'o2' (uniform 2-component vector of int)
+0:52 'o2' (uniform 2-component vector of int)
+0:52 'o2' (uniform 2-component vector of int)
+0:52 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:62 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:63 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:64 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:66 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:66 'o2' (uniform 2-component vector of int)
+0:66 'o2' (uniform 2-component vector of int)
+0:66 'o2' (uniform 2-component vector of int)
+0:66 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:67 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:67 'o2' (uniform 2-component vector of int)
+0:67 'o2' (uniform 2-component vector of int)
+0:67 'o2' (uniform 2-component vector of int)
+0:67 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:68 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:68 'o2' (uniform 2-component vector of int)
+0:68 'o2' (uniform 2-component vector of int)
+0:68 'o2' (uniform 2-component vector of int)
+0:68 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:78 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:79 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:80 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:82 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:82 'o2' (uniform 2-component vector of int)
+0:82 'o2' (uniform 2-component vector of int)
+0:82 'o2' (uniform 2-component vector of int)
+0:82 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:83 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:83 'o2' (uniform 2-component vector of int)
+0:83 'o2' (uniform 2-component vector of int)
+0:83 'o2' (uniform 2-component vector of int)
+0:83 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:84 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:84 'o2' (uniform 2-component vector of int)
+0:84 'o2' (uniform 2-component vector of int)
+0:84 'o2' (uniform 2-component vector of int)
+0:84 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:94 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:95 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:96 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:98 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:98 'o2' (uniform 2-component vector of int)
+0:98 'o2' (uniform 2-component vector of int)
+0:98 'o2' (uniform 2-component vector of int)
+0:98 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:99 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:99 'o2' (uniform 2-component vector of int)
+0:99 'o2' (uniform 2-component vector of int)
+0:99 'o2' (uniform 2-component vector of int)
+0:99 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:100 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:100 'o2' (uniform 2-component vector of int)
+0:100 'o2' (uniform 2-component vector of int)
+0:100 'o2' (uniform 2-component vector of int)
+0:100 'o2' (uniform 2-component vector of int)
+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 FragDepth 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 FragDepth)
+0:113 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:113 Constant:
+0:113 1 (const int)
+0:113 Constant:
+0:113 1.000000
+0:115 Branch: Return with expression
+0:115 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? 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:? 'c1' (uniform float)
+0:? 'c2' (uniform 2-component vector of float)
+0:? 'c3' (uniform 3-component vector of float)
+0:? 'c4' (uniform 4-component vector of float)
+0:? 'o1' (uniform int)
+0:? 'o2' (uniform 2-component vector of int)
+0:? 'o3' (uniform 3-component vector of int)
+0:? 'o4' (uniform 4-component vector of int)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:117 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:39 Function 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' (uniform 2-component vector of float)
+0:46 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:47 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:48 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:50 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:50 'o2' (uniform 2-component vector of int)
+0:50 'o2' (uniform 2-component vector of int)
+0:50 'o2' (uniform 2-component vector of int)
+0:50 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:51 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:51 'o2' (uniform 2-component vector of int)
+0:51 'o2' (uniform 2-component vector of int)
+0:51 'o2' (uniform 2-component vector of int)
+0:51 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:52 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:52 'o2' (uniform 2-component vector of int)
+0:52 'o2' (uniform 2-component vector of int)
+0:52 'o2' (uniform 2-component vector of int)
+0:52 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:62 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:63 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:64 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:66 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:66 'o2' (uniform 2-component vector of int)
+0:66 'o2' (uniform 2-component vector of int)
+0:66 'o2' (uniform 2-component vector of int)
+0:66 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:67 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:67 'o2' (uniform 2-component vector of int)
+0:67 'o2' (uniform 2-component vector of int)
+0:67 'o2' (uniform 2-component vector of int)
+0:67 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:68 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:68 'o2' (uniform 2-component vector of int)
+0:68 'o2' (uniform 2-component vector of int)
+0:68 'o2' (uniform 2-component vector of int)
+0:68 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:78 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:79 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:80 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:82 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:82 'o2' (uniform 2-component vector of int)
+0:82 'o2' (uniform 2-component vector of int)
+0:82 'o2' (uniform 2-component vector of int)
+0:82 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:83 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:83 'o2' (uniform 2-component vector of int)
+0:83 'o2' (uniform 2-component vector of int)
+0:83 'o2' (uniform 2-component vector of int)
+0:83 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:84 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:84 'o2' (uniform 2-component vector of int)
+0:84 'o2' (uniform 2-component vector of int)
+0:84 'o2' (uniform 2-component vector of int)
+0:84 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:94 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:95 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:96 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:98 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:98 'o2' (uniform 2-component vector of int)
+0:98 'o2' (uniform 2-component vector of int)
+0:98 'o2' (uniform 2-component vector of int)
+0:98 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:99 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:99 'o2' (uniform 2-component vector of int)
+0:99 'o2' (uniform 2-component vector of int)
+0:99 'o2' (uniform 2-component vector of int)
+0:99 'o2' (uniform 2-component vector of int)
+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' (uniform 2-component vector of float)
+0:100 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:100 'o2' (uniform 2-component vector of int)
+0:100 'o2' (uniform 2-component vector of int)
+0:100 'o2' (uniform 2-component vector of int)
+0:100 'o2' (uniform 2-component vector of int)
+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 FragDepth 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 FragDepth)
+0:113 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:113 Constant:
+0:113 1 (const int)
+0:113 Constant:
+0:113 1.000000
+0:115 Branch: Return with expression
+0:115 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? 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:? 'c1' (uniform float)
+0:? 'c2' (uniform 2-component vector of float)
+0:? 'c3' (uniform 3-component vector of float)
+0:? 'c4' (uniform 4-component vector of float)
+0:? 'o1' (uniform int)
+0:? 'o2' (uniform 2-component vector of int)
+0:? 'o3' (uniform 3-component vector of int)
+0:? 'o4' (uniform 4-component vector of int)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 311
+
+ Capability Shader
+ Capability ImageGatherExtended
+ Capability Sampled1D
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 450
+ Name 4 "main"
+ Name 9 "txval001"
+ Name 12 "g_tTex2df4"
+ Name 16 "g_sSamp"
+ Name 22 "c2"
+ Name 27 "o2"
+ Name 33 "txval011"
+ Name 36 "g_tTex2di4"
+ Name 47 "txval021"
+ Name 50 "g_tTex2du4"
+ Name 58 "txval004"
+ Name 71 "txval014"
+ Name 82 "txval024"
+ Name 93 "txval101"
+ Name 101 "txval111"
+ Name 108 "txval121"
+ Name 115 "txval104"
+ Name 126 "txval114"
+ Name 137 "txval124"
+ Name 148 "txval201"
+ Name 156 "txval211"
+ Name 163 "txval221"
+ Name 170 "txval204"
+ Name 181 "txval214"
+ Name 192 "txval224"
+ Name 203 "txval301"
+ Name 211 "txval311"
+ Name 218 "txval321"
+ Name 225 "txval304"
+ Name 236 "txval314"
+ Name 247 "txval324"
+ Name 258 "PS_OUTPUT"
+ MemberName 258(PS_OUTPUT) 0 "Color"
+ MemberName 258(PS_OUTPUT) 1 "Depth"
+ Name 260 "psout"
+ Name 268 "g_sSamp2d"
+ Name 271 "g_tTex1df4a"
+ Name 272 "g_tTex1df4"
+ Name 275 "g_tTex1di4"
+ Name 278 "g_tTex1du4"
+ Name 281 "g_tTex3df4"
+ Name 284 "g_tTex3di4"
+ Name 287 "g_tTex3du4"
+ Name 290 "g_tTexcdf4"
+ Name 293 "g_tTexcdi4"
+ Name 296 "g_tTexcdu4"
+ Name 298 "c1"
+ Name 301 "c3"
+ Name 303 "c4"
+ Name 305 "o1"
+ Name 308 "o3"
+ Name 310 "o4"
+ Decorate 12(g_tTex2df4) DescriptorSet 0
+ Decorate 16(g_sSamp) DescriptorSet 0
+ Decorate 16(g_sSamp) Binding 0
+ Decorate 36(g_tTex2di4) DescriptorSet 0
+ Decorate 50(g_tTex2du4) DescriptorSet 0
+ MemberDecorate 258(PS_OUTPUT) 1 BuiltIn FragDepth
+ Decorate 268(g_sSamp2d) DescriptorSet 0
+ Decorate 271(g_tTex1df4a) DescriptorSet 0
+ Decorate 271(g_tTex1df4a) Binding 1
+ Decorate 272(g_tTex1df4) DescriptorSet 0
+ Decorate 272(g_tTex1df4) Binding 0
+ Decorate 275(g_tTex1di4) DescriptorSet 0
+ Decorate 278(g_tTex1du4) DescriptorSet 0
+ Decorate 281(g_tTex3df4) DescriptorSet 0
+ Decorate 284(g_tTex3di4) DescriptorSet 0
+ Decorate 287(g_tTex3du4) DescriptorSet 0
+ Decorate 290(g_tTexcdf4) DescriptorSet 0
+ Decorate 293(g_tTexcdi4) DescriptorSet 0
+ Decorate 296(g_tTexcdu4) DescriptorSet 0
+ 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: TypePointer UniformConstant 20(fvec2)
+ 22(c2): 21(ptr) Variable UniformConstant
+ 24: TypeInt 32 1
+ 25: TypeVector 24(int) 2
+ 26: TypePointer UniformConstant 25(ivec2)
+ 27(o2): 26(ptr) Variable UniformConstant
+ 29: 24(int) Constant 0
+ 31: TypeVector 24(int) 4
+ 32: TypePointer Function 31(ivec4)
+ 34: TypeImage 24(int) 2D sampled format:Unknown
+ 35: TypePointer UniformConstant 34
+ 36(g_tTex2di4): 35(ptr) Variable UniformConstant
+ 39: TypeSampledImage 34
+ 44: TypeInt 32 0
+ 45: TypeVector 44(int) 4
+ 46: TypePointer Function 45(ivec4)
+ 48: TypeImage 44(int) 2D sampled format:Unknown
+ 49: TypePointer UniformConstant 48
+ 50(g_tTex2du4): 49(ptr) Variable UniformConstant
+ 53: TypeSampledImage 48
+ 67: 44(int) Constant 4
+ 68: TypeArray 25(ivec2) 67
+ 99: 24(int) Constant 1
+ 154: 24(int) Constant 2
+ 209: 24(int) Constant 3
+ 258(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
+ 259: TypePointer Function 258(PS_OUTPUT)
+ 261: 6(float) Constant 1065353216
+ 262: 7(fvec4) ConstantComposite 261 261 261 261
+ 264: TypePointer Function 6(float)
+ 268(g_sSamp2d): 15(ptr) Variable UniformConstant
+ 269: TypeImage 6(float) 1D sampled format:Unknown
+ 270: TypePointer UniformConstant 269
+271(g_tTex1df4a): 270(ptr) Variable UniformConstant
+ 272(g_tTex1df4): 270(ptr) Variable UniformConstant
+ 273: TypeImage 24(int) 1D sampled format:Unknown
+ 274: TypePointer UniformConstant 273
+ 275(g_tTex1di4): 274(ptr) Variable UniformConstant
+ 276: TypeImage 44(int) 1D sampled format:Unknown
+ 277: TypePointer UniformConstant 276
+ 278(g_tTex1du4): 277(ptr) Variable UniformConstant
+ 279: TypeImage 6(float) 3D sampled format:Unknown
+ 280: TypePointer UniformConstant 279
+ 281(g_tTex3df4): 280(ptr) Variable UniformConstant
+ 282: TypeImage 24(int) 3D sampled format:Unknown
+ 283: TypePointer UniformConstant 282
+ 284(g_tTex3di4): 283(ptr) Variable UniformConstant
+ 285: TypeImage 44(int) 3D sampled format:Unknown
+ 286: TypePointer UniformConstant 285
+ 287(g_tTex3du4): 286(ptr) Variable UniformConstant
+ 288: TypeImage 6(float) Cube sampled format:Unknown
+ 289: TypePointer UniformConstant 288
+ 290(g_tTexcdf4): 289(ptr) Variable UniformConstant
+ 291: TypeImage 24(int) Cube sampled format:Unknown
+ 292: TypePointer UniformConstant 291
+ 293(g_tTexcdi4): 292(ptr) Variable UniformConstant
+ 294: TypeImage 44(int) Cube sampled format:Unknown
+ 295: TypePointer UniformConstant 294
+ 296(g_tTexcdu4): 295(ptr) Variable UniformConstant
+ 297: TypePointer UniformConstant 6(float)
+ 298(c1): 297(ptr) Variable UniformConstant
+ 299: TypeVector 6(float) 3
+ 300: TypePointer UniformConstant 299(fvec3)
+ 301(c3): 300(ptr) Variable UniformConstant
+ 302: TypePointer UniformConstant 7(fvec4)
+ 303(c4): 302(ptr) Variable UniformConstant
+ 304: TypePointer UniformConstant 24(int)
+ 305(o1): 304(ptr) Variable UniformConstant
+ 306: TypeVector 24(int) 3
+ 307: TypePointer UniformConstant 306(ivec3)
+ 308(o3): 307(ptr) Variable UniformConstant
+ 309: TypePointer UniformConstant 31(ivec4)
+ 310(o4): 309(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(txval001): 8(ptr) Variable Function
+ 33(txval011): 32(ptr) Variable Function
+ 47(txval021): 46(ptr) Variable Function
+ 58(txval004): 8(ptr) Variable Function
+ 71(txval014): 32(ptr) Variable Function
+ 82(txval024): 46(ptr) Variable Function
+ 93(txval101): 8(ptr) Variable Function
+ 101(txval111): 32(ptr) Variable Function
+ 108(txval121): 46(ptr) Variable Function
+ 115(txval104): 8(ptr) Variable Function
+ 126(txval114): 32(ptr) Variable Function
+ 137(txval124): 46(ptr) Variable Function
+ 148(txval201): 8(ptr) Variable Function
+ 156(txval211): 32(ptr) Variable Function
+ 163(txval221): 46(ptr) Variable Function
+ 170(txval204): 8(ptr) Variable Function
+ 181(txval214): 32(ptr) Variable Function
+ 192(txval224): 46(ptr) Variable Function
+ 203(txval301): 8(ptr) Variable Function
+ 211(txval311): 32(ptr) Variable Function
+ 218(txval321): 46(ptr) Variable Function
+ 225(txval304): 8(ptr) Variable Function
+ 236(txval314): 32(ptr) Variable Function
+ 247(txval324): 46(ptr) Variable Function
+ 260(psout): 259(ptr) Variable Function
+ 13: 10 Load 12(g_tTex2df4)
+ 17: 14 Load 16(g_sSamp)
+ 19: 18 SampledImage 13 17
+ 23: 20(fvec2) Load 22(c2)
+ 28: 25(ivec2) Load 27(o2)
+ 30: 7(fvec4) ImageGather 19 23 29 Offset 28
+ Store 9(txval001) 30
+ 37: 34 Load 36(g_tTex2di4)
+ 38: 14 Load 16(g_sSamp)
+ 40: 39 SampledImage 37 38
+ 41: 20(fvec2) Load 22(c2)
+ 42: 25(ivec2) Load 27(o2)
+ 43: 31(ivec4) ImageGather 40 41 29 Offset 42
+ Store 33(txval011) 43
+ 51: 48 Load 50(g_tTex2du4)
+ 52: 14 Load 16(g_sSamp)
+ 54: 53 SampledImage 51 52
+ 55: 20(fvec2) Load 22(c2)
+ 56: 25(ivec2) Load 27(o2)
+ 57: 45(ivec4) ImageGather 54 55 29 Offset 56
+ Store 47(txval021) 57
+ 59: 10 Load 12(g_tTex2df4)
+ 60: 14 Load 16(g_sSamp)
+ 61: 18 SampledImage 59 60
+ 62: 20(fvec2) Load 22(c2)
+ 63: 25(ivec2) Load 27(o2)
+ 64: 25(ivec2) Load 27(o2)
+ 65: 25(ivec2) Load 27(o2)
+ 66: 25(ivec2) Load 27(o2)
+ 69: 68 CompositeConstruct 63 64 65 66
+ 70: 7(fvec4) ImageGather 61 62 29 ConstOffsets 69
+ Store 58(txval004) 70
+ 72: 34 Load 36(g_tTex2di4)
+ 73: 14 Load 16(g_sSamp)
+ 74: 39 SampledImage 72 73
+ 75: 20(fvec2) Load 22(c2)
+ 76: 25(ivec2) Load 27(o2)
+ 77: 25(ivec2) Load 27(o2)
+ 78: 25(ivec2) Load 27(o2)
+ 79: 25(ivec2) Load 27(o2)
+ 80: 68 CompositeConstruct 76 77 78 79
+ 81: 31(ivec4) ImageGather 74 75 29 ConstOffsets 80
+ Store 71(txval014) 81
+ 83: 48 Load 50(g_tTex2du4)
+ 84: 14 Load 16(g_sSamp)
+ 85: 53 SampledImage 83 84
+ 86: 20(fvec2) Load 22(c2)
+ 87: 25(ivec2) Load 27(o2)
+ 88: 25(ivec2) Load 27(o2)
+ 89: 25(ivec2) Load 27(o2)
+ 90: 25(ivec2) Load 27(o2)
+ 91: 68 CompositeConstruct 87 88 89 90
+ 92: 45(ivec4) ImageGather 85 86 29 ConstOffsets 91
+ Store 82(txval024) 92
+ 94: 10 Load 12(g_tTex2df4)
+ 95: 14 Load 16(g_sSamp)
+ 96: 18 SampledImage 94 95
+ 97: 20(fvec2) Load 22(c2)
+ 98: 25(ivec2) Load 27(o2)
+ 100: 7(fvec4) ImageGather 96 97 99 Offset 98
+ Store 93(txval101) 100
+ 102: 34 Load 36(g_tTex2di4)
+ 103: 14 Load 16(g_sSamp)
+ 104: 39 SampledImage 102 103
+ 105: 20(fvec2) Load 22(c2)
+ 106: 25(ivec2) Load 27(o2)
+ 107: 31(ivec4) ImageGather 104 105 99 Offset 106
+ Store 101(txval111) 107
+ 109: 48 Load 50(g_tTex2du4)
+ 110: 14 Load 16(g_sSamp)
+ 111: 53 SampledImage 109 110
+ 112: 20(fvec2) Load 22(c2)
+ 113: 25(ivec2) Load 27(o2)
+ 114: 45(ivec4) ImageGather 111 112 99 Offset 113
+ Store 108(txval121) 114
+ 116: 10 Load 12(g_tTex2df4)
+ 117: 14 Load 16(g_sSamp)
+ 118: 18 SampledImage 116 117
+ 119: 20(fvec2) Load 22(c2)
+ 120: 25(ivec2) Load 27(o2)
+ 121: 25(ivec2) Load 27(o2)
+ 122: 25(ivec2) Load 27(o2)
+ 123: 25(ivec2) Load 27(o2)
+ 124: 68 CompositeConstruct 120 121 122 123
+ 125: 7(fvec4) ImageGather 118 119 99 ConstOffsets 124
+ Store 115(txval104) 125
+ 127: 34 Load 36(g_tTex2di4)
+ 128: 14 Load 16(g_sSamp)
+ 129: 39 SampledImage 127 128
+ 130: 20(fvec2) Load 22(c2)
+ 131: 25(ivec2) Load 27(o2)
+ 132: 25(ivec2) Load 27(o2)
+ 133: 25(ivec2) Load 27(o2)
+ 134: 25(ivec2) Load 27(o2)
+ 135: 68 CompositeConstruct 131 132 133 134
+ 136: 31(ivec4) ImageGather 129 130 99 ConstOffsets 135
+ Store 126(txval114) 136
+ 138: 48 Load 50(g_tTex2du4)
+ 139: 14 Load 16(g_sSamp)
+ 140: 53 SampledImage 138 139
+ 141: 20(fvec2) Load 22(c2)
+ 142: 25(ivec2) Load 27(o2)
+ 143: 25(ivec2) Load 27(o2)
+ 144: 25(ivec2) Load 27(o2)
+ 145: 25(ivec2) Load 27(o2)
+ 146: 68 CompositeConstruct 142 143 144 145
+ 147: 45(ivec4) ImageGather 140 141 99 ConstOffsets 146
+ Store 137(txval124) 147
+ 149: 10 Load 12(g_tTex2df4)
+ 150: 14 Load 16(g_sSamp)
+ 151: 18 SampledImage 149 150
+ 152: 20(fvec2) Load 22(c2)
+ 153: 25(ivec2) Load 27(o2)
+ 155: 7(fvec4) ImageGather 151 152 154 Offset 153
+ Store 148(txval201) 155
+ 157: 34 Load 36(g_tTex2di4)
+ 158: 14 Load 16(g_sSamp)
+ 159: 39 SampledImage 157 158
+ 160: 20(fvec2) Load 22(c2)
+ 161: 25(ivec2) Load 27(o2)
+ 162: 31(ivec4) ImageGather 159 160 154 Offset 161
+ Store 156(txval211) 162
+ 164: 48 Load 50(g_tTex2du4)
+ 165: 14 Load 16(g_sSamp)
+ 166: 53 SampledImage 164 165
+ 167: 20(fvec2) Load 22(c2)
+ 168: 25(ivec2) Load 27(o2)
+ 169: 45(ivec4) ImageGather 166 167 154 Offset 168
+ Store 163(txval221) 169
+ 171: 10 Load 12(g_tTex2df4)
+ 172: 14 Load 16(g_sSamp)
+ 173: 18 SampledImage 171 172
+ 174: 20(fvec2) Load 22(c2)
+ 175: 25(ivec2) Load 27(o2)
+ 176: 25(ivec2) Load 27(o2)
+ 177: 25(ivec2) Load 27(o2)
+ 178: 25(ivec2) Load 27(o2)
+ 179: 68 CompositeConstruct 175 176 177 178
+ 180: 7(fvec4) ImageGather 173 174 154 ConstOffsets 179
+ Store 170(txval204) 180
+ 182: 34 Load 36(g_tTex2di4)
+ 183: 14 Load 16(g_sSamp)
+ 184: 39 SampledImage 182 183
+ 185: 20(fvec2) Load 22(c2)
+ 186: 25(ivec2) Load 27(o2)
+ 187: 25(ivec2) Load 27(o2)
+ 188: 25(ivec2) Load 27(o2)
+ 189: 25(ivec2) Load 27(o2)
+ 190: 68 CompositeConstruct 186 187 188 189
+ 191: 31(ivec4) ImageGather 184 185 154 ConstOffsets 190
+ Store 181(txval214) 191
+ 193: 48 Load 50(g_tTex2du4)
+ 194: 14 Load 16(g_sSamp)
+ 195: 53 SampledImage 193 194
+ 196: 20(fvec2) Load 22(c2)
+ 197: 25(ivec2) Load 27(o2)
+ 198: 25(ivec2) Load 27(o2)
+ 199: 25(ivec2) Load 27(o2)
+ 200: 25(ivec2) Load 27(o2)
+ 201: 68 CompositeConstruct 197 198 199 200
+ 202: 45(ivec4) ImageGather 195 196 154 ConstOffsets 201
+ Store 192(txval224) 202
+ 204: 10 Load 12(g_tTex2df4)
+ 205: 14 Load 16(g_sSamp)
+ 206: 18 SampledImage 204 205
+ 207: 20(fvec2) Load 22(c2)
+ 208: 25(ivec2) Load 27(o2)
+ 210: 7(fvec4) ImageGather 206 207 209 Offset 208
+ Store 203(txval301) 210
+ 212: 34 Load 36(g_tTex2di4)
+ 213: 14 Load 16(g_sSamp)
+ 214: 39 SampledImage 212 213
+ 215: 20(fvec2) Load 22(c2)
+ 216: 25(ivec2) Load 27(o2)
+ 217: 31(ivec4) ImageGather 214 215 209 Offset 216
+ Store 211(txval311) 217
+ 219: 48 Load 50(g_tTex2du4)
+ 220: 14 Load 16(g_sSamp)
+ 221: 53 SampledImage 219 220
+ 222: 20(fvec2) Load 22(c2)
+ 223: 25(ivec2) Load 27(o2)
+ 224: 45(ivec4) ImageGather 221 222 209 Offset 223
+ Store 218(txval321) 224
+ 226: 10 Load 12(g_tTex2df4)
+ 227: 14 Load 16(g_sSamp)
+ 228: 18 SampledImage 226 227
+ 229: 20(fvec2) Load 22(c2)
+ 230: 25(ivec2) Load 27(o2)
+ 231: 25(ivec2) Load 27(o2)
+ 232: 25(ivec2) Load 27(o2)
+ 233: 25(ivec2) Load 27(o2)
+ 234: 68 CompositeConstruct 230 231 232 233
+ 235: 7(fvec4) ImageGather 228 229 209 ConstOffsets 234
+ Store 225(txval304) 235
+ 237: 34 Load 36(g_tTex2di4)
+ 238: 14 Load 16(g_sSamp)
+ 239: 39 SampledImage 237 238
+ 240: 20(fvec2) Load 22(c2)
+ 241: 25(ivec2) Load 27(o2)
+ 242: 25(ivec2) Load 27(o2)
+ 243: 25(ivec2) Load 27(o2)
+ 244: 25(ivec2) Load 27(o2)
+ 245: 68 CompositeConstruct 241 242 243 244
+ 246: 31(ivec4) ImageGather 239 240 209 ConstOffsets 245
+ Store 236(txval314) 246
+ 248: 48 Load 50(g_tTex2du4)
+ 249: 14 Load 16(g_sSamp)
+ 250: 53 SampledImage 248 249
+ 251: 20(fvec2) Load 22(c2)
+ 252: 25(ivec2) Load 27(o2)
+ 253: 25(ivec2) Load 27(o2)
+ 254: 25(ivec2) Load 27(o2)
+ 255: 25(ivec2) Load 27(o2)
+ 256: 68 CompositeConstruct 252 253 254 255
+ 257: 45(ivec4) ImageGather 250 251 209 ConstOffsets 256
+ Store 247(txval324) 257
+ 263: 8(ptr) AccessChain 260(psout) 29
+ Store 263 262
+ 265: 264(ptr) AccessChain 260(psout) 99
+ Store 265 261
+ 266:258(PS_OUTPUT) Load 260(psout)
+ ReturnValue 266
+ 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 0000000..f9c28d0
--- /dev/null
+++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
@@ -0,0 +1,1122 @@
+hlsl.gatherRGBA.offsetarray.dx10.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:111 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 Function 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' (uniform 3-component vector of float)
+0:40 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:41 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:42 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:44 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:44 'o2' (uniform 2-component vector of int)
+0:44 'o2' (uniform 2-component vector of int)
+0:44 'o2' (uniform 2-component vector of int)
+0:44 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:45 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:45 'o2' (uniform 2-component vector of int)
+0:45 'o2' (uniform 2-component vector of int)
+0:45 'o2' (uniform 2-component vector of int)
+0:45 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:46 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:46 'o2' (uniform 2-component vector of int)
+0:46 'o2' (uniform 2-component vector of int)
+0:46 'o2' (uniform 2-component vector of int)
+0:46 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:56 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:57 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:58 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:60 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:60 'o2' (uniform 2-component vector of int)
+0:60 'o2' (uniform 2-component vector of int)
+0:60 'o2' (uniform 2-component vector of int)
+0:60 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:61 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:61 'o2' (uniform 2-component vector of int)
+0:61 'o2' (uniform 2-component vector of int)
+0:61 'o2' (uniform 2-component vector of int)
+0:61 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:62 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:62 'o2' (uniform 2-component vector of int)
+0:62 'o2' (uniform 2-component vector of int)
+0:62 'o2' (uniform 2-component vector of int)
+0:62 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:72 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:73 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:74 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:76 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:76 'o2' (uniform 2-component vector of int)
+0:76 'o2' (uniform 2-component vector of int)
+0:76 'o2' (uniform 2-component vector of int)
+0:76 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:77 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:77 'o2' (uniform 2-component vector of int)
+0:77 'o2' (uniform 2-component vector of int)
+0:77 'o2' (uniform 2-component vector of int)
+0:77 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:78 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:78 'o2' (uniform 2-component vector of int)
+0:78 'o2' (uniform 2-component vector of int)
+0:78 'o2' (uniform 2-component vector of int)
+0:78 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:88 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:89 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:90 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:92 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:92 'o2' (uniform 2-component vector of int)
+0:92 'o2' (uniform 2-component vector of int)
+0:92 'o2' (uniform 2-component vector of int)
+0:92 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:93 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:93 'o2' (uniform 2-component vector of int)
+0:93 'o2' (uniform 2-component vector of int)
+0:93 'o2' (uniform 2-component vector of int)
+0:93 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:94 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:94 'o2' (uniform 2-component vector of int)
+0:94 'o2' (uniform 2-component vector of int)
+0:94 'o2' (uniform 2-component vector of int)
+0:94 'o2' (uniform 2-component vector of int)
+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 FragDepth 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 FragDepth)
+0:107 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 1.000000
+0:109 Branch: Return with expression
+0:109 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? 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:? 'c1' (uniform float)
+0:? 'c2' (uniform 2-component vector of float)
+0:? 'c3' (uniform 3-component vector of float)
+0:? 'c4' (uniform 4-component vector of float)
+0:? 'o1' (uniform int)
+0:? 'o2' (uniform 2-component vector of int)
+0:? 'o3' (uniform 3-component vector of int)
+0:? 'o4' (uniform 4-component vector of int)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:111 Function Definition: main( (global structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:33 Function 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' (uniform 3-component vector of float)
+0:40 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:41 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:42 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:44 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:44 'o2' (uniform 2-component vector of int)
+0:44 'o2' (uniform 2-component vector of int)
+0:44 'o2' (uniform 2-component vector of int)
+0:44 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:45 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:45 'o2' (uniform 2-component vector of int)
+0:45 'o2' (uniform 2-component vector of int)
+0:45 'o2' (uniform 2-component vector of int)
+0:45 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:46 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:46 'o2' (uniform 2-component vector of int)
+0:46 'o2' (uniform 2-component vector of int)
+0:46 'o2' (uniform 2-component vector of int)
+0:46 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:56 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:57 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:58 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:60 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:60 'o2' (uniform 2-component vector of int)
+0:60 'o2' (uniform 2-component vector of int)
+0:60 'o2' (uniform 2-component vector of int)
+0:60 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:61 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:61 'o2' (uniform 2-component vector of int)
+0:61 'o2' (uniform 2-component vector of int)
+0:61 'o2' (uniform 2-component vector of int)
+0:61 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:62 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:62 'o2' (uniform 2-component vector of int)
+0:62 'o2' (uniform 2-component vector of int)
+0:62 'o2' (uniform 2-component vector of int)
+0:62 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:72 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:73 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:74 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:76 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:76 'o2' (uniform 2-component vector of int)
+0:76 'o2' (uniform 2-component vector of int)
+0:76 'o2' (uniform 2-component vector of int)
+0:76 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:77 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:77 'o2' (uniform 2-component vector of int)
+0:77 'o2' (uniform 2-component vector of int)
+0:77 'o2' (uniform 2-component vector of int)
+0:77 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:78 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:78 'o2' (uniform 2-component vector of int)
+0:78 'o2' (uniform 2-component vector of int)
+0:78 'o2' (uniform 2-component vector of int)
+0:78 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:88 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:89 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:90 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:92 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:92 'o2' (uniform 2-component vector of int)
+0:92 'o2' (uniform 2-component vector of int)
+0:92 'o2' (uniform 2-component vector of int)
+0:92 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:93 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:93 'o2' (uniform 2-component vector of int)
+0:93 'o2' (uniform 2-component vector of int)
+0:93 'o2' (uniform 2-component vector of int)
+0:93 'o2' (uniform 2-component vector of int)
+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' (uniform 3-component vector of float)
+0:94 Construct ivec2 (temp 4-element array of 2-component vector of int)
+0:94 'o2' (uniform 2-component vector of int)
+0:94 'o2' (uniform 2-component vector of int)
+0:94 'o2' (uniform 2-component vector of int)
+0:94 'o2' (uniform 2-component vector of int)
+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 FragDepth 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 FragDepth)
+0:107 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 1.000000
+0:109 Branch: Return with expression
+0:109 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
+0:? 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:? 'c1' (uniform float)
+0:? 'c2' (uniform 2-component vector of float)
+0:? 'c3' (uniform 3-component vector of float)
+0:? 'c4' (uniform 4-component vector of float)
+0:? 'o1' (uniform int)
+0:? 'o2' (uniform 2-component vector of int)
+0:? 'o3' (uniform 3-component vector of int)
+0:? 'o4' (uniform 4-component vector of int)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 301
+
+ Capability Shader
+ Capability ImageGatherExtended
+ Capability Sampled1D
+ Capability SampledCubeArray
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 450
+ Name 4 "main"
+ Name 9 "txval001"
+ Name 12 "g_tTex2df4a"
+ Name 16 "g_sSamp"
+ Name 22 "c3"
+ Name 27 "o2"
+ Name 33 "txval011"
+ Name 36 "g_tTex2di4a"
+ Name 47 "txval021"
+ Name 50 "g_tTex2du4a"
+ Name 58 "txval004"
+ Name 71 "txval014"
+ Name 82 "txval024"
+ Name 93 "txval101"
+ Name 101 "txval111"
+ Name 108 "txval121"
+ Name 115 "txval104"
+ Name 126 "txval114"
+ Name 137 "txval124"
+ Name 148 "txval201"
+ Name 156 "txval211"
+ Name 163 "txval221"
+ Name 170 "txval204"
+ Name 181 "txval214"
+ Name 192 "txval224"
+ Name 203 "txval301"
+ Name 211 "txval311"
+ Name 218 "txval321"
+ Name 225 "txval304"
+ Name 236 "txval314"
+ Name 247 "txval324"
+ Name 258 "PS_OUTPUT"
+ MemberName 258(PS_OUTPUT) 0 "Color"
+ MemberName 258(PS_OUTPUT) 1 "Depth"
+ Name 260 "psout"
+ Name 268 "g_sSamp2d"
+ Name 271 "g_tTex1df4a"
+ Name 274 "g_tTex1di4a"
+ Name 277 "g_tTex1du4a"
+ Name 280 "g_tTexcdf4a"
+ Name 283 "g_tTexcdi4a"
+ Name 286 "g_tTexcdu4a"
+ Name 288 "c1"
+ Name 291 "c2"
+ Name 293 "c4"
+ Name 295 "o1"
+ Name 298 "o3"
+ Name 300 "o4"
+ Decorate 12(g_tTex2df4a) DescriptorSet 0
+ Decorate 16(g_sSamp) DescriptorSet 0
+ Decorate 16(g_sSamp) Binding 0
+ Decorate 36(g_tTex2di4a) DescriptorSet 0
+ Decorate 50(g_tTex2du4a) DescriptorSet 0
+ MemberDecorate 258(PS_OUTPUT) 1 BuiltIn FragDepth
+ Decorate 268(g_sSamp2d) DescriptorSet 0
+ Decorate 271(g_tTex1df4a) DescriptorSet 0
+ Decorate 271(g_tTex1df4a) Binding 0
+ Decorate 274(g_tTex1di4a) DescriptorSet 0
+ Decorate 277(g_tTex1du4a) DescriptorSet 0
+ Decorate 280(g_tTexcdf4a) DescriptorSet 0
+ Decorate 283(g_tTexcdi4a) DescriptorSet 0
+ Decorate 286(g_tTexcdu4a) DescriptorSet 0
+ 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: TypePointer UniformConstant 20(fvec3)
+ 22(c3): 21(ptr) Variable UniformConstant
+ 24: TypeInt 32 1
+ 25: TypeVector 24(int) 2
+ 26: TypePointer UniformConstant 25(ivec2)
+ 27(o2): 26(ptr) Variable UniformConstant
+ 29: 24(int) Constant 0
+ 31: TypeVector 24(int) 4
+ 32: TypePointer Function 31(ivec4)
+ 34: TypeImage 24(int) 2D array sampled format:Unknown
+ 35: TypePointer UniformConstant 34
+ 36(g_tTex2di4a): 35(ptr) Variable UniformConstant
+ 39: TypeSampledImage 34
+ 44: TypeInt 32 0
+ 45: TypeVector 44(int) 4
+ 46: TypePointer Function 45(ivec4)
+ 48: TypeImage 44(int) 2D array sampled format:Unknown
+ 49: TypePointer UniformConstant 48
+ 50(g_tTex2du4a): 49(ptr) Variable UniformConstant
+ 53: TypeSampledImage 48
+ 67: 44(int) Constant 4
+ 68: TypeArray 25(ivec2) 67
+ 99: 24(int) Constant 1
+ 154: 24(int) Constant 2
+ 209: 24(int) Constant 3
+ 258(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
+ 259: TypePointer Function 258(PS_OUTPUT)
+ 261: 6(float) Constant 1065353216
+ 262: 7(fvec4) ConstantComposite 261 261 261 261
+ 264: TypePointer Function 6(float)
+ 268(g_sSamp2d): 15(ptr) Variable UniformConstant
+ 269: TypeImage 6(float) 1D array sampled format:Unknown
+ 270: TypePointer UniformConstant 269
+271(g_tTex1df4a): 270(ptr) Variable UniformConstant
+ 272: TypeImage 24(int) 1D array sampled format:Unknown
+ 273: TypePointer UniformConstant 272
+274(g_tTex1di4a): 273(ptr) Variable UniformConstant
+ 275: TypeImage 44(int) 1D array sampled format:Unknown
+ 276: TypePointer UniformConstant 275
+277(g_tTex1du4a): 276(ptr) Variable UniformConstant
+ 278: TypeImage 6(float) Cube array sampled format:Unknown
+ 279: TypePointer UniformConstant 278
+280(g_tTexcdf4a): 279(ptr) Variable UniformConstant
+ 281: TypeImage 24(int) Cube array sampled format:Unknown
+ 282: TypePointer UniformConstant 281
+283(g_tTexcdi4a): 282(ptr) Variable UniformConstant
+ 284: TypeImage 44(int) Cube array sampled format:Unknown
+ 285: TypePointer UniformConstant 284
+286(g_tTexcdu4a): 285(ptr) Variable UniformConstant
+ 287: TypePointer UniformConstant 6(float)
+ 288(c1): 287(ptr) Variable UniformConstant
+ 289: TypeVector 6(float) 2
+ 290: TypePointer UniformConstant 289(fvec2)
+ 291(c2): 290(ptr) Variable UniformConstant
+ 292: TypePointer UniformConstant 7(fvec4)
+ 293(c4): 292(ptr) Variable UniformConstant
+ 294: TypePointer UniformConstant 24(int)
+ 295(o1): 294(ptr) Variable UniformConstant
+ 296: TypeVector 24(int) 3
+ 297: TypePointer UniformConstant 296(ivec3)
+ 298(o3): 297(ptr) Variable UniformConstant
+ 299: TypePointer UniformConstant 31(ivec4)
+ 300(o4): 299(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(txval001): 8(ptr) Variable Function
+ 33(txval011): 32(ptr) Variable Function
+ 47(txval021): 46(ptr) Variable Function
+ 58(txval004): 8(ptr) Variable Function
+ 71(txval014): 32(ptr) Variable Function
+ 82(txval024): 46(ptr) Variable Function
+ 93(txval101): 8(ptr) Variable Function
+ 101(txval111): 32(ptr) Variable Function
+ 108(txval121): 46(ptr) Variable Function
+ 115(txval104): 8(ptr) Variable Function
+ 126(txval114): 32(ptr) Variable Function
+ 137(txval124): 46(ptr) Variable Function
+ 148(txval201): 8(ptr) Variable Function
+ 156(txval211): 32(ptr) Variable Function
+ 163(txval221): 46(ptr) Variable Function
+ 170(txval204): 8(ptr) Variable Function
+ 181(txval214): 32(ptr) Variable Function
+ 192(txval224): 46(ptr) Variable Function
+ 203(txval301): 8(ptr) Variable Function
+ 211(txval311): 32(ptr) Variable Function
+ 218(txval321): 46(ptr) Variable Function
+ 225(txval304): 8(ptr) Variable Function
+ 236(txval314): 32(ptr) Variable Function
+ 247(txval324): 46(ptr) Variable Function
+ 260(psout): 259(ptr) Variable Function
+ 13: 10 Load 12(g_tTex2df4a)
+ 17: 14 Load 16(g_sSamp)
+ 19: 18 SampledImage 13 17
+ 23: 20(fvec3) Load 22(c3)
+ 28: 25(ivec2) Load 27(o2)
+ 30: 7(fvec4) ImageGather 19 23 29 Offset 28
+ Store 9(txval001) 30
+ 37: 34 Load 36(g_tTex2di4a)
+ 38: 14 Load 16(g_sSamp)
+ 40: 39 SampledImage 37 38
+ 41: 20(fvec3) Load 22(c3)
+ 42: 25(ivec2) Load 27(o2)
+ 43: 31(ivec4) ImageGather 40 41 29 Offset 42
+ Store 33(txval011) 43
+ 51: 48 Load 50(g_tTex2du4a)
+ 52: 14 Load 16(g_sSamp)
+ 54: 53 SampledImage 51 52
+ 55: 20(fvec3) Load 22(c3)
+ 56: 25(ivec2) Load 27(o2)
+ 57: 45(ivec4) ImageGather 54 55 29 Offset 56
+ Store 47(txval021) 57
+ 59: 10 Load 12(g_tTex2df4a)
+ 60: 14 Load 16(g_sSamp)
+ 61: 18 SampledImage 59 60
+ 62: 20(fvec3) Load 22(c3)
+ 63: 25(ivec2) Load 27(o2)
+ 64: 25(ivec2) Load 27(o2)
+ 65: 25(ivec2) Load 27(o2)
+ 66: 25(ivec2) Load 27(o2)
+ 69: 68 CompositeConstruct 63 64 65 66
+ 70: 7(fvec4) ImageGather 61 62 29 ConstOffsets 69
+ Store 58(txval004) 70
+ 72: 34 Load 36(g_tTex2di4a)
+ 73: 14 Load 16(g_sSamp)
+ 74: 39 SampledImage 72 73
+ 75: 20(fvec3) Load 22(c3)
+ 76: 25(ivec2) Load 27(o2)
+ 77: 25(ivec2) Load 27(o2)
+ 78: 25(ivec2) Load 27(o2)
+ 79: 25(ivec2) Load 27(o2)
+ 80: 68 CompositeConstruct 76 77 78 79
+ 81: 31(ivec4) ImageGather 74 75 29 ConstOffsets 80
+ Store 71(txval014) 81
+ 83: 48 Load 50(g_tTex2du4a)
+ 84: 14 Load 16(g_sSamp)
+ 85: 53 SampledImage 83 84
+ 86: 20(fvec3) Load 22(c3)
+ 87: 25(ivec2) Load 27(o2)
+ 88: 25(ivec2) Load 27(o2)
+ 89: 25(ivec2) Load 27(o2)
+ 90: 25(ivec2) Load 27(o2)
+ 91: 68 CompositeConstruct 87 88 89 90
+ 92: 45(ivec4) ImageGather 85 86 29 ConstOffsets 91
+ Store 82(txval024) 92
+ 94: 10 Load 12(g_tTex2df4a)
+ 95: 14 Load 16(g_sSamp)
+ 96: 18 SampledImage 94 95
+ 97: 20(fvec3) Load 22(c3)
+ 98: 25(ivec2) Load 27(o2)
+ 100: 7(fvec4) ImageGather 96 97 99 Offset 98
+ Store 93(txval101) 100
+ 102: 34 Load 36(g_tTex2di4a)
+ 103: 14 Load 16(g_sSamp)
+ 104: 39 SampledImage 102 103
+ 105: 20(fvec3) Load 22(c3)
+ 106: 25(ivec2) Load 27(o2)
+ 107: 31(ivec4) ImageGather 104 105 99 Offset 106
+ Store 101(txval111) 107
+ 109: 48 Load 50(g_tTex2du4a)
+ 110: 14 Load 16(g_sSamp)
+ 111: 53 SampledImage 109 110
+ 112: 20(fvec3) Load 22(c3)
+ 113: 25(ivec2) Load 27(o2)
+ 114: 45(ivec4) ImageGather 111 112 99 Offset 113
+ Store 108(txval121) 114
+ 116: 10 Load 12(g_tTex2df4a)
+ 117: 14 Load 16(g_sSamp)
+ 118: 18 SampledImage 116 117
+ 119: 20(fvec3) Load 22(c3)
+ 120: 25(ivec2) Load 27(o2)
+ 121: 25(ivec2) Load 27(o2)
+ 122: 25(ivec2) Load 27(o2)
+ 123: 25(ivec2) Load 27(o2)
+ 124: 68 CompositeConstruct 120 121 122 123
+ 125: 7(fvec4) ImageGather 118 119 99 ConstOffsets 124
+ Store 115(txval104) 125
+ 127: 34 Load 36(g_tTex2di4a)
+ 128: 14 Load 16(g_sSamp)
+ 129: 39 SampledImage 127 128
+ 130: 20(fvec3) Load 22(c3)
+ 131: 25(ivec2) Load 27(o2)
+ 132: 25(ivec2) Load 27(o2)
+ 133: 25(ivec2) Load 27(o2)
+ 134: 25(ivec2) Load 27(o2)
+ 135: 68 CompositeConstruct 131 132 133 134
+ 136: 31(ivec4) ImageGather 129 130 99 ConstOffsets 135
+ Store 126(txval114) 136
+ 138: 48 Load 50(g_tTex2du4a)
+ 139: 14 Load 16(g_sSamp)
+ 140: 53 SampledImage 138 139
+ 141: 20(fvec3) Load 22(c3)
+ 142: 25(ivec2) Load 27(o2)
+ 143: 25(ivec2) Load 27(o2)
+ 144: 25(ivec2) Load 27(o2)
+ 145: 25(ivec2) Load 27(o2)
+ 146: 68 CompositeConstruct 142 143 144 145
+ 147: 45(ivec4) ImageGather 140 141 99 ConstOffsets 146
+ Store 137(txval124) 147
+ 149: 10 Load 12(g_tTex2df4a)
+ 150: 14 Load 16(g_sSamp)
+ 151: 18 SampledImage 149 150
+ 152: 20(fvec3) Load 22(c3)
+ 153: 25(ivec2) Load 27(o2)
+ 155: 7(fvec4) ImageGather 151 152 154 Offset 153
+ Store 148(txval201) 155
+ 157: 34 Load 36(g_tTex2di4a)
+ 158: 14 Load 16(g_sSamp)
+ 159: 39 SampledImage 157 158
+ 160: 20(fvec3) Load 22(c3)
+ 161: 25(ivec2) Load 27(o2)
+ 162: 31(ivec4) ImageGather 159 160 154 Offset 161
+ Store 156(txval211) 162
+ 164: 48 Load 50(g_tTex2du4a)
+ 165: 14 Load 16(g_sSamp)
+ 166: 53 SampledImage 164 165
+ 167: 20(fvec3) Load 22(c3)
+ 168: 25(ivec2) Load 27(o2)
+ 169: 45(ivec4) ImageGather 166 167 154 Offset 168
+ Store 163(txval221) 169
+ 171: 10 Load 12(g_tTex2df4a)
+ 172: 14 Load 16(g_sSamp)
+ 173: 18 SampledImage 171 172
+ 174: 20(fvec3) Load 22(c3)
+ 175: 25(ivec2) Load 27(o2)
+ 176: 25(ivec2) Load 27(o2)
+ 177: 25(ivec2) Load 27(o2)
+ 178: 25(ivec2) Load 27(o2)
+ 179: 68 CompositeConstruct 175 176 177 178
+ 180: 7(fvec4) ImageGather 173 174 154 ConstOffsets 179
+ Store 170(txval204) 180
+ 182: 34 Load 36(g_tTex2di4a)
+ 183: 14 Load 16(g_sSamp)
+ 184: 39 SampledImage 182 183
+ 185: 20(fvec3) Load 22(c3)
+ 186: 25(ivec2) Load 27(o2)
+ 187: 25(ivec2) Load 27(o2)
+ 188: 25(ivec2) Load 27(o2)
+ 189: 25(ivec2) Load 27(o2)
+ 190: 68 CompositeConstruct 186 187 188 189
+ 191: 31(ivec4) ImageGather 184 185 154 ConstOffsets 190
+ Store 181(txval214) 191
+ 193: 48 Load 50(g_tTex2du4a)
+ 194: 14 Load 16(g_sSamp)
+ 195: 53 SampledImage 193 194
+ 196: 20(fvec3) Load 22(c3)
+ 197: 25(ivec2) Load 27(o2)
+ 198: 25(ivec2) Load 27(o2)
+ 199: 25(ivec2) Load 27(o2)
+ 200: 25(ivec2) Load 27(o2)
+ 201: 68 CompositeConstruct 197 198 199 200
+ 202: 45(ivec4) ImageGather 195 196 154 ConstOffsets 201
+ Store 192(txval224) 202
+ 204: 10 Load 12(g_tTex2df4a)
+ 205: 14 Load 16(g_sSamp)
+ 206: 18 SampledImage 204 205
+ 207: 20(fvec3) Load 22(c3)
+ 208: 25(ivec2) Load 27(o2)
+ 210: 7(fvec4) ImageGather 206 207 209 Offset 208
+ Store 203(txval301) 210
+ 212: 34 Load 36(g_tTex2di4a)
+ 213: 14 Load 16(g_sSamp)
+ 214: 39 SampledImage 212 213
+ 215: 20(fvec3) Load 22(c3)
+ 216: 25(ivec2) Load 27(o2)
+ 217: 31(ivec4) ImageGather 214 215 209 Offset 216
+ Store 211(txval311) 217
+ 219: 48 Load 50(g_tTex2du4a)
+ 220: 14 Load 16(g_sSamp)
+ 221: 53 SampledImage 219 220
+ 222: 20(fvec3) Load 22(c3)
+ 223: 25(ivec2) Load 27(o2)
+ 224: 45(ivec4) ImageGather 221 222 209 Offset 223
+ Store 218(txval321) 224
+ 226: 10 Load 12(g_tTex2df4a)
+ 227: 14 Load 16(g_sSamp)
+ 228: 18 SampledImage 226 227
+ 229: 20(fvec3) Load 22(c3)
+ 230: 25(ivec2) Load 27(o2)
+ 231: 25(ivec2) Load 27(o2)
+ 232: 25(ivec2) Load 27(o2)
+ 233: 25(ivec2) Load 27(o2)
+ 234: 68 CompositeConstruct 230 231 232 233
+ 235: 7(fvec4) ImageGather 228 229 209 ConstOffsets 234
+ Store 225(txval304) 235
+ 237: 34 Load 36(g_tTex2di4a)
+ 238: 14 Load 16(g_sSamp)
+ 239: 39 SampledImage 237 238
+ 240: 20(fvec3) Load 22(c3)
+ 241: 25(ivec2) Load 27(o2)
+ 242: 25(ivec2) Load 27(o2)
+ 243: 25(ivec2) Load 27(o2)
+ 244: 25(ivec2) Load 27(o2)
+ 245: 68 CompositeConstruct 241 242 243 244
+ 246: 31(ivec4) ImageGather 239 240 209 ConstOffsets 245
+ Store 236(txval314) 246
+ 248: 48 Load 50(g_tTex2du4a)
+ 249: 14 Load 16(g_sSamp)
+ 250: 53 SampledImage 248 249
+ 251: 20(fvec3) Load 22(c3)
+ 252: 25(ivec2) Load 27(o2)
+ 253: 25(ivec2) Load 27(o2)
+ 254: 25(ivec2) Load 27(o2)
+ 255: 25(ivec2) Load 27(o2)
+ 256: 68 CompositeConstruct 252 253 254 255
+ 257: 45(ivec4) ImageGather 250 251 209 ConstOffsets 256
+ Store 247(txval324) 257
+ 263: 8(ptr) AccessChain 260(psout) 29
+ Store 263 262
+ 265: 264(ptr) AccessChain 260(psout) 99
+ Store 265 261
+ 266:258(PS_OUTPUT) Load 260(psout)
+ ReturnValue 266
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.negative.comp.out b/Test/baseResults/hlsl.intrinsics.negative.comp.out
index 043fa82..9c9a708 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.comp.out
@@ -1,157 +1,7 @@
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:? Sequence
0:56 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
@@ -159,90 +9,6 @@
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
@@ -253,8 +19,6 @@
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
@@ -265,78 +29,6 @@
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
@@ -348,74 +40,6 @@
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
@@ -428,74 +52,6 @@
0:158 'inF2' (in 4-component vector of float)
0:158 'inI0' (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
@@ -510,7 +66,7 @@
Shader version: 450
local_size = (1, 1, 1)
-ERROR: node is still EOpNull!
+0:? Sequence
0:56 Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; (global float)
0:2 Function Parameters:
0:2 'inF0' (in float)
@@ -518,90 +74,6 @@
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
@@ -612,8 +84,6 @@
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
@@ -624,78 +94,6 @@
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
@@ -707,74 +105,6 @@
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
@@ -787,74 +117,6 @@
0:158 'inF2' (in 4-component vector of float)
0:158 'inI0' (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
@@ -863,4 +125,96 @@
0:? 4.000000
0:? Linker Objects
-SPIR-V is not generated for failed compile or link
+// 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 GLCompute 4 "ComputeShaderFunction"
+ ExecutionMode 4 LocalSize 1 1 1
+ Source HLSL 450
+ 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"
+ 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: 6(float) Constant 1082130432
+ 61: 59(fvec4) ConstantComposite 50 51 55 60
+4(ComputeShaderFunction): 2 Function None 3
+ 5: Label
+ ReturnValue 61
+ 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.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out
index 0e974a1..b8c4622 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out
@@ -1,235 +1,6 @@
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:? Sequence
0:74 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (global float)
0:15 Function Parameters:
0:15 'inF0' (in float)
@@ -237,104 +8,6 @@
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
@@ -345,8 +18,6 @@
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
@@ -357,78 +28,6 @@
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
@@ -440,275 +39,43 @@
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:225 Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:176 Function Parameters:
0:176 'inF0' (in 4-component vector of float)
0:176 'inF1' (in 4-component vector of float)
0:176 'inF2' (in 4-component vector of float)
0:176 'inI0' (in 4-component vector of int)
0:? 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:233 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:226 Function Parameters:
+0:226 'inF0' (in 2X2 matrix of float)
+0:226 'inF1' (in 2X2 matrix of float)
+0:226 'inF2' (in 2X2 matrix of float)
0:? Sequence
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:255 Branch: Return with expression
+0:230 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:266 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
-0:259 Function Parameters:
-0:259 'inF0' (in 3X3 matrix of float)
-0:259 'inF1' (in 3X3 matrix of float)
-0:259 'inF2' (in 3X3 matrix of float)
+0:241 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:234 Function Parameters:
+0:234 'inF0' (in 3X3 matrix of float)
+0:234 'inF1' (in 3X3 matrix of float)
+0:234 'inF2' (in 3X3 matrix of float)
0:? Sequence
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:263 Branch: Return with expression
+0:238 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
@@ -719,61 +86,13 @@
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:273 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
-0:267 Function Parameters:
-0:267 'inF0' (in 4X4 matrix of float)
-0:267 'inF1' (in 4X4 matrix of float)
-0:267 'inF2' (in 4X4 matrix of float)
+0:248 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:242 Function Parameters:
+0:242 'inF0' (in 4X4 matrix of float)
+0:242 'inF1' (in 4X4 matrix of float)
+0:242 'inF2' (in 4X4 matrix of float)
0:? Sequence
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:271 Branch: Return with expression
+0:246 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000
@@ -810,7 +129,7 @@
Shader version: 450
-ERROR: node is still EOpNull!
+0:? Sequence
0:74 Function Definition: VertexShaderFunctionS(f1;f1;f1;i1; (global float)
0:15 Function Parameters:
0:15 'inF0' (in float)
@@ -818,104 +137,6 @@
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
@@ -926,8 +147,6 @@
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
@@ -938,78 +157,6 @@
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
@@ -1021,275 +168,43 @@
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:225 Function Definition: VertexShaderFunction(vf4;vf4;vf4;vi4; (global 4-component vector of float)
0:176 Function Parameters:
0:176 'inF0' (in 4-component vector of float)
0:176 'inF1' (in 4-component vector of float)
0:176 'inF2' (in 4-component vector of float)
0:176 'inI0' (in 4-component vector of int)
0:? 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:233 Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; (global 2X2 matrix of float)
+0:226 Function Parameters:
+0:226 'inF0' (in 2X2 matrix of float)
+0:226 'inF1' (in 2X2 matrix of float)
+0:226 'inF2' (in 2X2 matrix of float)
0:? Sequence
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:253 Constant:
-0:253 0.000000
-0:255 Branch: Return with expression
+0:230 Branch: Return with expression
0:? Constant:
0:? 2.000000
0:? 2.000000
0:? 2.000000
0:? 2.000000
-0:266 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
-0:259 Function Parameters:
-0:259 'inF0' (in 3X3 matrix of float)
-0:259 'inF1' (in 3X3 matrix of float)
-0:259 'inF2' (in 3X3 matrix of float)
+0:241 Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; (global 3X3 matrix of float)
+0:234 Function Parameters:
+0:234 'inF0' (in 3X3 matrix of float)
+0:234 'inF1' (in 3X3 matrix of float)
+0:234 'inF2' (in 3X3 matrix of float)
0:? Sequence
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:261 Constant:
-0:261 0.000000
-0:263 Branch: Return with expression
+0:238 Branch: Return with expression
0:? Constant:
0:? 3.000000
0:? 3.000000
@@ -1300,61 +215,13 @@
0:? 3.000000
0:? 3.000000
0:? 3.000000
-0:273 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
-0:267 Function Parameters:
-0:267 'inF0' (in 4X4 matrix of float)
-0:267 'inF1' (in 4X4 matrix of float)
-0:267 'inF2' (in 4X4 matrix of float)
+0:248 Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; (global 4X4 matrix of float)
+0:242 Function Parameters:
+0:242 'inF0' (in 4X4 matrix of float)
+0:242 'inF1' (in 4X4 matrix of float)
+0:242 'inF2' (in 4X4 matrix of float)
0:? Sequence
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:269 Constant:
-0:269 0.000000
-0:271 Branch: Return with expression
+0:246 Branch: Return with expression
0:? Constant:
0:? 4.000000
0:? 4.000000
@@ -1386,4 +253,175 @@
0:? 'gs_ub4' (global 4-component vector of uint)
0:? 'gs_uc4' (global 4-component vector of uint)
-SPIR-V is not generated for failed compile or link
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 119
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "VertexShaderFunction"
+ Source HLSL 450
+ 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 101 "gs_ua"
+ Name 102 "gs_ub"
+ Name 103 "gs_uc"
+ Name 106 "gs_ua2"
+ Name 107 "gs_ub2"
+ Name 108 "gs_uc2"
+ Name 111 "gs_ua3"
+ Name 112 "gs_ub3"
+ Name 113 "gs_uc3"
+ Name 116 "gs_ua4"
+ Name 117 "gs_ub4"
+ Name 118 "gs_uc4"
+ 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: 6(float) Constant 1082130432
+ 85: 61(fvec4) ConstantComposite 75 76 80 84
+ 87: 23(fvec2) ConstantComposite 76 76
+ 88: 45 ConstantComposite 87 87
+ 91: 34(fvec3) ConstantComposite 80 80 80
+ 92: 53 ConstantComposite 91 91 91
+ 95: 61(fvec4) ConstantComposite 84 84 84 84
+ 96: 62 ConstantComposite 95 95 95 95
+ 99: TypeInt 32 0
+ 100: TypePointer Private 99(int)
+ 101(gs_ua): 100(ptr) Variable Private
+ 102(gs_ub): 100(ptr) Variable Private
+ 103(gs_uc): 100(ptr) Variable Private
+ 104: TypeVector 99(int) 2
+ 105: TypePointer Private 104(ivec2)
+ 106(gs_ua2): 105(ptr) Variable Private
+ 107(gs_ub2): 105(ptr) Variable Private
+ 108(gs_uc2): 105(ptr) Variable Private
+ 109: TypeVector 99(int) 3
+ 110: TypePointer Private 109(ivec3)
+ 111(gs_ua3): 110(ptr) Variable Private
+ 112(gs_ub3): 110(ptr) Variable Private
+ 113(gs_uc3): 110(ptr) Variable Private
+ 114: TypeVector 99(int) 4
+ 115: TypePointer Private 114(ivec4)
+ 116(gs_ua4): 115(ptr) Variable Private
+ 117(gs_ub4): 115(ptr) Variable Private
+ 118(gs_uc4): 115(ptr) Variable Private
+4(VertexShaderFunction): 2 Function None 3
+ 5: Label
+ ReturnValue 85
+ 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 88
+ 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 92
+ 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 96
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out
new file mode 100644
index 0000000..c92b61f
--- /dev/null
+++ b/Test/baseResults/hlsl.promotions.frag.out
@@ -0,0 +1,1688 @@
+hlsl.promotions.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:20 Function Definition: Fn_F3(vf3; (global void)
+0:19 Function Parameters:
+0:19 'x' (in 3-component vector of float)
+0:21 Function Definition: Fn_I3(vi3; (global void)
+0:20 Function Parameters:
+0:20 'x' (in 3-component vector of int)
+0:22 Function Definition: Fn_U3(vu3; (global void)
+0:21 Function Parameters:
+0:21 'x' (in 3-component vector of uint)
+0:23 Function Definition: Fn_B3(vb3; (global void)
+0:22 Function Parameters:
+0:22 'x' (in 3-component vector of bool)
+0:26 Function Definition: Fn_D3(vd3; (global void)
+0:23 Function Parameters:
+0:23 'x' (in 3-component vector of double)
+0:27 Function Definition: Fn_R_F3I(vf3; (global 3-component vector of float)
+0:26 Function Parameters:
+0:26 'p' (out 3-component vector of float)
+0:? Sequence
+0:26 move second child to first child (temp 3-component vector of float)
+0:26 'p' (out 3-component vector of float)
+0:26 Convert int to float (temp 3-component vector of float)
+0:26 'i3' (uniform 3-component vector of int)
+0:26 Branch: Return with expression
+0:26 Convert int to float (temp 3-component vector of float)
+0:26 'i3' (uniform 3-component vector of int)
+0:28 Function Definition: Fn_R_F3U(vf3; (global 3-component vector of float)
+0:27 Function Parameters:
+0:27 'p' (out 3-component vector of float)
+0:? Sequence
+0:27 move second child to first child (temp 3-component vector of float)
+0:27 'p' (out 3-component vector of float)
+0:27 Convert uint to float (temp 3-component vector of float)
+0:27 'u3' (uniform 3-component vector of uint)
+0:27 Branch: Return with expression
+0:27 Convert uint to float (temp 3-component vector of float)
+0:27 'u3' (uniform 3-component vector of uint)
+0:29 Function Definition: Fn_R_F3B(vf3; (global 3-component vector of float)
+0:28 Function Parameters:
+0:28 'p' (out 3-component vector of float)
+0:? Sequence
+0:28 move second child to first child (temp 3-component vector of float)
+0:28 'p' (out 3-component vector of float)
+0:28 Convert bool to float (temp 3-component vector of float)
+0:28 'b3' (uniform 3-component vector of bool)
+0:28 Branch: Return with expression
+0:28 Convert bool to float (temp 3-component vector of float)
+0:28 'b3' (uniform 3-component vector of bool)
+0:31 Function Definition: Fn_R_F3D(vf3; (global 3-component vector of float)
+0:29 Function Parameters:
+0:29 'p' (out 3-component vector of float)
+0:? Sequence
+0:29 move second child to first child (temp 3-component vector of float)
+0:29 'p' (out 3-component vector of float)
+0:29 Convert double to float (temp 3-component vector of float)
+0:29 'd3' (uniform 3-component vector of double)
+0:29 Branch: Return with expression
+0:29 Convert double to float (temp 3-component vector of float)
+0:29 'd3' (uniform 3-component vector of double)
+0:32 Function Definition: Fn_R_I3U(vi3; (global 3-component vector of int)
+0:31 Function Parameters:
+0:31 'p' (out 3-component vector of int)
+0:? Sequence
+0:31 move second child to first child (temp 3-component vector of int)
+0:31 'p' (out 3-component vector of int)
+0:31 Convert uint to int (temp 3-component vector of int)
+0:31 'u3' (uniform 3-component vector of uint)
+0:31 Branch: Return with expression
+0:31 Convert uint to int (temp 3-component vector of int)
+0:31 'u3' (uniform 3-component vector of uint)
+0:33 Function Definition: Fn_R_I3B(vi3; (global 3-component vector of int)
+0:32 Function Parameters:
+0:32 'p' (out 3-component vector of int)
+0:? Sequence
+0:32 move second child to first child (temp 3-component vector of int)
+0:32 'p' (out 3-component vector of int)
+0:32 Convert bool to int (temp 3-component vector of int)
+0:32 'b3' (uniform 3-component vector of bool)
+0:32 Branch: Return with expression
+0:32 Convert bool to int (temp 3-component vector of int)
+0:32 'b3' (uniform 3-component vector of bool)
+0:34 Function Definition: Fn_R_I3F(vi3; (global 3-component vector of int)
+0:33 Function Parameters:
+0:33 'p' (out 3-component vector of int)
+0:? Sequence
+0:33 move second child to first child (temp 3-component vector of int)
+0:33 'p' (out 3-component vector of int)
+0:33 Convert float to int (temp 3-component vector of int)
+0:33 'f3' (uniform 3-component vector of float)
+0:33 Branch: Return with expression
+0:33 Convert float to int (temp 3-component vector of int)
+0:33 'f3' (uniform 3-component vector of float)
+0:36 Function Definition: Fn_R_I3D(vi3; (global 3-component vector of int)
+0:34 Function Parameters:
+0:34 'p' (out 3-component vector of int)
+0:? Sequence
+0:34 move second child to first child (temp 3-component vector of int)
+0:34 'p' (out 3-component vector of int)
+0:34 Convert double to int (temp 3-component vector of int)
+0:34 'd3' (uniform 3-component vector of double)
+0:34 Branch: Return with expression
+0:34 Convert double to int (temp 3-component vector of int)
+0:34 'd3' (uniform 3-component vector of double)
+0:37 Function Definition: Fn_R_U3I(vu3; (global 3-component vector of uint)
+0:36 Function Parameters:
+0:36 'p' (out 3-component vector of uint)
+0:? Sequence
+0:36 move second child to first child (temp 3-component vector of uint)
+0:36 'p' (out 3-component vector of uint)
+0:36 Convert int to uint (temp 3-component vector of uint)
+0:36 'i3' (uniform 3-component vector of int)
+0:36 Branch: Return with expression
+0:36 Convert int to uint (temp 3-component vector of uint)
+0:36 'i3' (uniform 3-component vector of int)
+0:38 Function Definition: Fn_R_U3F(vu3; (global 3-component vector of uint)
+0:37 Function Parameters:
+0:37 'p' (out 3-component vector of uint)
+0:? Sequence
+0:37 move second child to first child (temp 3-component vector of uint)
+0:37 'p' (out 3-component vector of uint)
+0:37 Convert float to uint (temp 3-component vector of uint)
+0:37 'f3' (uniform 3-component vector of float)
+0:37 Branch: Return with expression
+0:37 Convert float to uint (temp 3-component vector of uint)
+0:37 'f3' (uniform 3-component vector of float)
+0:39 Function Definition: Fn_R_U3B(vu3; (global 3-component vector of uint)
+0:38 Function Parameters:
+0:38 'p' (out 3-component vector of uint)
+0:? Sequence
+0:38 move second child to first child (temp 3-component vector of uint)
+0:38 'p' (out 3-component vector of uint)
+0:38 Convert bool to uint (temp 3-component vector of uint)
+0:38 'b3' (uniform 3-component vector of bool)
+0:38 Branch: Return with expression
+0:38 Convert bool to uint (temp 3-component vector of uint)
+0:38 'b3' (uniform 3-component vector of bool)
+0:41 Function Definition: Fn_R_U3D(vu3; (global 3-component vector of uint)
+0:39 Function Parameters:
+0:39 'p' (out 3-component vector of uint)
+0:? Sequence
+0:39 move second child to first child (temp 3-component vector of uint)
+0:39 'p' (out 3-component vector of uint)
+0:39 Convert double to uint (temp 3-component vector of uint)
+0:39 'd3' (uniform 3-component vector of double)
+0:39 Branch: Return with expression
+0:39 Convert double to uint (temp 3-component vector of uint)
+0:39 'd3' (uniform 3-component vector of double)
+0:42 Function Definition: Fn_R_B3I(vb3; (global 3-component vector of bool)
+0:41 Function Parameters:
+0:41 'p' (out 3-component vector of bool)
+0:? Sequence
+0:41 move second child to first child (temp 3-component vector of bool)
+0:41 'p' (out 3-component vector of bool)
+0:41 Convert int to bool (temp 3-component vector of bool)
+0:41 'i3' (uniform 3-component vector of int)
+0:41 Branch: Return with expression
+0:41 Convert int to bool (temp 3-component vector of bool)
+0:41 'i3' (uniform 3-component vector of int)
+0:43 Function Definition: Fn_R_B3U(vb3; (global 3-component vector of bool)
+0:42 Function Parameters:
+0:42 'p' (out 3-component vector of bool)
+0:? Sequence
+0:42 move second child to first child (temp 3-component vector of bool)
+0:42 'p' (out 3-component vector of bool)
+0:42 Convert uint to bool (temp 3-component vector of bool)
+0:42 'u3' (uniform 3-component vector of uint)
+0:42 Branch: Return with expression
+0:42 Convert uint to bool (temp 3-component vector of bool)
+0:42 'u3' (uniform 3-component vector of uint)
+0:44 Function Definition: Fn_R_B3F(vb3; (global 3-component vector of bool)
+0:43 Function Parameters:
+0:43 'p' (out 3-component vector of bool)
+0:? Sequence
+0:43 move second child to first child (temp 3-component vector of bool)
+0:43 'p' (out 3-component vector of bool)
+0:43 Convert float to bool (temp 3-component vector of bool)
+0:43 'f3' (uniform 3-component vector of float)
+0:43 Branch: Return with expression
+0:43 Convert float to bool (temp 3-component vector of bool)
+0:43 'f3' (uniform 3-component vector of float)
+0:46 Function Definition: Fn_R_B3D(vb3; (global 3-component vector of bool)
+0:44 Function Parameters:
+0:44 'p' (out 3-component vector of bool)
+0:? Sequence
+0:44 move second child to first child (temp 3-component vector of bool)
+0:44 'p' (out 3-component vector of bool)
+0:44 Convert double to bool (temp 3-component vector of bool)
+0:44 'd3' (uniform 3-component vector of double)
+0:44 Branch: Return with expression
+0:44 Convert double to bool (temp 3-component vector of bool)
+0:44 'd3' (uniform 3-component vector of double)
+0:47 Function Definition: Fn_R_D3I(vd3; (global 3-component vector of double)
+0:46 Function Parameters:
+0:46 'p' (out 3-component vector of double)
+0:? Sequence
+0:46 move second child to first child (temp 3-component vector of double)
+0:46 'p' (out 3-component vector of double)
+0:46 Convert int to double (temp 3-component vector of double)
+0:46 'i3' (uniform 3-component vector of int)
+0:46 Branch: Return with expression
+0:46 Convert int to double (temp 3-component vector of double)
+0:46 'i3' (uniform 3-component vector of int)
+0:48 Function Definition: Fn_R_D3U(vd3; (global 3-component vector of double)
+0:47 Function Parameters:
+0:47 'p' (out 3-component vector of double)
+0:? Sequence
+0:47 move second child to first child (temp 3-component vector of double)
+0:47 'p' (out 3-component vector of double)
+0:47 Convert uint to double (temp 3-component vector of double)
+0:47 'u3' (uniform 3-component vector of uint)
+0:47 Branch: Return with expression
+0:47 Convert uint to double (temp 3-component vector of double)
+0:47 'u3' (uniform 3-component vector of uint)
+0:49 Function Definition: Fn_R_D3B(vd3; (global 3-component vector of double)
+0:48 Function Parameters:
+0:48 'p' (out 3-component vector of double)
+0:? Sequence
+0:48 move second child to first child (temp 3-component vector of double)
+0:48 'p' (out 3-component vector of double)
+0:48 Convert bool to double (temp 3-component vector of double)
+0:48 'b3' (uniform 3-component vector of bool)
+0:48 Branch: Return with expression
+0:48 Convert bool to double (temp 3-component vector of double)
+0:48 'b3' (uniform 3-component vector of bool)
+0:51 Function Definition: Fn_R_D3F(vd3; (global 3-component vector of double)
+0:49 Function Parameters:
+0:49 'p' (out 3-component vector of double)
+0:? Sequence
+0:49 move second child to first child (temp 3-component vector of double)
+0:49 'p' (out 3-component vector of double)
+0:49 Convert float to double (temp 3-component vector of double)
+0:49 'f3' (uniform 3-component vector of float)
+0:49 Branch: Return with expression
+0:49 Convert float to double (temp 3-component vector of double)
+0:49 'f3' (uniform 3-component vector of float)
+0:202 Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:52 Function Parameters:
+0:? Sequence
+0:54 Sequence
+0:54 move second child to first child (temp 3-component vector of float)
+0:54 'r00' (temp 3-component vector of float)
+0:54 Convert int to float (temp 3-component vector of float)
+0:54 'i3' (uniform 3-component vector of int)
+0:55 Sequence
+0:55 move second child to first child (temp 3-component vector of float)
+0:55 'r01' (temp 3-component vector of float)
+0:55 Convert bool to float (temp 3-component vector of float)
+0:55 'b3' (uniform 3-component vector of bool)
+0:56 Sequence
+0:56 move second child to first child (temp 3-component vector of float)
+0:56 'r02' (temp 3-component vector of float)
+0:56 Convert uint to float (temp 3-component vector of float)
+0:56 'u3' (uniform 3-component vector of uint)
+0:57 Sequence
+0:57 move second child to first child (temp 3-component vector of float)
+0:57 'r03' (temp 3-component vector of float)
+0:57 Convert double to float (temp 3-component vector of float)
+0:57 'd3' (uniform 3-component vector of double)
+0:59 Sequence
+0:59 move second child to first child (temp 3-component vector of int)
+0:59 'r10' (temp 3-component vector of int)
+0:59 Convert bool to int (temp 3-component vector of int)
+0:59 'b3' (uniform 3-component vector of bool)
+0:60 Sequence
+0:60 move second child to first child (temp 3-component vector of int)
+0:60 'r11' (temp 3-component vector of int)
+0:60 Convert uint to int (temp 3-component vector of int)
+0:60 'u3' (uniform 3-component vector of uint)
+0:61 Sequence
+0:61 move second child to first child (temp 3-component vector of int)
+0:61 'r12' (temp 3-component vector of int)
+0:61 Convert float to int (temp 3-component vector of int)
+0:61 'f3' (uniform 3-component vector of float)
+0:62 Sequence
+0:62 move second child to first child (temp 3-component vector of int)
+0:62 'r13' (temp 3-component vector of int)
+0:62 Convert double to int (temp 3-component vector of int)
+0:62 'd3' (uniform 3-component vector of double)
+0:64 Sequence
+0:64 move second child to first child (temp 3-component vector of uint)
+0:64 'r20' (temp 3-component vector of uint)
+0:64 Convert bool to uint (temp 3-component vector of uint)
+0:64 'b3' (uniform 3-component vector of bool)
+0:65 Sequence
+0:65 move second child to first child (temp 3-component vector of uint)
+0:65 'r21' (temp 3-component vector of uint)
+0:65 Convert int to uint (temp 3-component vector of uint)
+0:65 'i3' (uniform 3-component vector of int)
+0:66 Sequence
+0:66 move second child to first child (temp 3-component vector of uint)
+0:66 'r22' (temp 3-component vector of uint)
+0:66 Convert float to uint (temp 3-component vector of uint)
+0:66 'f3' (uniform 3-component vector of float)
+0:67 Sequence
+0:67 move second child to first child (temp 3-component vector of uint)
+0:67 'r23' (temp 3-component vector of uint)
+0:67 Convert double to uint (temp 3-component vector of uint)
+0:67 'd3' (uniform 3-component vector of double)
+0:69 Sequence
+0:69 move second child to first child (temp 3-component vector of bool)
+0:69 'r30' (temp 3-component vector of bool)
+0:69 Convert int to bool (temp 3-component vector of bool)
+0:69 'i3' (uniform 3-component vector of int)
+0:70 Sequence
+0:70 move second child to first child (temp 3-component vector of bool)
+0:70 'r31' (temp 3-component vector of bool)
+0:70 Convert uint to bool (temp 3-component vector of bool)
+0:70 'u3' (uniform 3-component vector of uint)
+0:71 Sequence
+0:71 move second child to first child (temp 3-component vector of bool)
+0:71 'r32' (temp 3-component vector of bool)
+0:71 Convert float to bool (temp 3-component vector of bool)
+0:71 'f3' (uniform 3-component vector of float)
+0:72 Sequence
+0:72 move second child to first child (temp 3-component vector of bool)
+0:72 'r33' (temp 3-component vector of bool)
+0:72 Convert double to bool (temp 3-component vector of bool)
+0:72 'd3' (uniform 3-component vector of double)
+0:74 Sequence
+0:74 move second child to first child (temp 3-component vector of double)
+0:74 'r40' (temp 3-component vector of double)
+0:74 Convert int to double (temp 3-component vector of double)
+0:74 'i3' (uniform 3-component vector of int)
+0:75 Sequence
+0:75 move second child to first child (temp 3-component vector of double)
+0:75 'r41' (temp 3-component vector of double)
+0:75 Convert uint to double (temp 3-component vector of double)
+0:75 'u3' (uniform 3-component vector of uint)
+0:76 Sequence
+0:76 move second child to first child (temp 3-component vector of double)
+0:76 'r42' (temp 3-component vector of double)
+0:76 Convert float to double (temp 3-component vector of double)
+0:76 'f3' (uniform 3-component vector of float)
+0:77 Sequence
+0:77 move second child to first child (temp 3-component vector of double)
+0:77 'r43' (temp 3-component vector of double)
+0:77 Convert bool to double (temp 3-component vector of double)
+0:77 'b3' (uniform 3-component vector of bool)
+0:80 multiply second child into first child (temp 3-component vector of float)
+0:80 'r00' (temp 3-component vector of float)
+0:80 Convert int to float (temp 3-component vector of float)
+0:80 'i3' (uniform 3-component vector of int)
+0:81 multiply second child into first child (temp 3-component vector of float)
+0:81 'r01' (temp 3-component vector of float)
+0:81 Convert bool to float (temp 3-component vector of float)
+0:81 'b3' (uniform 3-component vector of bool)
+0:82 multiply second child into first child (temp 3-component vector of float)
+0:82 'r02' (temp 3-component vector of float)
+0:82 Convert uint to float (temp 3-component vector of float)
+0:82 'u3' (uniform 3-component vector of uint)
+0:83 multiply second child into first child (temp 3-component vector of float)
+0:83 'r03' (temp 3-component vector of float)
+0:83 Convert double to float (temp 3-component vector of float)
+0:83 'd3' (uniform 3-component vector of double)
+0:85 multiply second child into first child (temp 3-component vector of int)
+0:85 'r10' (temp 3-component vector of int)
+0:85 Convert bool to int (temp 3-component vector of int)
+0:85 'b3' (uniform 3-component vector of bool)
+0:86 multiply second child into first child (temp 3-component vector of int)
+0:86 'r11' (temp 3-component vector of int)
+0:86 Convert uint to int (temp 3-component vector of int)
+0:86 'u3' (uniform 3-component vector of uint)
+0:87 multiply second child into first child (temp 3-component vector of int)
+0:87 'r12' (temp 3-component vector of int)
+0:87 Convert float to int (temp 3-component vector of int)
+0:87 'f3' (uniform 3-component vector of float)
+0:88 multiply second child into first child (temp 3-component vector of int)
+0:88 'r13' (temp 3-component vector of int)
+0:88 Convert double to int (temp 3-component vector of int)
+0:88 'd3' (uniform 3-component vector of double)
+0:90 multiply second child into first child (temp 3-component vector of uint)
+0:90 'r20' (temp 3-component vector of uint)
+0:90 Convert bool to uint (temp 3-component vector of uint)
+0:90 'b3' (uniform 3-component vector of bool)
+0:91 multiply second child into first child (temp 3-component vector of uint)
+0:91 'r21' (temp 3-component vector of uint)
+0:91 Convert int to uint (temp 3-component vector of uint)
+0:91 'i3' (uniform 3-component vector of int)
+0:92 multiply second child into first child (temp 3-component vector of uint)
+0:92 'r22' (temp 3-component vector of uint)
+0:92 Convert float to uint (temp 3-component vector of uint)
+0:92 'f3' (uniform 3-component vector of float)
+0:93 multiply second child into first child (temp 3-component vector of uint)
+0:93 'r23' (temp 3-component vector of uint)
+0:93 Convert double to uint (temp 3-component vector of uint)
+0:93 'd3' (uniform 3-component vector of double)
+0:97 multiply second child into first child (temp 3-component vector of double)
+0:97 'r40' (temp 3-component vector of double)
+0:97 Convert int to double (temp 3-component vector of double)
+0:97 'i3' (uniform 3-component vector of int)
+0:98 multiply second child into first child (temp 3-component vector of double)
+0:98 'r41' (temp 3-component vector of double)
+0:98 Convert uint to double (temp 3-component vector of double)
+0:98 'u3' (uniform 3-component vector of uint)
+0:99 multiply second child into first child (temp 3-component vector of double)
+0:99 'r42' (temp 3-component vector of double)
+0:99 Convert float to double (temp 3-component vector of double)
+0:99 'f3' (uniform 3-component vector of float)
+0:100 multiply second child into first child (temp 3-component vector of double)
+0:100 'r43' (temp 3-component vector of double)
+0:100 Convert bool to double (temp 3-component vector of double)
+0:100 'b3' (uniform 3-component vector of bool)
+0:103 vector scale second child into first child (temp 3-component vector of float)
+0:103 'r00' (temp 3-component vector of float)
+0:103 Convert int to float (temp float)
+0:103 'is' (uniform int)
+0:104 vector scale second child into first child (temp 3-component vector of float)
+0:104 'r01' (temp 3-component vector of float)
+0:104 Convert bool to float (temp float)
+0:104 'bs' (uniform bool)
+0:105 vector scale second child into first child (temp 3-component vector of float)
+0:105 'r02' (temp 3-component vector of float)
+0:105 Convert uint to float (temp float)
+0:105 'us' (uniform uint)
+0:106 vector scale second child into first child (temp 3-component vector of float)
+0:106 'r03' (temp 3-component vector of float)
+0:106 Convert double to float (temp float)
+0:106 'ds' (uniform double)
+0:108 vector scale second child into first child (temp 3-component vector of int)
+0:108 'r10' (temp 3-component vector of int)
+0:108 Convert bool to int (temp int)
+0:108 'bs' (uniform bool)
+0:109 vector scale second child into first child (temp 3-component vector of int)
+0:109 'r11' (temp 3-component vector of int)
+0:109 Convert uint to int (temp int)
+0:109 'us' (uniform uint)
+0:110 vector scale second child into first child (temp 3-component vector of int)
+0:110 'r12' (temp 3-component vector of int)
+0:110 Convert float to int (temp int)
+0:110 'fs' (uniform float)
+0:111 vector scale second child into first child (temp 3-component vector of int)
+0:111 'r13' (temp 3-component vector of int)
+0:111 Convert double to int (temp int)
+0:111 'ds' (uniform double)
+0:113 vector scale second child into first child (temp 3-component vector of uint)
+0:113 'r20' (temp 3-component vector of uint)
+0:113 Convert bool to uint (temp uint)
+0:113 'bs' (uniform bool)
+0:114 vector scale second child into first child (temp 3-component vector of uint)
+0:114 'r21' (temp 3-component vector of uint)
+0:114 Convert int to uint (temp uint)
+0:114 'is' (uniform int)
+0:115 vector scale second child into first child (temp 3-component vector of uint)
+0:115 'r22' (temp 3-component vector of uint)
+0:115 Convert float to uint (temp uint)
+0:115 'fs' (uniform float)
+0:116 vector scale second child into first child (temp 3-component vector of uint)
+0:116 'r23' (temp 3-component vector of uint)
+0:116 Convert double to uint (temp uint)
+0:116 'ds' (uniform double)
+0:120 vector scale second child into first child (temp 3-component vector of double)
+0:120 'r40' (temp 3-component vector of double)
+0:120 Convert int to double (temp double)
+0:120 'is' (uniform int)
+0:121 vector scale second child into first child (temp 3-component vector of double)
+0:121 'r41' (temp 3-component vector of double)
+0:121 Convert uint to double (temp double)
+0:121 'us' (uniform uint)
+0:122 vector scale second child into first child (temp 3-component vector of double)
+0:122 'r42' (temp 3-component vector of double)
+0:122 Convert float to double (temp double)
+0:122 'fs' (uniform float)
+0:123 vector scale second child into first child (temp 3-component vector of double)
+0:123 'r43' (temp 3-component vector of double)
+0:123 Convert bool to double (temp double)
+0:123 'bs' (uniform bool)
+0:193 Sequence
+0:193 move second child to first child (temp int)
+0:193 'c1' (temp int)
+0:193 Constant:
+0:193 3 (const int)
+0:194 Sequence
+0:194 move second child to first child (temp int)
+0:194 'c2' (temp int)
+0:194 Constant:
+0:194 3 (const int)
+0:196 Sequence
+0:196 move second child to first child (temp 4-component vector of float)
+0:196 'outval' (temp 4-component vector of float)
+0:? Construct vec4 (temp 4-component vector of float)
+0:196 Constant:
+0:196 3.600000
+0:196 Constant:
+0:196 3.600000
+0:196 Convert int to float (temp float)
+0:196 'c1' (temp int)
+0:196 Convert int to float (temp float)
+0:196 'c2' (temp int)
+0:199 move second child to first child (temp 4-component vector of float)
+0:199 Color: direct index for structure (temp 4-component vector of float)
+0:199 'psout' (temp structure{temp 4-component vector of float Color})
+0:199 Constant:
+0:199 0 (const int)
+0:199 'outval' (temp 4-component vector of float)
+0:200 Branch: Return with expression
+0:200 'psout' (temp structure{temp 4-component vector of float Color})
+0:? Linker Objects
+0:? 'i3' (uniform 3-component vector of int)
+0:? 'b3' (uniform 3-component vector of bool)
+0:? 'f3' (uniform 3-component vector of float)
+0:? 'u3' (uniform 3-component vector of uint)
+0:? 'd3' (uniform 3-component vector of double)
+0:? 'is' (uniform int)
+0:? 'bs' (uniform bool)
+0:? 'fs' (uniform float)
+0:? 'us' (uniform uint)
+0:? 'ds' (uniform double)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:20 Function Definition: Fn_F3(vf3; (global void)
+0:19 Function Parameters:
+0:19 'x' (in 3-component vector of float)
+0:21 Function Definition: Fn_I3(vi3; (global void)
+0:20 Function Parameters:
+0:20 'x' (in 3-component vector of int)
+0:22 Function Definition: Fn_U3(vu3; (global void)
+0:21 Function Parameters:
+0:21 'x' (in 3-component vector of uint)
+0:23 Function Definition: Fn_B3(vb3; (global void)
+0:22 Function Parameters:
+0:22 'x' (in 3-component vector of bool)
+0:26 Function Definition: Fn_D3(vd3; (global void)
+0:23 Function Parameters:
+0:23 'x' (in 3-component vector of double)
+0:27 Function Definition: Fn_R_F3I(vf3; (global 3-component vector of float)
+0:26 Function Parameters:
+0:26 'p' (out 3-component vector of float)
+0:? Sequence
+0:26 move second child to first child (temp 3-component vector of float)
+0:26 'p' (out 3-component vector of float)
+0:26 Convert int to float (temp 3-component vector of float)
+0:26 'i3' (uniform 3-component vector of int)
+0:26 Branch: Return with expression
+0:26 Convert int to float (temp 3-component vector of float)
+0:26 'i3' (uniform 3-component vector of int)
+0:28 Function Definition: Fn_R_F3U(vf3; (global 3-component vector of float)
+0:27 Function Parameters:
+0:27 'p' (out 3-component vector of float)
+0:? Sequence
+0:27 move second child to first child (temp 3-component vector of float)
+0:27 'p' (out 3-component vector of float)
+0:27 Convert uint to float (temp 3-component vector of float)
+0:27 'u3' (uniform 3-component vector of uint)
+0:27 Branch: Return with expression
+0:27 Convert uint to float (temp 3-component vector of float)
+0:27 'u3' (uniform 3-component vector of uint)
+0:29 Function Definition: Fn_R_F3B(vf3; (global 3-component vector of float)
+0:28 Function Parameters:
+0:28 'p' (out 3-component vector of float)
+0:? Sequence
+0:28 move second child to first child (temp 3-component vector of float)
+0:28 'p' (out 3-component vector of float)
+0:28 Convert bool to float (temp 3-component vector of float)
+0:28 'b3' (uniform 3-component vector of bool)
+0:28 Branch: Return with expression
+0:28 Convert bool to float (temp 3-component vector of float)
+0:28 'b3' (uniform 3-component vector of bool)
+0:31 Function Definition: Fn_R_F3D(vf3; (global 3-component vector of float)
+0:29 Function Parameters:
+0:29 'p' (out 3-component vector of float)
+0:? Sequence
+0:29 move second child to first child (temp 3-component vector of float)
+0:29 'p' (out 3-component vector of float)
+0:29 Convert double to float (temp 3-component vector of float)
+0:29 'd3' (uniform 3-component vector of double)
+0:29 Branch: Return with expression
+0:29 Convert double to float (temp 3-component vector of float)
+0:29 'd3' (uniform 3-component vector of double)
+0:32 Function Definition: Fn_R_I3U(vi3; (global 3-component vector of int)
+0:31 Function Parameters:
+0:31 'p' (out 3-component vector of int)
+0:? Sequence
+0:31 move second child to first child (temp 3-component vector of int)
+0:31 'p' (out 3-component vector of int)
+0:31 Convert uint to int (temp 3-component vector of int)
+0:31 'u3' (uniform 3-component vector of uint)
+0:31 Branch: Return with expression
+0:31 Convert uint to int (temp 3-component vector of int)
+0:31 'u3' (uniform 3-component vector of uint)
+0:33 Function Definition: Fn_R_I3B(vi3; (global 3-component vector of int)
+0:32 Function Parameters:
+0:32 'p' (out 3-component vector of int)
+0:? Sequence
+0:32 move second child to first child (temp 3-component vector of int)
+0:32 'p' (out 3-component vector of int)
+0:32 Convert bool to int (temp 3-component vector of int)
+0:32 'b3' (uniform 3-component vector of bool)
+0:32 Branch: Return with expression
+0:32 Convert bool to int (temp 3-component vector of int)
+0:32 'b3' (uniform 3-component vector of bool)
+0:34 Function Definition: Fn_R_I3F(vi3; (global 3-component vector of int)
+0:33 Function Parameters:
+0:33 'p' (out 3-component vector of int)
+0:? Sequence
+0:33 move second child to first child (temp 3-component vector of int)
+0:33 'p' (out 3-component vector of int)
+0:33 Convert float to int (temp 3-component vector of int)
+0:33 'f3' (uniform 3-component vector of float)
+0:33 Branch: Return with expression
+0:33 Convert float to int (temp 3-component vector of int)
+0:33 'f3' (uniform 3-component vector of float)
+0:36 Function Definition: Fn_R_I3D(vi3; (global 3-component vector of int)
+0:34 Function Parameters:
+0:34 'p' (out 3-component vector of int)
+0:? Sequence
+0:34 move second child to first child (temp 3-component vector of int)
+0:34 'p' (out 3-component vector of int)
+0:34 Convert double to int (temp 3-component vector of int)
+0:34 'd3' (uniform 3-component vector of double)
+0:34 Branch: Return with expression
+0:34 Convert double to int (temp 3-component vector of int)
+0:34 'd3' (uniform 3-component vector of double)
+0:37 Function Definition: Fn_R_U3I(vu3; (global 3-component vector of uint)
+0:36 Function Parameters:
+0:36 'p' (out 3-component vector of uint)
+0:? Sequence
+0:36 move second child to first child (temp 3-component vector of uint)
+0:36 'p' (out 3-component vector of uint)
+0:36 Convert int to uint (temp 3-component vector of uint)
+0:36 'i3' (uniform 3-component vector of int)
+0:36 Branch: Return with expression
+0:36 Convert int to uint (temp 3-component vector of uint)
+0:36 'i3' (uniform 3-component vector of int)
+0:38 Function Definition: Fn_R_U3F(vu3; (global 3-component vector of uint)
+0:37 Function Parameters:
+0:37 'p' (out 3-component vector of uint)
+0:? Sequence
+0:37 move second child to first child (temp 3-component vector of uint)
+0:37 'p' (out 3-component vector of uint)
+0:37 Convert float to uint (temp 3-component vector of uint)
+0:37 'f3' (uniform 3-component vector of float)
+0:37 Branch: Return with expression
+0:37 Convert float to uint (temp 3-component vector of uint)
+0:37 'f3' (uniform 3-component vector of float)
+0:39 Function Definition: Fn_R_U3B(vu3; (global 3-component vector of uint)
+0:38 Function Parameters:
+0:38 'p' (out 3-component vector of uint)
+0:? Sequence
+0:38 move second child to first child (temp 3-component vector of uint)
+0:38 'p' (out 3-component vector of uint)
+0:38 Convert bool to uint (temp 3-component vector of uint)
+0:38 'b3' (uniform 3-component vector of bool)
+0:38 Branch: Return with expression
+0:38 Convert bool to uint (temp 3-component vector of uint)
+0:38 'b3' (uniform 3-component vector of bool)
+0:41 Function Definition: Fn_R_U3D(vu3; (global 3-component vector of uint)
+0:39 Function Parameters:
+0:39 'p' (out 3-component vector of uint)
+0:? Sequence
+0:39 move second child to first child (temp 3-component vector of uint)
+0:39 'p' (out 3-component vector of uint)
+0:39 Convert double to uint (temp 3-component vector of uint)
+0:39 'd3' (uniform 3-component vector of double)
+0:39 Branch: Return with expression
+0:39 Convert double to uint (temp 3-component vector of uint)
+0:39 'd3' (uniform 3-component vector of double)
+0:42 Function Definition: Fn_R_B3I(vb3; (global 3-component vector of bool)
+0:41 Function Parameters:
+0:41 'p' (out 3-component vector of bool)
+0:? Sequence
+0:41 move second child to first child (temp 3-component vector of bool)
+0:41 'p' (out 3-component vector of bool)
+0:41 Convert int to bool (temp 3-component vector of bool)
+0:41 'i3' (uniform 3-component vector of int)
+0:41 Branch: Return with expression
+0:41 Convert int to bool (temp 3-component vector of bool)
+0:41 'i3' (uniform 3-component vector of int)
+0:43 Function Definition: Fn_R_B3U(vb3; (global 3-component vector of bool)
+0:42 Function Parameters:
+0:42 'p' (out 3-component vector of bool)
+0:? Sequence
+0:42 move second child to first child (temp 3-component vector of bool)
+0:42 'p' (out 3-component vector of bool)
+0:42 Convert uint to bool (temp 3-component vector of bool)
+0:42 'u3' (uniform 3-component vector of uint)
+0:42 Branch: Return with expression
+0:42 Convert uint to bool (temp 3-component vector of bool)
+0:42 'u3' (uniform 3-component vector of uint)
+0:44 Function Definition: Fn_R_B3F(vb3; (global 3-component vector of bool)
+0:43 Function Parameters:
+0:43 'p' (out 3-component vector of bool)
+0:? Sequence
+0:43 move second child to first child (temp 3-component vector of bool)
+0:43 'p' (out 3-component vector of bool)
+0:43 Convert float to bool (temp 3-component vector of bool)
+0:43 'f3' (uniform 3-component vector of float)
+0:43 Branch: Return with expression
+0:43 Convert float to bool (temp 3-component vector of bool)
+0:43 'f3' (uniform 3-component vector of float)
+0:46 Function Definition: Fn_R_B3D(vb3; (global 3-component vector of bool)
+0:44 Function Parameters:
+0:44 'p' (out 3-component vector of bool)
+0:? Sequence
+0:44 move second child to first child (temp 3-component vector of bool)
+0:44 'p' (out 3-component vector of bool)
+0:44 Convert double to bool (temp 3-component vector of bool)
+0:44 'd3' (uniform 3-component vector of double)
+0:44 Branch: Return with expression
+0:44 Convert double to bool (temp 3-component vector of bool)
+0:44 'd3' (uniform 3-component vector of double)
+0:47 Function Definition: Fn_R_D3I(vd3; (global 3-component vector of double)
+0:46 Function Parameters:
+0:46 'p' (out 3-component vector of double)
+0:? Sequence
+0:46 move second child to first child (temp 3-component vector of double)
+0:46 'p' (out 3-component vector of double)
+0:46 Convert int to double (temp 3-component vector of double)
+0:46 'i3' (uniform 3-component vector of int)
+0:46 Branch: Return with expression
+0:46 Convert int to double (temp 3-component vector of double)
+0:46 'i3' (uniform 3-component vector of int)
+0:48 Function Definition: Fn_R_D3U(vd3; (global 3-component vector of double)
+0:47 Function Parameters:
+0:47 'p' (out 3-component vector of double)
+0:? Sequence
+0:47 move second child to first child (temp 3-component vector of double)
+0:47 'p' (out 3-component vector of double)
+0:47 Convert uint to double (temp 3-component vector of double)
+0:47 'u3' (uniform 3-component vector of uint)
+0:47 Branch: Return with expression
+0:47 Convert uint to double (temp 3-component vector of double)
+0:47 'u3' (uniform 3-component vector of uint)
+0:49 Function Definition: Fn_R_D3B(vd3; (global 3-component vector of double)
+0:48 Function Parameters:
+0:48 'p' (out 3-component vector of double)
+0:? Sequence
+0:48 move second child to first child (temp 3-component vector of double)
+0:48 'p' (out 3-component vector of double)
+0:48 Convert bool to double (temp 3-component vector of double)
+0:48 'b3' (uniform 3-component vector of bool)
+0:48 Branch: Return with expression
+0:48 Convert bool to double (temp 3-component vector of double)
+0:48 'b3' (uniform 3-component vector of bool)
+0:51 Function Definition: Fn_R_D3F(vd3; (global 3-component vector of double)
+0:49 Function Parameters:
+0:49 'p' (out 3-component vector of double)
+0:? Sequence
+0:49 move second child to first child (temp 3-component vector of double)
+0:49 'p' (out 3-component vector of double)
+0:49 Convert float to double (temp 3-component vector of double)
+0:49 'f3' (uniform 3-component vector of float)
+0:49 Branch: Return with expression
+0:49 Convert float to double (temp 3-component vector of double)
+0:49 'f3' (uniform 3-component vector of float)
+0:202 Function Definition: main( (global structure{temp 4-component vector of float Color})
+0:52 Function Parameters:
+0:? Sequence
+0:54 Sequence
+0:54 move second child to first child (temp 3-component vector of float)
+0:54 'r00' (temp 3-component vector of float)
+0:54 Convert int to float (temp 3-component vector of float)
+0:54 'i3' (uniform 3-component vector of int)
+0:55 Sequence
+0:55 move second child to first child (temp 3-component vector of float)
+0:55 'r01' (temp 3-component vector of float)
+0:55 Convert bool to float (temp 3-component vector of float)
+0:55 'b3' (uniform 3-component vector of bool)
+0:56 Sequence
+0:56 move second child to first child (temp 3-component vector of float)
+0:56 'r02' (temp 3-component vector of float)
+0:56 Convert uint to float (temp 3-component vector of float)
+0:56 'u3' (uniform 3-component vector of uint)
+0:57 Sequence
+0:57 move second child to first child (temp 3-component vector of float)
+0:57 'r03' (temp 3-component vector of float)
+0:57 Convert double to float (temp 3-component vector of float)
+0:57 'd3' (uniform 3-component vector of double)
+0:59 Sequence
+0:59 move second child to first child (temp 3-component vector of int)
+0:59 'r10' (temp 3-component vector of int)
+0:59 Convert bool to int (temp 3-component vector of int)
+0:59 'b3' (uniform 3-component vector of bool)
+0:60 Sequence
+0:60 move second child to first child (temp 3-component vector of int)
+0:60 'r11' (temp 3-component vector of int)
+0:60 Convert uint to int (temp 3-component vector of int)
+0:60 'u3' (uniform 3-component vector of uint)
+0:61 Sequence
+0:61 move second child to first child (temp 3-component vector of int)
+0:61 'r12' (temp 3-component vector of int)
+0:61 Convert float to int (temp 3-component vector of int)
+0:61 'f3' (uniform 3-component vector of float)
+0:62 Sequence
+0:62 move second child to first child (temp 3-component vector of int)
+0:62 'r13' (temp 3-component vector of int)
+0:62 Convert double to int (temp 3-component vector of int)
+0:62 'd3' (uniform 3-component vector of double)
+0:64 Sequence
+0:64 move second child to first child (temp 3-component vector of uint)
+0:64 'r20' (temp 3-component vector of uint)
+0:64 Convert bool to uint (temp 3-component vector of uint)
+0:64 'b3' (uniform 3-component vector of bool)
+0:65 Sequence
+0:65 move second child to first child (temp 3-component vector of uint)
+0:65 'r21' (temp 3-component vector of uint)
+0:65 Convert int to uint (temp 3-component vector of uint)
+0:65 'i3' (uniform 3-component vector of int)
+0:66 Sequence
+0:66 move second child to first child (temp 3-component vector of uint)
+0:66 'r22' (temp 3-component vector of uint)
+0:66 Convert float to uint (temp 3-component vector of uint)
+0:66 'f3' (uniform 3-component vector of float)
+0:67 Sequence
+0:67 move second child to first child (temp 3-component vector of uint)
+0:67 'r23' (temp 3-component vector of uint)
+0:67 Convert double to uint (temp 3-component vector of uint)
+0:67 'd3' (uniform 3-component vector of double)
+0:69 Sequence
+0:69 move second child to first child (temp 3-component vector of bool)
+0:69 'r30' (temp 3-component vector of bool)
+0:69 Convert int to bool (temp 3-component vector of bool)
+0:69 'i3' (uniform 3-component vector of int)
+0:70 Sequence
+0:70 move second child to first child (temp 3-component vector of bool)
+0:70 'r31' (temp 3-component vector of bool)
+0:70 Convert uint to bool (temp 3-component vector of bool)
+0:70 'u3' (uniform 3-component vector of uint)
+0:71 Sequence
+0:71 move second child to first child (temp 3-component vector of bool)
+0:71 'r32' (temp 3-component vector of bool)
+0:71 Convert float to bool (temp 3-component vector of bool)
+0:71 'f3' (uniform 3-component vector of float)
+0:72 Sequence
+0:72 move second child to first child (temp 3-component vector of bool)
+0:72 'r33' (temp 3-component vector of bool)
+0:72 Convert double to bool (temp 3-component vector of bool)
+0:72 'd3' (uniform 3-component vector of double)
+0:74 Sequence
+0:74 move second child to first child (temp 3-component vector of double)
+0:74 'r40' (temp 3-component vector of double)
+0:74 Convert int to double (temp 3-component vector of double)
+0:74 'i3' (uniform 3-component vector of int)
+0:75 Sequence
+0:75 move second child to first child (temp 3-component vector of double)
+0:75 'r41' (temp 3-component vector of double)
+0:75 Convert uint to double (temp 3-component vector of double)
+0:75 'u3' (uniform 3-component vector of uint)
+0:76 Sequence
+0:76 move second child to first child (temp 3-component vector of double)
+0:76 'r42' (temp 3-component vector of double)
+0:76 Convert float to double (temp 3-component vector of double)
+0:76 'f3' (uniform 3-component vector of float)
+0:77 Sequence
+0:77 move second child to first child (temp 3-component vector of double)
+0:77 'r43' (temp 3-component vector of double)
+0:77 Convert bool to double (temp 3-component vector of double)
+0:77 'b3' (uniform 3-component vector of bool)
+0:80 multiply second child into first child (temp 3-component vector of float)
+0:80 'r00' (temp 3-component vector of float)
+0:80 Convert int to float (temp 3-component vector of float)
+0:80 'i3' (uniform 3-component vector of int)
+0:81 multiply second child into first child (temp 3-component vector of float)
+0:81 'r01' (temp 3-component vector of float)
+0:81 Convert bool to float (temp 3-component vector of float)
+0:81 'b3' (uniform 3-component vector of bool)
+0:82 multiply second child into first child (temp 3-component vector of float)
+0:82 'r02' (temp 3-component vector of float)
+0:82 Convert uint to float (temp 3-component vector of float)
+0:82 'u3' (uniform 3-component vector of uint)
+0:83 multiply second child into first child (temp 3-component vector of float)
+0:83 'r03' (temp 3-component vector of float)
+0:83 Convert double to float (temp 3-component vector of float)
+0:83 'd3' (uniform 3-component vector of double)
+0:85 multiply second child into first child (temp 3-component vector of int)
+0:85 'r10' (temp 3-component vector of int)
+0:85 Convert bool to int (temp 3-component vector of int)
+0:85 'b3' (uniform 3-component vector of bool)
+0:86 multiply second child into first child (temp 3-component vector of int)
+0:86 'r11' (temp 3-component vector of int)
+0:86 Convert uint to int (temp 3-component vector of int)
+0:86 'u3' (uniform 3-component vector of uint)
+0:87 multiply second child into first child (temp 3-component vector of int)
+0:87 'r12' (temp 3-component vector of int)
+0:87 Convert float to int (temp 3-component vector of int)
+0:87 'f3' (uniform 3-component vector of float)
+0:88 multiply second child into first child (temp 3-component vector of int)
+0:88 'r13' (temp 3-component vector of int)
+0:88 Convert double to int (temp 3-component vector of int)
+0:88 'd3' (uniform 3-component vector of double)
+0:90 multiply second child into first child (temp 3-component vector of uint)
+0:90 'r20' (temp 3-component vector of uint)
+0:90 Convert bool to uint (temp 3-component vector of uint)
+0:90 'b3' (uniform 3-component vector of bool)
+0:91 multiply second child into first child (temp 3-component vector of uint)
+0:91 'r21' (temp 3-component vector of uint)
+0:91 Convert int to uint (temp 3-component vector of uint)
+0:91 'i3' (uniform 3-component vector of int)
+0:92 multiply second child into first child (temp 3-component vector of uint)
+0:92 'r22' (temp 3-component vector of uint)
+0:92 Convert float to uint (temp 3-component vector of uint)
+0:92 'f3' (uniform 3-component vector of float)
+0:93 multiply second child into first child (temp 3-component vector of uint)
+0:93 'r23' (temp 3-component vector of uint)
+0:93 Convert double to uint (temp 3-component vector of uint)
+0:93 'd3' (uniform 3-component vector of double)
+0:97 multiply second child into first child (temp 3-component vector of double)
+0:97 'r40' (temp 3-component vector of double)
+0:97 Convert int to double (temp 3-component vector of double)
+0:97 'i3' (uniform 3-component vector of int)
+0:98 multiply second child into first child (temp 3-component vector of double)
+0:98 'r41' (temp 3-component vector of double)
+0:98 Convert uint to double (temp 3-component vector of double)
+0:98 'u3' (uniform 3-component vector of uint)
+0:99 multiply second child into first child (temp 3-component vector of double)
+0:99 'r42' (temp 3-component vector of double)
+0:99 Convert float to double (temp 3-component vector of double)
+0:99 'f3' (uniform 3-component vector of float)
+0:100 multiply second child into first child (temp 3-component vector of double)
+0:100 'r43' (temp 3-component vector of double)
+0:100 Convert bool to double (temp 3-component vector of double)
+0:100 'b3' (uniform 3-component vector of bool)
+0:103 vector scale second child into first child (temp 3-component vector of float)
+0:103 'r00' (temp 3-component vector of float)
+0:103 Convert int to float (temp float)
+0:103 'is' (uniform int)
+0:104 vector scale second child into first child (temp 3-component vector of float)
+0:104 'r01' (temp 3-component vector of float)
+0:104 Convert bool to float (temp float)
+0:104 'bs' (uniform bool)
+0:105 vector scale second child into first child (temp 3-component vector of float)
+0:105 'r02' (temp 3-component vector of float)
+0:105 Convert uint to float (temp float)
+0:105 'us' (uniform uint)
+0:106 vector scale second child into first child (temp 3-component vector of float)
+0:106 'r03' (temp 3-component vector of float)
+0:106 Convert double to float (temp float)
+0:106 'ds' (uniform double)
+0:108 vector scale second child into first child (temp 3-component vector of int)
+0:108 'r10' (temp 3-component vector of int)
+0:108 Convert bool to int (temp int)
+0:108 'bs' (uniform bool)
+0:109 vector scale second child into first child (temp 3-component vector of int)
+0:109 'r11' (temp 3-component vector of int)
+0:109 Convert uint to int (temp int)
+0:109 'us' (uniform uint)
+0:110 vector scale second child into first child (temp 3-component vector of int)
+0:110 'r12' (temp 3-component vector of int)
+0:110 Convert float to int (temp int)
+0:110 'fs' (uniform float)
+0:111 vector scale second child into first child (temp 3-component vector of int)
+0:111 'r13' (temp 3-component vector of int)
+0:111 Convert double to int (temp int)
+0:111 'ds' (uniform double)
+0:113 vector scale second child into first child (temp 3-component vector of uint)
+0:113 'r20' (temp 3-component vector of uint)
+0:113 Convert bool to uint (temp uint)
+0:113 'bs' (uniform bool)
+0:114 vector scale second child into first child (temp 3-component vector of uint)
+0:114 'r21' (temp 3-component vector of uint)
+0:114 Convert int to uint (temp uint)
+0:114 'is' (uniform int)
+0:115 vector scale second child into first child (temp 3-component vector of uint)
+0:115 'r22' (temp 3-component vector of uint)
+0:115 Convert float to uint (temp uint)
+0:115 'fs' (uniform float)
+0:116 vector scale second child into first child (temp 3-component vector of uint)
+0:116 'r23' (temp 3-component vector of uint)
+0:116 Convert double to uint (temp uint)
+0:116 'ds' (uniform double)
+0:120 vector scale second child into first child (temp 3-component vector of double)
+0:120 'r40' (temp 3-component vector of double)
+0:120 Convert int to double (temp double)
+0:120 'is' (uniform int)
+0:121 vector scale second child into first child (temp 3-component vector of double)
+0:121 'r41' (temp 3-component vector of double)
+0:121 Convert uint to double (temp double)
+0:121 'us' (uniform uint)
+0:122 vector scale second child into first child (temp 3-component vector of double)
+0:122 'r42' (temp 3-component vector of double)
+0:122 Convert float to double (temp double)
+0:122 'fs' (uniform float)
+0:123 vector scale second child into first child (temp 3-component vector of double)
+0:123 'r43' (temp 3-component vector of double)
+0:123 Convert bool to double (temp double)
+0:123 'bs' (uniform bool)
+0:193 Sequence
+0:193 move second child to first child (temp int)
+0:193 'c1' (temp int)
+0:193 Constant:
+0:193 3 (const int)
+0:194 Sequence
+0:194 move second child to first child (temp int)
+0:194 'c2' (temp int)
+0:194 Constant:
+0:194 3 (const int)
+0:196 Sequence
+0:196 move second child to first child (temp 4-component vector of float)
+0:196 'outval' (temp 4-component vector of float)
+0:? Construct vec4 (temp 4-component vector of float)
+0:196 Constant:
+0:196 3.600000
+0:196 Constant:
+0:196 3.600000
+0:196 Convert int to float (temp float)
+0:196 'c1' (temp int)
+0:196 Convert int to float (temp float)
+0:196 'c2' (temp int)
+0:199 move second child to first child (temp 4-component vector of float)
+0:199 Color: direct index for structure (temp 4-component vector of float)
+0:199 'psout' (temp structure{temp 4-component vector of float Color})
+0:199 Constant:
+0:199 0 (const int)
+0:199 'outval' (temp 4-component vector of float)
+0:200 Branch: Return with expression
+0:200 'psout' (temp structure{temp 4-component vector of float Color})
+0:? Linker Objects
+0:? 'i3' (uniform 3-component vector of int)
+0:? 'b3' (uniform 3-component vector of bool)
+0:? 'f3' (uniform 3-component vector of float)
+0:? 'u3' (uniform 3-component vector of uint)
+0:? 'd3' (uniform 3-component vector of double)
+0:? 'is' (uniform int)
+0:? 'bs' (uniform bool)
+0:? 'fs' (uniform float)
+0:? 'us' (uniform uint)
+0:? 'ds' (uniform double)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 478
+
+ Capability Shader
+ Capability Float64
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 450
+ Name 4 "main"
+ Name 11 "Fn_F3(vf3;"
+ Name 10 "x"
+ Name 18 "Fn_I3(vi3;"
+ Name 17 "x"
+ Name 25 "Fn_U3(vu3;"
+ Name 24 "x"
+ Name 32 "Fn_B3(vb3;"
+ Name 31 "x"
+ Name 39 "Fn_D3(vd3;"
+ Name 38 "x"
+ Name 43 "Fn_R_F3I(vf3;"
+ Name 42 "p"
+ Name 46 "Fn_R_F3U(vf3;"
+ Name 45 "p"
+ Name 49 "Fn_R_F3B(vf3;"
+ Name 48 "p"
+ Name 52 "Fn_R_F3D(vf3;"
+ Name 51 "p"
+ Name 56 "Fn_R_I3U(vi3;"
+ Name 55 "p"
+ Name 59 "Fn_R_I3B(vi3;"
+ Name 58 "p"
+ Name 62 "Fn_R_I3F(vi3;"
+ Name 61 "p"
+ Name 65 "Fn_R_I3D(vi3;"
+ Name 64 "p"
+ Name 69 "Fn_R_U3I(vu3;"
+ Name 68 "p"
+ Name 72 "Fn_R_U3F(vu3;"
+ Name 71 "p"
+ Name 75 "Fn_R_U3B(vu3;"
+ Name 74 "p"
+ Name 78 "Fn_R_U3D(vu3;"
+ Name 77 "p"
+ Name 82 "Fn_R_B3I(vb3;"
+ Name 81 "p"
+ Name 85 "Fn_R_B3U(vb3;"
+ Name 84 "p"
+ Name 88 "Fn_R_B3F(vb3;"
+ Name 87 "p"
+ Name 91 "Fn_R_B3D(vb3;"
+ Name 90 "p"
+ Name 95 "Fn_R_D3I(vd3;"
+ Name 94 "p"
+ Name 98 "Fn_R_D3U(vd3;"
+ Name 97 "p"
+ Name 101 "Fn_R_D3B(vd3;"
+ Name 100 "p"
+ Name 104 "Fn_R_D3F(vd3;"
+ Name 103 "p"
+ Name 107 "i3"
+ Name 115 "u3"
+ Name 123 "b3"
+ Name 135 "d3"
+ Name 159 "f3"
+ Name 252 "r00"
+ Name 255 "r01"
+ Name 258 "r02"
+ Name 261 "r03"
+ Name 264 "r10"
+ Name 267 "r11"
+ Name 270 "r12"
+ Name 273 "r13"
+ Name 276 "r20"
+ Name 279 "r21"
+ Name 282 "r22"
+ Name 285 "r23"
+ Name 288 "r30"
+ Name 291 "r31"
+ Name 294 "r32"
+ Name 297 "r33"
+ Name 300 "r40"
+ Name 303 "r41"
+ Name 306 "r42"
+ Name 309 "r43"
+ Name 377 "is"
+ Name 383 "bs"
+ Name 389 "us"
+ Name 395 "ds"
+ Name 411 "fs"
+ Name 459 "c1"
+ Name 461 "c2"
+ Name 464 "outval"
+ Name 471 "PS_OUTPUT"
+ MemberName 471(PS_OUTPUT) 0 "Color"
+ Name 473 "psout"
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 3
+ 8: TypePointer Function 7(fvec3)
+ 9: TypeFunction 2 8(ptr)
+ 13: TypeInt 32 1
+ 14: TypeVector 13(int) 3
+ 15: TypePointer Function 14(ivec3)
+ 16: TypeFunction 2 15(ptr)
+ 20: TypeInt 32 0
+ 21: TypeVector 20(int) 3
+ 22: TypePointer Function 21(ivec3)
+ 23: TypeFunction 2 22(ptr)
+ 27: TypeBool
+ 28: TypeVector 27(bool) 3
+ 29: TypePointer Function 28(bvec3)
+ 30: TypeFunction 2 29(ptr)
+ 34: TypeFloat 64
+ 35: TypeVector 34(float) 3
+ 36: TypePointer Function 35(fvec3)
+ 37: TypeFunction 2 36(ptr)
+ 41: TypeFunction 7(fvec3) 8(ptr)
+ 54: TypeFunction 14(ivec3) 15(ptr)
+ 67: TypeFunction 21(ivec3) 22(ptr)
+ 80: TypeFunction 28(bvec3) 29(ptr)
+ 93: TypeFunction 35(fvec3) 36(ptr)
+ 106: TypePointer UniformConstant 14(ivec3)
+ 107(i3): 106(ptr) Variable UniformConstant
+ 114: TypePointer UniformConstant 21(ivec3)
+ 115(u3): 114(ptr) Variable UniformConstant
+ 122: TypePointer UniformConstant 28(bvec3)
+ 123(b3): 122(ptr) Variable UniformConstant
+ 125: 6(float) Constant 0
+ 126: 6(float) Constant 1065353216
+ 127: 7(fvec3) ConstantComposite 125 125 125
+ 128: 7(fvec3) ConstantComposite 126 126 126
+ 134: TypePointer UniformConstant 35(fvec3)
+ 135(d3): 134(ptr) Variable UniformConstant
+ 149: 13(int) Constant 0
+ 150: 13(int) Constant 1
+ 151: 14(ivec3) ConstantComposite 149 149 149
+ 152: 14(ivec3) ConstantComposite 150 150 150
+ 158: TypePointer UniformConstant 7(fvec3)
+ 159(f3): 158(ptr) Variable UniformConstant
+ 185: 20(int) Constant 0
+ 186: 20(int) Constant 1
+ 187: 21(ivec3) ConstantComposite 185 185 185
+ 188: 21(ivec3) ConstantComposite 186 186 186
+ 219: 34(float) Constant 0 0
+ 220: 35(fvec3) ConstantComposite 219 219 219
+ 239: 34(float) Constant 0 1072693248
+ 240: 35(fvec3) ConstantComposite 239 239 239
+ 376: TypePointer UniformConstant 13(int)
+ 377(is): 376(ptr) Variable UniformConstant
+ 382: TypePointer UniformConstant 27(bool)
+ 383(bs): 382(ptr) Variable UniformConstant
+ 388: TypePointer UniformConstant 20(int)
+ 389(us): 388(ptr) Variable UniformConstant
+ 394: TypePointer UniformConstant 34(float)
+ 395(ds): 394(ptr) Variable UniformConstant
+ 410: TypePointer UniformConstant 6(float)
+ 411(fs): 410(ptr) Variable UniformConstant
+ 458: TypePointer Function 13(int)
+ 460: 13(int) Constant 3
+ 462: TypeVector 6(float) 4
+ 463: TypePointer Function 462(fvec4)
+ 465: 6(float) Constant 1080452710
+ 471(PS_OUTPUT): TypeStruct 462(fvec4)
+ 472: TypePointer Function 471(PS_OUTPUT)
+ 4(main): 2 Function None 3
+ 5: Label
+ 252(r00): 8(ptr) Variable Function
+ 255(r01): 8(ptr) Variable Function
+ 258(r02): 8(ptr) Variable Function
+ 261(r03): 8(ptr) Variable Function
+ 264(r10): 15(ptr) Variable Function
+ 267(r11): 15(ptr) Variable Function
+ 270(r12): 15(ptr) Variable Function
+ 273(r13): 15(ptr) Variable Function
+ 276(r20): 22(ptr) Variable Function
+ 279(r21): 22(ptr) Variable Function
+ 282(r22): 22(ptr) Variable Function
+ 285(r23): 22(ptr) Variable Function
+ 288(r30): 29(ptr) Variable Function
+ 291(r31): 29(ptr) Variable Function
+ 294(r32): 29(ptr) Variable Function
+ 297(r33): 29(ptr) Variable Function
+ 300(r40): 36(ptr) Variable Function
+ 303(r41): 36(ptr) Variable Function
+ 306(r42): 36(ptr) Variable Function
+ 309(r43): 36(ptr) Variable Function
+ 459(c1): 458(ptr) Variable Function
+ 461(c2): 458(ptr) Variable Function
+ 464(outval): 463(ptr) Variable Function
+ 473(psout): 472(ptr) Variable Function
+ 253: 14(ivec3) Load 107(i3)
+ 254: 7(fvec3) ConvertSToF 253
+ Store 252(r00) 254
+ 256: 28(bvec3) Load 123(b3)
+ 257: 7(fvec3) Select 256 128 127
+ Store 255(r01) 257
+ 259: 21(ivec3) Load 115(u3)
+ 260: 7(fvec3) ConvertUToF 259
+ Store 258(r02) 260
+ 262: 35(fvec3) Load 135(d3)
+ 263: 7(fvec3) FConvert 262
+ Store 261(r03) 263
+ 265: 28(bvec3) Load 123(b3)
+ 266: 14(ivec3) Select 265 152 151
+ Store 264(r10) 266
+ 268: 21(ivec3) Load 115(u3)
+ 269: 14(ivec3) Bitcast 268
+ Store 267(r11) 269
+ 271: 7(fvec3) Load 159(f3)
+ 272: 14(ivec3) ConvertFToS 271
+ Store 270(r12) 272
+ 274: 35(fvec3) Load 135(d3)
+ 275: 14(ivec3) ConvertFToS 274
+ Store 273(r13) 275
+ 277: 28(bvec3) Load 123(b3)
+ 278: 21(ivec3) Select 277 188 187
+ Store 276(r20) 278
+ 280: 14(ivec3) Load 107(i3)
+ 281: 21(ivec3) Bitcast 280
+ Store 279(r21) 281
+ 283: 7(fvec3) Load 159(f3)
+ 284: 21(ivec3) ConvertFToU 283
+ Store 282(r22) 284
+ 286: 35(fvec3) Load 135(d3)
+ 287: 21(ivec3) ConvertFToU 286
+ Store 285(r23) 287
+ 289: 14(ivec3) Load 107(i3)
+ 290: 28(bvec3) INotEqual 289 187
+ Store 288(r30) 290
+ 292: 21(ivec3) Load 115(u3)
+ 293: 28(bvec3) INotEqual 292 187
+ Store 291(r31) 293
+ 295: 7(fvec3) Load 159(f3)
+ 296: 28(bvec3) FOrdNotEqual 295 127
+ Store 294(r32) 296
+ 298: 35(fvec3) Load 135(d3)
+ 299: 28(bvec3) FOrdNotEqual 298 220
+ Store 297(r33) 299
+ 301: 14(ivec3) Load 107(i3)
+ 302: 35(fvec3) ConvertSToF 301
+ Store 300(r40) 302
+ 304: 21(ivec3) Load 115(u3)
+ 305: 35(fvec3) ConvertUToF 304
+ Store 303(r41) 305
+ 307: 7(fvec3) Load 159(f3)
+ 308: 35(fvec3) FConvert 307
+ Store 306(r42) 308
+ 310: 28(bvec3) Load 123(b3)
+ 311: 35(fvec3) Select 310 240 220
+ Store 309(r43) 311
+ 312: 14(ivec3) Load 107(i3)
+ 313: 7(fvec3) ConvertSToF 312
+ 314: 7(fvec3) Load 252(r00)
+ 315: 7(fvec3) FMul 314 313
+ Store 252(r00) 315
+ 316: 28(bvec3) Load 123(b3)
+ 317: 7(fvec3) Select 316 128 127
+ 318: 7(fvec3) Load 255(r01)
+ 319: 7(fvec3) FMul 318 317
+ Store 255(r01) 319
+ 320: 21(ivec3) Load 115(u3)
+ 321: 7(fvec3) ConvertUToF 320
+ 322: 7(fvec3) Load 258(r02)
+ 323: 7(fvec3) FMul 322 321
+ Store 258(r02) 323
+ 324: 35(fvec3) Load 135(d3)
+ 325: 7(fvec3) FConvert 324
+ 326: 7(fvec3) Load 261(r03)
+ 327: 7(fvec3) FMul 326 325
+ Store 261(r03) 327
+ 328: 28(bvec3) Load 123(b3)
+ 329: 14(ivec3) Select 328 152 151
+ 330: 14(ivec3) Load 264(r10)
+ 331: 14(ivec3) IMul 330 329
+ Store 264(r10) 331
+ 332: 21(ivec3) Load 115(u3)
+ 333: 14(ivec3) Bitcast 332
+ 334: 14(ivec3) Load 267(r11)
+ 335: 14(ivec3) IMul 334 333
+ Store 267(r11) 335
+ 336: 7(fvec3) Load 159(f3)
+ 337: 14(ivec3) ConvertFToS 336
+ 338: 14(ivec3) Load 270(r12)
+ 339: 14(ivec3) IMul 338 337
+ Store 270(r12) 339
+ 340: 35(fvec3) Load 135(d3)
+ 341: 14(ivec3) ConvertFToS 340
+ 342: 14(ivec3) Load 273(r13)
+ 343: 14(ivec3) IMul 342 341
+ Store 273(r13) 343
+ 344: 28(bvec3) Load 123(b3)
+ 345: 21(ivec3) Select 344 188 187
+ 346: 21(ivec3) Load 276(r20)
+ 347: 21(ivec3) IMul 346 345
+ Store 276(r20) 347
+ 348: 14(ivec3) Load 107(i3)
+ 349: 21(ivec3) Bitcast 348
+ 350: 21(ivec3) Load 279(r21)
+ 351: 21(ivec3) IMul 350 349
+ Store 279(r21) 351
+ 352: 7(fvec3) Load 159(f3)
+ 353: 21(ivec3) ConvertFToU 352
+ 354: 21(ivec3) Load 282(r22)
+ 355: 21(ivec3) IMul 354 353
+ Store 282(r22) 355
+ 356: 35(fvec3) Load 135(d3)
+ 357: 21(ivec3) ConvertFToU 356
+ 358: 21(ivec3) Load 285(r23)
+ 359: 21(ivec3) IMul 358 357
+ Store 285(r23) 359
+ 360: 14(ivec3) Load 107(i3)
+ 361: 35(fvec3) ConvertSToF 360
+ 362: 35(fvec3) Load 300(r40)
+ 363: 35(fvec3) FMul 362 361
+ Store 300(r40) 363
+ 364: 21(ivec3) Load 115(u3)
+ 365: 35(fvec3) ConvertUToF 364
+ 366: 35(fvec3) Load 303(r41)
+ 367: 35(fvec3) FMul 366 365
+ Store 303(r41) 367
+ 368: 7(fvec3) Load 159(f3)
+ 369: 35(fvec3) FConvert 368
+ 370: 35(fvec3) Load 306(r42)
+ 371: 35(fvec3) FMul 370 369
+ Store 306(r42) 371
+ 372: 28(bvec3) Load 123(b3)
+ 373: 35(fvec3) Select 372 240 220
+ 374: 35(fvec3) Load 309(r43)
+ 375: 35(fvec3) FMul 374 373
+ Store 309(r43) 375
+ 378: 13(int) Load 377(is)
+ 379: 6(float) ConvertSToF 378
+ 380: 7(fvec3) Load 252(r00)
+ 381: 7(fvec3) VectorTimesScalar 380 379
+ Store 252(r00) 381
+ 384: 27(bool) Load 383(bs)
+ 385: 6(float) Select 384 126 125
+ 386: 7(fvec3) Load 255(r01)
+ 387: 7(fvec3) VectorTimesScalar 386 385
+ Store 255(r01) 387
+ 390: 20(int) Load 389(us)
+ 391: 6(float) ConvertUToF 390
+ 392: 7(fvec3) Load 258(r02)
+ 393: 7(fvec3) VectorTimesScalar 392 391
+ Store 258(r02) 393
+ 396: 34(float) Load 395(ds)
+ 397: 6(float) FConvert 396
+ 398: 7(fvec3) Load 261(r03)
+ 399: 7(fvec3) VectorTimesScalar 398 397
+ Store 261(r03) 399
+ 400: 27(bool) Load 383(bs)
+ 401: 13(int) Select 400 150 149
+ 402: 14(ivec3) Load 264(r10)
+ 403: 14(ivec3) CompositeConstruct 401 401 401
+ 404: 14(ivec3) IMul 402 403
+ Store 264(r10) 404
+ 405: 20(int) Load 389(us)
+ 406: 13(int) Bitcast 405
+ 407: 14(ivec3) Load 267(r11)
+ 408: 14(ivec3) CompositeConstruct 406 406 406
+ 409: 14(ivec3) IMul 407 408
+ Store 267(r11) 409
+ 412: 6(float) Load 411(fs)
+ 413: 13(int) ConvertFToS 412
+ 414: 14(ivec3) Load 270(r12)
+ 415: 14(ivec3) CompositeConstruct 413 413 413
+ 416: 14(ivec3) IMul 414 415
+ Store 270(r12) 416
+ 417: 34(float) Load 395(ds)
+ 418: 13(int) ConvertFToS 417
+ 419: 14(ivec3) Load 273(r13)
+ 420: 14(ivec3) CompositeConstruct 418 418 418
+ 421: 14(ivec3) IMul 419 420
+ Store 273(r13) 421
+ 422: 27(bool) Load 383(bs)
+ 423: 20(int) Select 422 186 185
+ 424: 21(ivec3) Load 276(r20)
+ 425: 21(ivec3) CompositeConstruct 423 423 423
+ 426: 21(ivec3) IMul 424 425
+ Store 276(r20) 426
+ 427: 13(int) Load 377(is)
+ 428: 20(int) Bitcast 427
+ 429: 21(ivec3) Load 279(r21)
+ 430: 21(ivec3) CompositeConstruct 428 428 428
+ 431: 21(ivec3) IMul 429 430
+ Store 279(r21) 431
+ 432: 6(float) Load 411(fs)
+ 433: 20(int) ConvertFToU 432
+ 434: 21(ivec3) Load 282(r22)
+ 435: 21(ivec3) CompositeConstruct 433 433 433
+ 436: 21(ivec3) IMul 434 435
+ Store 282(r22) 436
+ 437: 34(float) Load 395(ds)
+ 438: 20(int) ConvertFToU 437
+ 439: 21(ivec3) Load 285(r23)
+ 440: 21(ivec3) CompositeConstruct 438 438 438
+ 441: 21(ivec3) IMul 439 440
+ Store 285(r23) 441
+ 442: 13(int) Load 377(is)
+ 443: 34(float) ConvertSToF 442
+ 444: 35(fvec3) Load 300(r40)
+ 445: 35(fvec3) VectorTimesScalar 444 443
+ Store 300(r40) 445
+ 446: 20(int) Load 389(us)
+ 447: 34(float) ConvertUToF 446
+ 448: 35(fvec3) Load 303(r41)
+ 449: 35(fvec3) VectorTimesScalar 448 447
+ Store 303(r41) 449
+ 450: 6(float) Load 411(fs)
+ 451: 34(float) FConvert 450
+ 452: 35(fvec3) Load 306(r42)
+ 453: 35(fvec3) VectorTimesScalar 452 451
+ Store 306(r42) 453
+ 454: 27(bool) Load 383(bs)
+ 455: 34(float) Select 454 239 219
+ 456: 35(fvec3) Load 309(r43)
+ 457: 35(fvec3) VectorTimesScalar 456 455
+ Store 309(r43) 457
+ Store 459(c1) 460
+ Store 461(c2) 460
+ 466: 13(int) Load 459(c1)
+ 467: 6(float) ConvertSToF 466
+ 468: 13(int) Load 461(c2)
+ 469: 6(float) ConvertSToF 468
+ 470: 462(fvec4) CompositeConstruct 465 465 467 469
+ Store 464(outval) 470
+ 474: 462(fvec4) Load 464(outval)
+ 475: 463(ptr) AccessChain 473(psout) 149
+ Store 475 474
+ 476:471(PS_OUTPUT) Load 473(psout)
+ ReturnValue 476
+ FunctionEnd
+ 11(Fn_F3(vf3;): 2 Function None 9
+ 10(x): 8(ptr) FunctionParameter
+ 12: Label
+ Return
+ FunctionEnd
+ 18(Fn_I3(vi3;): 2 Function None 16
+ 17(x): 15(ptr) FunctionParameter
+ 19: Label
+ Return
+ FunctionEnd
+ 25(Fn_U3(vu3;): 2 Function None 23
+ 24(x): 22(ptr) FunctionParameter
+ 26: Label
+ Return
+ FunctionEnd
+ 32(Fn_B3(vb3;): 2 Function None 30
+ 31(x): 29(ptr) FunctionParameter
+ 33: Label
+ Return
+ FunctionEnd
+ 39(Fn_D3(vd3;): 2 Function None 37
+ 38(x): 36(ptr) FunctionParameter
+ 40: Label
+ Return
+ FunctionEnd
+43(Fn_R_F3I(vf3;): 7(fvec3) Function None 41
+ 42(p): 8(ptr) FunctionParameter
+ 44: Label
+ 108: 14(ivec3) Load 107(i3)
+ 109: 7(fvec3) ConvertSToF 108
+ Store 42(p) 109
+ 110: 14(ivec3) Load 107(i3)
+ 111: 7(fvec3) ConvertSToF 110
+ ReturnValue 111
+ FunctionEnd
+46(Fn_R_F3U(vf3;): 7(fvec3) Function None 41
+ 45(p): 8(ptr) FunctionParameter
+ 47: Label
+ 116: 21(ivec3) Load 115(u3)
+ 117: 7(fvec3) ConvertUToF 116
+ Store 45(p) 117
+ 118: 21(ivec3) Load 115(u3)
+ 119: 7(fvec3) ConvertUToF 118
+ ReturnValue 119
+ FunctionEnd
+49(Fn_R_F3B(vf3;): 7(fvec3) Function None 41
+ 48(p): 8(ptr) FunctionParameter
+ 50: Label
+ 124: 28(bvec3) Load 123(b3)
+ 129: 7(fvec3) Select 124 128 127
+ Store 48(p) 129
+ 130: 28(bvec3) Load 123(b3)
+ 131: 7(fvec3) Select 130 128 127
+ ReturnValue 131
+ FunctionEnd
+52(Fn_R_F3D(vf3;): 7(fvec3) Function None 41
+ 51(p): 8(ptr) FunctionParameter
+ 53: Label
+ 136: 35(fvec3) Load 135(d3)
+ 137: 7(fvec3) FConvert 136
+ Store 51(p) 137
+ 138: 35(fvec3) Load 135(d3)
+ 139: 7(fvec3) FConvert 138
+ ReturnValue 139
+ FunctionEnd
+56(Fn_R_I3U(vi3;): 14(ivec3) Function None 54
+ 55(p): 15(ptr) FunctionParameter
+ 57: Label
+ 142: 21(ivec3) Load 115(u3)
+ 143: 14(ivec3) Bitcast 142
+ Store 55(p) 143
+ 144: 21(ivec3) Load 115(u3)
+ 145: 14(ivec3) Bitcast 144
+ ReturnValue 145
+ FunctionEnd
+59(Fn_R_I3B(vi3;): 14(ivec3) Function None 54
+ 58(p): 15(ptr) FunctionParameter
+ 60: Label
+ 148: 28(bvec3) Load 123(b3)
+ 153: 14(ivec3) Select 148 152 151
+ Store 58(p) 153
+ 154: 28(bvec3) Load 123(b3)
+ 155: 14(ivec3) Select 154 152 151
+ ReturnValue 155
+ FunctionEnd
+62(Fn_R_I3F(vi3;): 14(ivec3) Function None 54
+ 61(p): 15(ptr) FunctionParameter
+ 63: Label
+ 160: 7(fvec3) Load 159(f3)
+ 161: 14(ivec3) ConvertFToS 160
+ Store 61(p) 161
+ 162: 7(fvec3) Load 159(f3)
+ 163: 14(ivec3) ConvertFToS 162
+ ReturnValue 163
+ FunctionEnd
+65(Fn_R_I3D(vi3;): 14(ivec3) Function None 54
+ 64(p): 15(ptr) FunctionParameter
+ 66: Label
+ 166: 35(fvec3) Load 135(d3)
+ 167: 14(ivec3) ConvertFToS 166
+ Store 64(p) 167
+ 168: 35(fvec3) Load 135(d3)
+ 169: 14(ivec3) ConvertFToS 168
+ ReturnValue 169
+ FunctionEnd
+69(Fn_R_U3I(vu3;): 21(ivec3) Function None 67
+ 68(p): 22(ptr) FunctionParameter
+ 70: Label
+ 172: 14(ivec3) Load 107(i3)
+ 173: 21(ivec3) Bitcast 172
+ Store 68(p) 173
+ 174: 14(ivec3) Load 107(i3)
+ 175: 21(ivec3) Bitcast 174
+ ReturnValue 175
+ FunctionEnd
+72(Fn_R_U3F(vu3;): 21(ivec3) Function None 67
+ 71(p): 22(ptr) FunctionParameter
+ 73: Label
+ 178: 7(fvec3) Load 159(f3)
+ 179: 21(ivec3) ConvertFToU 178
+ Store 71(p) 179
+ 180: 7(fvec3) Load 159(f3)
+ 181: 21(ivec3) ConvertFToU 180
+ ReturnValue 181
+ FunctionEnd
+75(Fn_R_U3B(vu3;): 21(ivec3) Function None 67
+ 74(p): 22(ptr) FunctionParameter
+ 76: Label
+ 184: 28(bvec3) Load 123(b3)
+ 189: 21(ivec3) Select 184 188 187
+ Store 74(p) 189
+ 190: 28(bvec3) Load 123(b3)
+ 191: 21(ivec3) Select 190 188 187
+ ReturnValue 191
+ FunctionEnd
+78(Fn_R_U3D(vu3;): 21(ivec3) Function None 67
+ 77(p): 22(ptr) FunctionParameter
+ 79: Label
+ 194: 35(fvec3) Load 135(d3)
+ 195: 21(ivec3) ConvertFToU 194
+ Store 77(p) 195
+ 196: 35(fvec3) Load 135(d3)
+ 197: 21(ivec3) ConvertFToU 196
+ ReturnValue 197
+ FunctionEnd
+82(Fn_R_B3I(vb3;): 28(bvec3) Function None 80
+ 81(p): 29(ptr) FunctionParameter
+ 83: Label
+ 200: 14(ivec3) Load 107(i3)
+ 201: 28(bvec3) INotEqual 200 187
+ Store 81(p) 201
+ 202: 14(ivec3) Load 107(i3)
+ 203: 28(bvec3) INotEqual 202 187
+ ReturnValue 203
+ FunctionEnd
+85(Fn_R_B3U(vb3;): 28(bvec3) Function None 80
+ 84(p): 29(ptr) FunctionParameter
+ 86: Label
+ 206: 21(ivec3) Load 115(u3)
+ 207: 28(bvec3) INotEqual 206 187
+ Store 84(p) 207
+ 208: 21(ivec3) Load 115(u3)
+ 209: 28(bvec3) INotEqual 208 187
+ ReturnValue 209
+ FunctionEnd
+88(Fn_R_B3F(vb3;): 28(bvec3) Function None 80
+ 87(p): 29(ptr) FunctionParameter
+ 89: Label
+ 212: 7(fvec3) Load 159(f3)
+ 213: 28(bvec3) FOrdNotEqual 212 127
+ Store 87(p) 213
+ 214: 7(fvec3) Load 159(f3)
+ 215: 28(bvec3) FOrdNotEqual 214 127
+ ReturnValue 215
+ FunctionEnd
+91(Fn_R_B3D(vb3;): 28(bvec3) Function None 80
+ 90(p): 29(ptr) FunctionParameter
+ 92: Label
+ 218: 35(fvec3) Load 135(d3)
+ 221: 28(bvec3) FOrdNotEqual 218 220
+ Store 90(p) 221
+ 222: 35(fvec3) Load 135(d3)
+ 223: 28(bvec3) FOrdNotEqual 222 220
+ ReturnValue 223
+ FunctionEnd
+95(Fn_R_D3I(vd3;): 35(fvec3) Function None 93
+ 94(p): 36(ptr) FunctionParameter
+ 96: Label
+ 226: 14(ivec3) Load 107(i3)
+ 227: 35(fvec3) ConvertSToF 226
+ Store 94(p) 227
+ 228: 14(ivec3) Load 107(i3)
+ 229: 35(fvec3) ConvertSToF 228
+ ReturnValue 229
+ FunctionEnd
+98(Fn_R_D3U(vd3;): 35(fvec3) Function None 93
+ 97(p): 36(ptr) FunctionParameter
+ 99: Label
+ 232: 21(ivec3) Load 115(u3)
+ 233: 35(fvec3) ConvertUToF 232
+ Store 97(p) 233
+ 234: 21(ivec3) Load 115(u3)
+ 235: 35(fvec3) ConvertUToF 234
+ ReturnValue 235
+ FunctionEnd
+101(Fn_R_D3B(vd3;): 35(fvec3) Function None 93
+ 100(p): 36(ptr) FunctionParameter
+ 102: Label
+ 238: 28(bvec3) Load 123(b3)
+ 241: 35(fvec3) Select 238 240 220
+ Store 100(p) 241
+ 242: 28(bvec3) Load 123(b3)
+ 243: 35(fvec3) Select 242 240 220
+ ReturnValue 243
+ FunctionEnd
+104(Fn_R_D3F(vd3;): 35(fvec3) Function None 93
+ 103(p): 36(ptr) FunctionParameter
+ 105: Label
+ 246: 7(fvec3) Load 159(f3)
+ 247: 35(fvec3) FConvert 246
+ Store 103(p) 247
+ 248: 7(fvec3) Load 159(f3)
+ 249: 35(fvec3) FConvert 248
+ ReturnValue 249
+ FunctionEnd
diff --git a/Test/baseResults/hlsl.semicolons.frag.out b/Test/baseResults/hlsl.semicolons.frag.out
new file mode 100644
index 0000000..78a3a5a
--- /dev/null
+++ b/Test/baseResults/hlsl.semicolons.frag.out
@@ -0,0 +1,96 @@
+hlsl.semicolons.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: MyFunc( (global void)
+0:2 Function Parameters:
+0:8 Function Definition: MyFunc2( (global void)
+0:8 Function Parameters:
+0:18 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:13 Function 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 Branch: Return with expression
+0:17 'ps_output' (temp structure{temp 4-component vector of float color})
+0:? Linker Objects
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4 Function Definition: MyFunc( (global void)
+0:2 Function Parameters:
+0:8 Function Definition: MyFunc2( (global void)
+0:8 Function Parameters:
+0:18 Function Definition: main( (global structure{temp 4-component vector of float color})
+0:13 Function 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 Branch: Return with expression
+0:17 'ps_output' (temp structure{temp 4-component vector of float color})
+0:? Linker Objects
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 23
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main"
+ ExecutionMode 4 OriginUpperLeft
+ Source HLSL 450
+ Name 4 "main"
+ Name 6 "MyFunc("
+ Name 8 "MyFunc2("
+ Name 12 "PS_OUTPUT"
+ MemberName 12(PS_OUTPUT) 0 "color"
+ Name 14 "ps_output"
+ 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)
+ 4(main): 2 Function None 3
+ 5: Label
+ 14(ps_output): 13(ptr) Variable Function
+ 20: 19(ptr) AccessChain 14(ps_output) 16
+ Store 20 18
+ 21:12(PS_OUTPUT) Load 14(ps_output)
+ ReturnValue 21
+ 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
index e9b7389..6389595 100755
--- a/Test/baseResults/hlsl.shapeConv.frag.out
+++ b/Test/baseResults/hlsl.shapeConv.frag.out
@@ -2,7 +2,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:14 Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
+0:23 Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:2 'f' (in float)
@@ -42,8 +42,48 @@
0:10 Construct vec3 (temp 3-component vector of float)
0:10 Construct float (temp float)
0:10 'f' (in float)
-0:12 Branch: Return with expression
-0:12 'input' (in 4-component vector of float)
+0:11 Sequence
+0:11 move second child to first child (temp 2-component vector of float)
+0:11 'w' (temp 2-component vector of float)
+0:11 Constant:
+0:11 2.000000
+0:11 2.000000
+0:12 Sequence
+0:12 move second child to first child (temp float)
+0:12 'V' (temp float)
+0:12 Constant:
+0:12 1.000000
+0:13 Sequence
+0:13 move second child to first child (temp 3-component vector of float)
+0:13 'MyVal' (temp 3-component vector of float)
+0:13 Construct vec3 (temp 3-component vector of float)
+0:13 'V' (temp float)
+0:16 Compare Greater Than (temp bool)
+0:16 'foo' (temp 3-component vector of float)
+0:16 Constant:
+0:16 4.000000
+0:16 4.000000
+0:16 4.000000
+0:17 Compare Greater Than or Equal (temp bool)
+0:17 'foo' (temp 3-component vector of float)
+0:17 Constant:
+0:17 5.000000
+0:17 5.000000
+0:17 5.000000
+0:18 Compare Less Than (temp bool)
+0:18 Constant:
+0:18 6.000000
+0:18 6.000000
+0:18 6.000000
+0:18 'foo' (temp 3-component vector of float)
+0:19 Compare Less Than or Equal (temp bool)
+0:19 Constant:
+0:19 7.000000
+0:19 7.000000
+0:19 7.000000
+0:19 'foo' (temp 3-component vector of float)
+0:21 Branch: Return with expression
+0:21 'input' (in 4-component vector of float)
0:? Linker Objects
@@ -53,7 +93,7 @@
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
-0:14 Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
+0:23 Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
0:2 Function Parameters:
0:2 'input' (in 4-component vector of float)
0:2 'f' (in float)
@@ -93,13 +133,53 @@
0:10 Construct vec3 (temp 3-component vector of float)
0:10 Construct float (temp float)
0:10 'f' (in float)
-0:12 Branch: Return with expression
-0:12 'input' (in 4-component vector of float)
+0:11 Sequence
+0:11 move second child to first child (temp 2-component vector of float)
+0:11 'w' (temp 2-component vector of float)
+0:11 Constant:
+0:11 2.000000
+0:11 2.000000
+0:12 Sequence
+0:12 move second child to first child (temp float)
+0:12 'V' (temp float)
+0:12 Constant:
+0:12 1.000000
+0:13 Sequence
+0:13 move second child to first child (temp 3-component vector of float)
+0:13 'MyVal' (temp 3-component vector of float)
+0:13 Construct vec3 (temp 3-component vector of float)
+0:13 'V' (temp float)
+0:16 Compare Greater Than (temp bool)
+0:16 'foo' (temp 3-component vector of float)
+0:16 Constant:
+0:16 4.000000
+0:16 4.000000
+0:16 4.000000
+0:17 Compare Greater Than or Equal (temp bool)
+0:17 'foo' (temp 3-component vector of float)
+0:17 Constant:
+0:17 5.000000
+0:17 5.000000
+0:17 5.000000
+0:18 Compare Less Than (temp bool)
+0:18 Constant:
+0:18 6.000000
+0:18 6.000000
+0:18 6.000000
+0:18 'foo' (temp 3-component vector of float)
+0:19 Compare Less Than or Equal (temp bool)
+0:19 Constant:
+0:19 7.000000
+0:19 7.000000
+0:19 7.000000
+0:19 'foo' (temp 3-component vector of float)
+0:21 Branch: Return with expression
+0:21 'input' (in 4-component vector of float)
0:? Linker Objects
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 32
+// Id's are bound by 58
Capability Shader
1: ExtInstImport "GLSL.std.450"
@@ -113,6 +193,10 @@
Name 12 "f"
Name 15 "v"
Name 24 "u"
+ Name 31 "w"
+ Name 33 "V"
+ Name 34 "MyVal"
+ Name 37 "foo"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -128,6 +212,18 @@
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
4(main): 2 Function None 3
5: Label
FunctionEnd
@@ -137,6 +233,10 @@
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
Store 15(v) 17
Store 15(v) 19
20: 6(float) Load 12(f)
@@ -147,6 +247,19 @@
27: 6(float) Load 12(f)
28: 22(fvec3) CompositeConstruct 27 27 27
Store 24(u) 28
- 29: 7(fvec4) Load 11(input)
- ReturnValue 29
+ Store 31(w) 32
+ Store 33(V) 16
+ 35: 6(float) Load 33(V)
+ 36: 22(fvec3) CompositeConstruct 35 35 35
+ Store 34(MyVal) 36
+ 38: 22(fvec3) Load 37(foo)
+ 42: 41(bool) FOrdGreaterThan 38 40
+ 43: 22(fvec3) Load 37(foo)
+ 46: 41(bool) FOrdGreaterThanEqual 43 45
+ 49: 22(fvec3) Load 37(foo)
+ 50: 41(bool) FOrdLessThan 48 49
+ 53: 22(fvec3) Load 37(foo)
+ 54: 41(bool) FOrdLessThanEqual 52 53
+ 55: 7(fvec4) Load 11(input)
+ ReturnValue 55
FunctionEnd
diff --git a/Test/baseResults/pointCoord.frag.out b/Test/baseResults/pointCoord.frag.out
index 633d8b9..5d53aea 100644
--- a/Test/baseResults/pointCoord.frag.out
+++ b/Test/baseResults/pointCoord.frag.out
@@ -14,7 +14,7 @@
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 @@
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 8737bc8..8cbabda 100644
--- a/Test/baseResults/preprocessor.simple.vert.out
+++ b/Test/baseResults/preprocessor.simple.vert.out
@@ -19,5 +19,12 @@
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/spv.450.tesc.out b/Test/baseResults/spv.450.tesc.out
index c6c08b2..95eda65 100755
--- a/Test/baseResults/spv.450.tesc.out
+++ b/Test/baseResults/spv.450.tesc.out
@@ -7,12 +7,12 @@
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 17
+// Id's are bound by 24
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 9 16
+ EntryPoint TessellationControl 4 "main" 9 16 20 23
ExecutionMode 4 OutputVertices 4
Source GLSL 450
Name 4 "main"
@@ -25,12 +25,42 @@
MemberName 11(TheBlock) 1 "bMem2"
MemberName 11(TheBlock) 2 "s"
Name 16 "tcBlock"
+ Name 17 "S"
+ MemberName 17(S) 0 "sMem1"
+ MemberName 17(S) 1 "sMem2"
+ Name 18 "SingleBlock"
+ MemberName 18(SingleBlock) 0 "bMem1"
+ MemberName 18(SingleBlock) 1 "bMem2"
+ MemberName 18(SingleBlock) 2 "s"
+ Name 20 "singleBlock"
+ Name 21 "bn"
+ MemberName 21(bn) 0 "v1"
+ MemberName 21(bn) 1 "v2"
+ MemberName 21(bn) 2 "v3"
+ Name 23 ""
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 18(SingleBlock) 0 Patch
+ MemberDecorate 18(SingleBlock) 0 Location 2
+ MemberDecorate 18(SingleBlock) 1 Patch
+ MemberDecorate 18(SingleBlock) 1 Location 3
+ MemberDecorate 18(SingleBlock) 2 Patch
+ MemberDecorate 18(SingleBlock) 2 Location 4
+ Decorate 18(SingleBlock) Block
+ Decorate 20(singleBlock) Location 2
+ MemberDecorate 21(bn) 0 Patch
+ MemberDecorate 21(bn) 0 Location 20
+ MemberDecorate 21(bn) 0 Component 0
+ MemberDecorate 21(bn) 1 Patch
+ MemberDecorate 21(bn) 1 Location 24
+ MemberDecorate 21(bn) 2 Patch
+ MemberDecorate 21(bn) 2 Location 25
+ MemberDecorate 21(bn) 2 Component 0
+ Decorate 21(bn) Block
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -44,6 +74,13 @@
14: TypeArray 11(TheBlock) 13
15: TypePointer Output 14
16(tcBlock): 15(ptr) Variable Output
+ 17(S): TypeStruct 6(float) 6(float)
+ 18(SingleBlock): TypeStruct 6(float) 6(float) 17(S)
+ 19: TypePointer Output 18(SingleBlock)
+ 20(singleBlock): 19(ptr) Variable Output
+ 21(bn): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4)
+ 22: TypePointer Output 21(bn)
+ 23: 22(ptr) Variable Output
4(main): 2 Function None 3
5: Label
Return
diff --git a/Test/baseResults/uint.frag.out b/Test/baseResults/uint.frag.out
index dbe9578..1ee2825 100644
--- a/Test/baseResults/uint.frag.out
+++ b/Test/baseResults/uint.frag.out
@@ -113,7 +113,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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/hlsl.gatherRGBA.array.dx10.frag b/Test/hlsl.gatherRGBA.array.dx10.frag
new file mode 100644
index 0000000..279b6d6
--- /dev/null
+++ b/Test/hlsl.gatherRGBA.array.dx10.frag
@@ -0,0 +1,71 @@
+SamplerState g_sSamp : register(s0);
+uniform sampler2D g_sSamp2d;
+
+uniform Texture1DArray <float4> g_tTex1df4a : register(t0);
+Texture1DArray <int4> g_tTex1di4a;
+Texture1DArray <uint4> g_tTex1du4a;
+
+Texture2DArray <float4> g_tTex2df4a;
+Texture2DArray <int4> g_tTex2di4a;
+Texture2DArray <uint4> g_tTex2du4a;
+
+TextureCubeArray <float4> g_tTexcdf4a;
+TextureCubeArray <int4> g_tTexcdi4a;
+TextureCubeArray <uint4> 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 0000000..17fae19
--- /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 <float4> g_tTex1df4 : register(t0);
+Texture1D <int4> g_tTex1di4;
+Texture1D <uint4> g_tTex1du4;
+
+Texture2D <float4> g_tTex2df4;
+Texture2D <int4> g_tTex2di4;
+Texture2D <uint4> g_tTex2du4;
+
+Texture3D <float4> g_tTex3df4;
+Texture3D <int4> g_tTex3di4;
+Texture3D <uint4> g_tTex3du4;
+
+TextureCube <float4> g_tTexcdf4;
+TextureCube <int4> g_tTexcdi4;
+TextureCube <uint4> g_tTexcdu4;
+
+struct 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 0000000..a8909b4
--- /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 <float4> g_tTex1df4 : register(t0);
+Texture1D <int4> g_tTex1di4;
+Texture1D <uint4> g_tTex1du4;
+
+Texture2D <float4> g_tTex2df4;
+Texture2D <int4> g_tTex2di4;
+Texture2D <uint4> g_tTex2du4;
+
+Texture3D <float4> g_tTex3df4;
+Texture3D <int4> g_tTex3di4;
+Texture3D <uint4> g_tTex3du4;
+
+TextureCube <float4> g_tTexcdf4;
+TextureCube <int4> g_tTexcdi4;
+TextureCube <uint4> g_tTexcdu4;
+
+struct 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 0000000..ca32f56
--- /dev/null
+++ b/Test/hlsl.gatherRGBA.offsetarray.dx10.frag
@@ -0,0 +1,110 @@
+SamplerState g_sSamp : register(s0);
+uniform sampler2D g_sSamp2d;
+
+uniform Texture1DArray <float4> g_tTex1df4a : register(t0);
+Texture1DArray <int4> g_tTex1di4a;
+Texture1DArray <uint4> g_tTex1du4a;
+
+Texture2DArray <float4> g_tTex2df4a;
+Texture2DArray <int4> g_tTex2di4a;
+Texture2DArray <uint4> g_tTex2du4a;
+
+TextureCubeArray <float4> g_tTexcdf4a;
+TextureCubeArray <int4> g_tTexcdi4a;
+TextureCubeArray <uint4> 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 0000000..4ed7f4b
--- /dev/null
+++ b/Test/hlsl.gathercmpRGBA.array.dx10.frag
@@ -0,0 +1,70 @@
+SamplerComparisonState g_sSampCmp : register(s0);
+
+uniform Texture1DArray <float4> g_tTex1df4a : register(t0);
+Texture1DArray <int4> g_tTex1di4a;
+Texture1DArray <uint4> g_tTex1du4a;
+
+Texture2DArray <float4> g_tTex2df4a;
+Texture2DArray <int4> g_tTex2di4a;
+Texture2DArray <uint4> g_tTex2du4a;
+
+TextureCubeArray <float4> g_tTexcdf4a;
+TextureCubeArray <int4> g_tTexcdi4a;
+TextureCubeArray <uint4> 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 0000000..9dc1631
--- /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 <float4> g_tTex1df4 : register(t0);
+Texture1D <int4> g_tTex1di4;
+Texture1D <uint4> g_tTex1du4;
+
+Texture2D <float4> g_tTex2df4;
+Texture2D <int4> g_tTex2di4;
+Texture2D <uint4> g_tTex2du4;
+
+Texture3D <float4> g_tTex3df4;
+Texture3D <int4> g_tTex3di4;
+Texture3D <uint4> g_tTex3du4;
+
+TextureCube <float4> g_tTexcdf4;
+TextureCube <int4> g_tTexcdi4;
+TextureCube <uint4> g_tTexcdu4;
+
+struct 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 0000000..3a6fbb7
--- /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 <float4> g_tTex1df4 : register(t0);
+Texture1D <int4> g_tTex1di4;
+Texture1D <uint4> g_tTex1du4;
+
+Texture2D <float4> g_tTex2df4;
+Texture2D <int4> g_tTex2di4;
+Texture2D <uint4> g_tTex2du4;
+
+Texture3D <float4> g_tTex3df4;
+Texture3D <int4> g_tTex3di4;
+Texture3D <uint4> g_tTex3du4;
+
+TextureCube <float4> g_tTexcdf4;
+TextureCube <int4> g_tTexcdi4;
+TextureCube <uint4> g_tTexcdu4;
+
+struct 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 0000000..11131bc
--- /dev/null
+++ b/Test/hlsl.gathercmpRGBA.offsetarray.dx10.frag
@@ -0,0 +1,109 @@
+SamplerComparisonState g_sSampCmp : register(s0);
+
+uniform Texture1DArray <float4> g_tTex1df4a : register(t0);
+Texture1DArray <int4> g_tTex1di4a;
+Texture1DArray <uint4> g_tTex1du4a;
+
+Texture2DArray <float4> g_tTex2df4a;
+Texture2DArray <int4> g_tTex2di4a;
+Texture2DArray <uint4> g_tTex2du4a;
+
+TextureCubeArray <float4> g_tTexcdf4a;
+TextureCubeArray <int4> g_tTexcdi4a;
+TextureCubeArray <uint4> 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.intrinsics.negative.comp b/Test/hlsl.intrinsics.negative.comp
index c89d04b..fe612d6 100644
--- a/Test/hlsl.intrinsics.negative.comp
+++ b/Test/hlsl.intrinsics.negative.comp
@@ -4,49 +4,49 @@
// AllMemoryBarrier(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
// AllMemoryBarrierWithGroupSync(); // invalid in fragment stage TODO: parser currently crashes on empty arg list
- asdouble(inF0, inF1); // expected error: only integer inputs
- CheckAccessFullyMapped(3.0); // expected error: only valid on integers
- clip(inF0); // expected error: only valid in pixel stage
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- ddx(inF0); // expected error: only valid in pixel stage
- ddx_coarse(inF0); // expected error: only valid in pixel stage
- ddx_fine(inF0); // expected error: only valid in pixel stage
- ddy(inF0); // expected error: only valid in pixel stage
- ddy_coarse(inF0); // expected error: only valid in pixel stage
- ddy_fine(inF0); // expected error: only valid in pixel stage
- determinant(inF0); // expected error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // asdouble(inF0, inF1); // expected error: only integer inputs
+ // CheckAccessFullyMapped(3.0); // expected error: only valid on integers
+ // clip(inF0); // expected error: only valid in pixel stage
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // ddx(inF0); // expected error: only valid in pixel stage
+ // ddx_coarse(inF0); // expected error: only valid in pixel stage
+ // ddx_fine(inF0); // expected error: only valid in pixel stage
+ // ddy(inF0); // expected error: only valid in pixel stage
+ // ddy_coarse(inF0); // expected error: only valid in pixel stage
+ // ddy_fine(inF0); // expected error: only valid in pixel stage
+ // determinant(inF0); // expected error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
- InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- length(inF0); // expect error: invalid on scalars
- msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
- normalize(inF0); // expect error: invalid on scalars
- reflect(inF0, inF1); // expect error: invalid on scalars
- refract(inF0, inF1, inF2); // expect error: invalid on scalars
- refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // length(inF0); // expect error: invalid on scalars
+ // msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
+ // normalize(inF0); // expect error: invalid on scalars
+ // reflect(inF0, inF1); // expect error: invalid on scalars
+ // refract(inF0, inF1, inF2); // expect error: invalid on scalars
+ // refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -57,7 +57,7 @@
{
// TODO: ... add when float1 prototypes are generated
- GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
+ // GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
return 0.0;
}
@@ -66,43 +66,43 @@
{
uint2 out_u2;
- asdouble(inF0, inF1); // expected error: only integer inputs
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- determinant(inF0); // expect error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // asdouble(inF0, inF1); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // determinant(inF0); // expect error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua2, gs_ub2, out_u2);// expected error: only valid in pixel stage
- InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua2, gs_ub2, out_u2);// expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -113,41 +113,41 @@
{
uint3 out_u3;
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- determinant(inF0); // expect error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // determinant(inF0); // expect error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -158,41 +158,41 @@
{
uint4 out_u4;
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- determinant(inF0); // expect error: only valid on mats
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // determinant(inF0); // expect error: only valid on mats
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
diff --git a/Test/hlsl.intrinsics.negative.vert b/Test/hlsl.intrinsics.negative.vert
index a5030cf..fcfb761 100644
--- a/Test/hlsl.intrinsics.negative.vert
+++ b/Test/hlsl.intrinsics.negative.vert
@@ -15,56 +15,56 @@
{
uint out_u1;
- AllMemoryBarrier(); // expected error: only valid in compute stage
- AllMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
- asdouble(inF0, inF1); // expected error: only integer inputs
- CheckAccessFullyMapped(3.0); // expected error: only valid on integers
- CheckAccessFullyMapped(3); // expected error: only valid in pixel & compute stages
- clip(inF0); // expected error: only valid in pixel stage
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- DeviceMemoryBarrier(); // expected error: only valid in pixel & compute stages
- DeviceMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
- ddx(inF0); // expected error: only valid in pixel stage
- ddx_coarse(inF0); // expected error: only valid in pixel stage
- ddx_fine(inF0); // expected error: only valid in pixel stage
- ddy(inF0); // expected error: only valid in pixel stage
- ddy_coarse(inF0); // expected error: only valid in pixel stage
- ddy_fine(inF0); // expected error: only valid in pixel stage
- determinant(inF0); // expected error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // AllMemoryBarrier(); // expected error: only valid in compute stage
+ // AllMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
+ // asdouble(inF0, inF1); // expected error: only integer inputs
+ // CheckAccessFullyMapped(3.0); // expected error: only valid on integers
+ // CheckAccessFullyMapped(3); // expected error: only valid in pixel & compute stages
+ // clip(inF0); // expected error: only valid in pixel stage
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // DeviceMemoryBarrier(); // expected error: only valid in pixel & compute stages
+ // DeviceMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
+ // ddx(inF0); // expected error: only valid in pixel stage
+ // ddx_coarse(inF0); // expected error: only valid in pixel stage
+ // ddx_fine(inF0); // expected error: only valid in pixel stage
+ // ddy(inF0); // expected error: only valid in pixel stage
+ // ddy_coarse(inF0); // expected error: only valid in pixel stage
+ // ddy_fine(inF0); // expected error: only valid in pixel stage
+ // determinant(inF0); // expected error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
- InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
- GroupMemoryBarrier(); // expected error: only valid in compute stage
- GroupMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
- length(inF0); // expect error: invalid on scalars
- msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
- normalize(inF0); // expect error: invalid on scalars
- reflect(inF0, inF1); // expect error: invalid on scalars
- refract(inF0, inF1, inF2); // expect error: invalid on scalars
- refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua, gs_ub, gs_uc, out_u1); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua, gs_ub, out_u1);// expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua, gs_ub); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua, gs_ub, out_u1); // expected error: only valid in pixel stage
+ // GroupMemoryBarrier(); // expected error: only valid in compute stage
+ // GroupMemoryBarrierWithGroupSync(); // expected error: only valid in compute stage
+ // length(inF0); // expect error: invalid on scalars
+ // msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
+ // normalize(inF0); // expect error: invalid on scalars
+ // reflect(inF0, inF1); // expect error: invalid on scalars
+ // refract(inF0, inF1, inF2); // expect error: invalid on scalars
+ // refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -75,7 +75,7 @@
{
// TODO: ... add when float1 prototypes are generated
- GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
+ // GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
return 0.0;
}
@@ -84,43 +84,43 @@
{
uint2 out_u2;
- asdouble(inF0, inF1); // expected error: only integer inputs
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- determinant(inF0); // expect error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // asdouble(inF0, inF1); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // determinant(inF0); // expect error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua2, gs_ub2, gs_uc2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua2, gs_ub2); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua2, gs_ub2, out_u2); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -131,41 +131,41 @@
{
uint3 out_u3;
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
- determinant(inF0); // expect error: only valid on mats
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
+ // determinant(inF0); // expect error: only valid on mats
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua3, gs_ub3, gs_uc3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua3, gs_ub3); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua3, gs_ub3, out_u3); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -176,41 +176,41 @@
{
uint4 out_u4;
- CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
- countbits(inF0); // expected error: only integer inputs
- cross(inF0, inF1); // expected error: only on float3 inputs
- determinant(inF0); // expect error: only valid on mats
- ddx(inF0); // only valid in pixel stage
- ddx_coarse(inF0); // only valid in pixel stage
- ddx_fine(inF0); // only valid in pixel stage
- ddy(inF0); // only valid in pixel stage
- ddy_coarse(inF0); // only valid in pixel stage
- ddy_fine(inF0); // only valid in pixel stage
- EvaluateAttributeAtCentroid(inF0); // expected error: only valid in pixel stage
- EvaluateAttributeAtSample(inF0, 2); // expected error: only valid in pixel stage
- EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only valid in pixel stage
- f16tof32(inF0); // expected error: only integer inputs
- firstbithigh(inF0); // expected error: only integer inputs
- firstbitlow(inF0); // expected error: only integer inputs
+ // CheckAccessFullyMapped(inF0); // expect error: only valid on scalars
+ // countbits(inF0); // expected error: only integer inputs
+ // cross(inF0, inF1); // expected error: only on float3 inputs
+ // determinant(inF0); // expect error: only valid on mats
+ // ddx(inF0); // only valid in pixel stage
+ // ddx_coarse(inF0); // only valid in pixel stage
+ // ddx_fine(inF0); // only valid in pixel stage
+ // ddy(inF0); // only valid in pixel stage
+ // ddy_coarse(inF0); // only valid in pixel stage
+ // ddy_fine(inF0); // only valid in pixel stage
+ // EvaluateAttributeAtCentroid(inF0); // expected error: only interpolant
+ // EvaluateAttributeAtSample(inF0, 2); // expected error: only interpolant
+ // EvaluateAttributeSnapped(inF0, int2(2)); // expected error: only interpolant
+ // f16tof32(inF0); // expected error: only integer inputs
+ // firstbithigh(inF0); // expected error: only integer inputs
+ // firstbitlow(inF0); // expected error: only integer inputs
// fma(inF0, inF1, inF2); // TODO: this might auto-promote: need to check against FXC
- fwidth(inF0); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
- InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
- InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
- noise(inF0); // expected error: only valid in pixel stage
- reversebits(inF0); // expected error: only integer inputs
- transpose(inF0); // expect error: only valid on mats
+ // fwidth(inF0); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedAdd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedAnd(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedCompareExchange(gs_ua4, gs_ub4, gs_uc4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedExchange(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedMax(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedMin(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedOr(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua4, gs_ub4); // expected error: only valid in pixel stage
+ // InterlockedXor(gs_ua4, gs_ub4, out_u4); // expected error: only valid in pixel stage
+ // noise(inF0); // expected error: only valid in pixel stage
+ // reversebits(inF0); // expected error: only integer inputs
+ // transpose(inF0); // expect error: only valid on mats
// TODO: texture intrinsics, when we can declare samplers.
@@ -218,32 +218,7 @@
}
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
-#define MATFNS() \
- countbits(inF0); \
- cross(inF0, inF1); \
- D3DCOLORtoUBYTE4(inF0); \
- ddx(inF0); \
- ddx_coarse(inF0); \
- ddx_fine(inF0); \
- ddy(inF0); \
- ddy_coarse(inF0); \
- ddy_fine(inF0); \
- EvaluateAttributeAtCentroid(inF0); \
- EvaluateAttributeAtSample(inF0, 2); \
- EvaluateAttributeSnapped(inF0, int2(2)); \
- f16tof32(inF0); \
- firstbithigh(inF0); \
- firstbitlow(inF0); \
- fwidth(inF0); \
- noise(inF0); \
- reversebits(inF0); \
- length(inF0); \
- noise(inF0); \
- normalize(inF0); \
- reflect(inF0, inF1); \
- refract(inF0, inF1, 1.0); \
- reversebits(inF0); \
-
+#define MATFNS()
// TODO: turn on non-square matrix tests when protos are available.
diff --git a/Test/hlsl.promotions.frag b/Test/hlsl.promotions.frag
new file mode 100644
index 0000000..647096d
--- /dev/null
+++ b/Test/hlsl.promotions.frag
@@ -0,0 +1,201 @@
+
+struct PS_OUTPUT
+{
+ float4 Color : SV_Target0;
+};
+
+uniform int3 i3;
+uniform bool3 b3;
+uniform float3 f3;
+uniform uint3 u3;
+uniform double3 d3;
+
+uniform int is;
+uniform bool bs;
+uniform float fs;
+uniform uint us;
+uniform double ds;
+
+void Fn_F3(float3 x) { }
+void Fn_I3(int3 x) { }
+void Fn_U3(uint3 x) { }
+void Fn_B3(bool3 x) { }
+void Fn_D3(double3 x) { }
+
+// ----------- Test implicit conversions on function returns -----------
+float3 Fn_R_F3I(out float3 p) { p = i3; return i3; }
+float3 Fn_R_F3U(out float3 p) { p = u3; return u3; }
+float3 Fn_R_F3B(out float3 p) { p = b3; return b3; }
+float3 Fn_R_F3D(out float3 p) { p = d3; return d3; } // valid, but loss of precision on downconversion.
+
+int3 Fn_R_I3U(out int3 p) { p = u3; return u3; }
+int3 Fn_R_I3B(out int3 p) { p = b3; return b3; }
+int3 Fn_R_I3F(out int3 p) { p = f3; return f3; }
+int3 Fn_R_I3D(out int3 p) { p = d3; return d3; } // valid, but loss of precision on downconversion.
+
+uint3 Fn_R_U3I(out uint3 p) { p = i3; return i3; }
+uint3 Fn_R_U3F(out uint3 p) { p = f3; return f3; }
+uint3 Fn_R_U3B(out uint3 p) { p = b3; return b3; }
+uint3 Fn_R_U3D(out uint3 p) { p = d3; return d3; } // valid, but loss of precision on downconversion.
+
+bool3 Fn_R_B3I(out bool3 p) { p = i3; return i3; }
+bool3 Fn_R_B3U(out bool3 p) { p = u3; return u3; }
+bool3 Fn_R_B3F(out bool3 p) { p = f3; return f3; }
+bool3 Fn_R_B3D(out bool3 p) { p = d3; return d3; }
+
+double3 Fn_R_D3I(out double3 p) { p = i3; return i3; }
+double3 Fn_R_D3U(out double3 p) { p = u3; return u3; }
+double3 Fn_R_D3B(out double3 p) { p = b3; return b3; }
+double3 Fn_R_D3F(out double3 p) { p = f3; return f3; }
+
+PS_OUTPUT main()
+{
+ // ----------- assignment conversions -----------
+ float3 r00 = i3;
+ float3 r01 = b3;
+ float3 r02 = u3;
+ float3 r03 = d3; // valid, but loss of precision on downconversion.
+
+ int3 r10 = b3;
+ int3 r11 = u3;
+ int3 r12 = f3;
+ int3 r13 = d3; // valid, but loss of precision on downconversion.
+
+ uint3 r20 = b3;
+ uint3 r21 = i3;
+ uint3 r22 = f3;
+ uint3 r23 = d3; // valid, but loss of precision on downconversion.
+
+ bool3 r30 = i3;
+ bool3 r31 = u3;
+ bool3 r32 = f3;
+ bool3 r33 = d3;
+
+ double3 r40 = i3;
+ double3 r41 = u3;
+ double3 r42 = f3;
+ double3 r43 = b3;
+
+ // ----------- assign ops: vector times vector -----------
+ r00 *= i3;
+ r01 *= b3;
+ r02 *= u3;
+ r03 *= d3; // valid, but loss of precision on downconversion.
+
+ r10 *= b3;
+ r11 *= u3;
+ r12 *= f3;
+ r13 *= d3; // valid, but loss of precision on downconversion.
+
+ r20 *= b3;
+ r21 *= i3;
+ r22 *= f3;
+ r23 *= d3; // valid, but loss of precision on downconversion.
+
+ // No mul operator for bools
+
+ r40 *= i3;
+ r41 *= u3;
+ r42 *= f3;
+ r43 *= b3;
+
+ // ----------- assign ops: vector times scalar -----------
+ r00 *= is;
+ r01 *= bs;
+ r02 *= us;
+ r03 *= ds; // valid, but loss of precision on downconversion.
+
+ r10 *= bs;
+ r11 *= us;
+ r12 *= fs;
+ r13 *= ds; // valid, but loss of precision on downconversion.
+
+ r20 *= bs;
+ r21 *= is;
+ r22 *= fs;
+ r23 *= ds; // valid, but loss of precision on downconversion.
+
+ // No mul operator for bools
+
+ r40 *= is;
+ r41 *= us;
+ r42 *= fs;
+ r43 *= bs;
+
+
+#define FN_OVERLOADS 0 // change to 1 when overloads under promotions are in place
+
+#if FN_OVERLOADS
+ Fn_F3(i3);
+ Fn_F3(u3);
+ Fn_F3(f3);
+ Fn_F3(b3);
+ Fn_F3(d3); // valid, but loss of precision on downconversion.
+
+ Fn_I3(i3);
+ Fn_I3(u3);
+ Fn_I3(f3);
+ Fn_I3(b3);
+ Fn_I3(d3); // valid, but loss of precision on downconversion.
+
+ Fn_U3(i3);
+ Fn_U3(u3);
+ Fn_U3(f3);
+ Fn_U3(b3);
+ Fn_U3(d3); // valid, but loss of precision on downconversion.
+
+ Fn_B3(i3);
+ Fn_B3(u3);
+ Fn_B3(f3);
+ Fn_B3(b3);
+ Fn_B3(d3);
+
+ Fn_D3(i3);
+ Fn_D3(u3);
+ Fn_D3(f3);
+ Fn_D3(b3);
+ Fn_D3(d3);
+
+ Fn_F3(i3.x);
+ Fn_F3(u3.x);
+ Fn_F3(f3.x);
+ Fn_F3(b3.x);
+ Fn_F3(d3.x); // valid, but loss of precision on downconversion.
+
+ Fn_I3(i3.x);
+ Fn_I3(u3.x);
+ Fn_I3(f3.x);
+ Fn_I3(b3.x);
+ Fn_I3(d3.x); // valid, but loss of precision on downconversion.
+
+ Fn_U3(i3.x);
+ Fn_U3(u3.x);
+ Fn_U3(f3.x);
+ Fn_U3(b3.x);
+ Fn_U3(d3.x); // valid, but loss of precision on downconversion.
+
+ Fn_B3(i3.x);
+ Fn_B3(u3.x);
+ Fn_B3(f3.x);
+ Fn_B3(b3.x);
+ Fn_B3(d3.x);
+
+ Fn_D3(i3.x);
+ Fn_D3(u3.x);
+ Fn_D3(f3.x);
+ Fn_D3(b3.x);
+ Fn_D3(d3.x);
+#endif
+
+ const int si = 3;
+ const float sf = 1.2;
+
+ int c1 = si * sf; // 3.6 (not 3!)
+ int c2 = sf * si; // 3.6 (not 3!)
+
+ float4 outval = float4(si * sf, sf*si, c1, c2);
+
+ PS_OUTPUT psout;
+ psout.Color = outval;
+ return psout;
+}
diff --git a/Test/hlsl.semicolons.frag b/Test/hlsl.semicolons.frag
new file mode 100644
index 0000000..28fdedd
--- /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
index 1e6dec6..3147b61 100644
--- a/Test/hlsl.shapeConv.frag
+++ b/Test/hlsl.shapeConv.frag
@@ -8,6 +8,15 @@
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;
return input;
}
diff --git a/Test/preprocessor.simple.vert b/Test/preprocessor.simple.vert
index f4749f2..3522271 100644
--- a/Test/preprocessor.simple.vert
+++ b/Test/preprocessor.simple.vert
@@ -19,4 +19,11 @@
gl_Position = vec4(Z);
gl_Position = vec4(F);
gl_Position = vec4(fn(3));
+ [] . ++ --
+ + - * % / - ! ~
+ << >> < > <= >=
+ == !=
+ & ^ | && ^^ || ? :
+ += -= *= /= %= <<= >>= &= |= ^=
+ 1.2 2E10 5u -5lf
}
diff --git a/Test/spv.450.tesc b/Test/spv.450.tesc
index 0f8ec5c..c3719f9 100644
--- a/Test/spv.450.tesc
+++ b/Test/spv.450.tesc
@@ -18,3 +18,15 @@
void main()
{
}
+
+layout(location = 2) patch out SingleBlock {
+ highp float bMem1; // should not see a location decoration
+ highp float bMem2;
+ S s; // should see a patch decoration
+} singleBlock;
+
+layout(location = 20) patch out bn {
+ vec4 v1; // location 20
+ layout(location = 24) vec4 v2; // location 24
+ vec4 v3; // location 25
+};
\ No newline at end of file
diff --git a/glslang/GenericCodeGen/Link.cpp b/glslang/GenericCodeGen/Link.cpp
index 8160999..8da88bd 100644
--- a/glslang/GenericCodeGen/Link.cpp
+++ b/glslang/GenericCodeGen/Link.cpp
@@ -46,7 +46,7 @@
public:
TGenericLinker(EShExecutable e, int dOptions) : TLinker(e, infoSink), debugOptions(dOptions) { }
bool link(TCompilerList&, TUniformMap*) { return true; }
- void getAttributeBindings(ShBindingTable const **) const { }
+ void getAttributeBindings(ShBindingTable const **) const { }
TInfoSink infoSink;
int debugOptions;
};
diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h
index 4c04ae3..636645e 100644
--- a/glslang/Include/Common.h
+++ b/glslang/Include/Common.h
@@ -89,8 +89,8 @@
#include <list>
#include <algorithm>
#include <string>
-#include <stdio.h>
-#include <assert.h>
+#include <cstdio>
+#include <cassert>
#include "PoolAlloc.h"
@@ -99,11 +99,11 @@
//
#define POOL_ALLOCATOR_NEW_DELETE(A) \
void* operator new(size_t s) { return (A).allocate(s); } \
- void* operator new(size_t, void *_Where) { return (_Where); } \
+ void* operator new(size_t, void *_Where) { return (_Where); } \
void operator delete(void*) { } \
void operator delete(void *, void *) { } \
void* operator new[](size_t s) { return (A).allocate(s); } \
- void* operator new[](size_t, void *_Where) { return (_Where); } \
+ void* operator new[](size_t, void *_Where) { return (_Where); } \
void operator delete[](void*) { } \
void operator delete[](void *, void *) { }
diff --git a/glslang/Include/InfoSink.h b/glslang/Include/InfoSink.h
index 5862e5d..aa02f91 100644
--- a/glslang/Include/InfoSink.h
+++ b/glslang/Include/InfoSink.h
@@ -36,7 +36,7 @@
#define _INFOSINK_INCLUDED_
#include "../Include/Common.h"
-#include <math.h>
+#include <cmath>
namespace glslang {
diff --git a/glslang/Include/PoolAlloc.h b/glslang/Include/PoolAlloc.h
index c3bebc6..635be79 100644
--- a/glslang/Include/PoolAlloc.h
+++ b/glslang/Include/PoolAlloc.h
@@ -61,13 +61,13 @@
// class as the allocator (second) template argument.
//
-#include <stddef.h>
-#include <string.h>
+#include <cstddef>
+#include <cstring>
#include <vector>
namespace glslang {
-// If we are using guard blocks, we must track each indivual
+// If we are using guard blocks, we must track each individual
// allocation. If we aren't using guard blocks, these
// never get instantiated, so won't have any impact.
//
@@ -297,10 +297,10 @@
pointer allocate(size_type n, const void*) {
return reinterpret_cast<pointer>(getAllocator().allocate(n * sizeof(T))); }
- void deallocate(void*, size_type) { }
+ void deallocate(void*, size_type) { }
void deallocate(pointer, size_type) { }
- pointer _Charalloc(size_t n) {
+ pointer _Charalloc(size_t n) {
return reinterpret_cast<pointer>(getAllocator().allocate(n)); }
void construct(pointer p, const T& val) { new ((void *)p) T(val); }
diff --git a/glslang/Include/ShHandle.h b/glslang/Include/ShHandle.h
index fee6413..bfc97db 100644
--- a/glslang/Include/ShHandle.h
+++ b/glslang/Include/ShHandle.h
@@ -123,8 +123,8 @@
haveReturnableObjectCode(false),
appAttributeBindings(0),
fixedAttributeBindings(0),
- excludedAttributes(0),
- excludedCount(0),
+ excludedAttributes(0),
+ excludedCount(0),
uniformBindings(0) { }
virtual TLinker* getAsLinker() { return this; }
virtual ~TLinker() { }
@@ -132,8 +132,8 @@
virtual bool link(THandleList&) { return false; }
virtual void setAppAttributeBindings(const ShBindingTable* t) { appAttributeBindings = t; }
virtual void setFixedAttributeBindings(const ShBindingTable* t) { fixedAttributeBindings = t; }
- virtual void getAttributeBindings(ShBindingTable const **t) const = 0;
- virtual void setExcludedAttributes(const int* attributes, int count) { excludedAttributes = attributes; excludedCount = count; }
+ virtual void getAttributeBindings(ShBindingTable const **t) const = 0;
+ virtual void setExcludedAttributes(const int* attributes, int count) { excludedAttributes = attributes; excludedCount = count; }
virtual ShBindingTable* getUniformBindings() const { return uniformBindings; }
virtual const void* getObjectCode() const { return 0; } // a real compiler would be returning object code here
virtual TInfoSink& getInfoSink() { return infoSink; }
@@ -145,8 +145,8 @@
const ShBindingTable* appAttributeBindings;
const ShBindingTable* fixedAttributeBindings;
- const int* excludedAttributes;
- int excludedCount;
+ const int* excludedAttributes;
+ int excludedCount;
ShBindingTable* uniformBindings; // created by the linker
};
diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
index 4d260f0..5166e3d 100644
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -461,6 +461,9 @@
EOpTextureQueryLod,
EOpTextureQueryLevels,
EOpTextureQuerySamples,
+
+ EOpSamplingGuardBegin,
+
EOpTexture,
EOpTextureProj,
EOpTextureLod,
@@ -503,7 +506,7 @@
EOpSparseTextureGradOffsetClamp,
EOpSparseTextureGuardEnd,
-
+ EOpSamplingGuardEnd,
EOpTextureGuardEnd,
//
@@ -565,6 +568,17 @@
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;
@@ -799,11 +813,27 @@
virtual bool promote() { return true; }
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
{
@@ -935,9 +965,15 @@
}
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;
};
//
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index faaba8d..5bc8c9d 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.1375"
-#define GLSLANG_DATE "31-Jul-2016"
+#define GLSLANG_REVISION "SPIRV99.1401"
+#define GLSLANG_DATE "11-Aug-2016"
diff --git a/glslang/MachineIndependent/InfoSink.cpp b/glslang/MachineIndependent/InfoSink.cpp
index 2e88882..aa0fe89 100644
--- a/glslang/MachineIndependent/InfoSink.cpp
+++ b/glslang/MachineIndependent/InfoSink.cpp
@@ -34,7 +34,7 @@
#include "../Include/InfoSink.h"
-#include <string.h>
+#include <cstring>
namespace glslang {
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 8523398..0323c1b 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -934,25 +934,25 @@
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");
}
@@ -980,15 +980,15 @@
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");
}
@@ -1015,7 +1015,7 @@
(profile != EEsProfile && version >= 400)) {
commonBuiltins.append(
"highp uint packUnorm2x16(vec2);"
- "highp vec2 unpackUnorm2x16(highp uint);"
+ "vec2 unpackUnorm2x16(highp uint);"
"\n");
}
@@ -1024,18 +1024,37 @@
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");
}
@@ -1372,6 +1391,11 @@
"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);"
@@ -1383,95 +1407,23 @@
"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);"
@@ -1491,6 +1443,67 @@
"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, 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);"
+
+ " 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");
}
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
index 31d0b16..bfa2dea 100644
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -44,7 +44,7 @@
#include "SymbolTable.h"
#include "propagateNoContraction.h"
-#include <float.h>
+#include <cfloat>
namespace glslang {
@@ -118,6 +118,10 @@
return 0;
}
+ // Convert the children's type shape to be compatible.
+ right = addShapeConversion(op, left->getType(), right);
+ left = addShapeConversion(op, right->getType(), left);
+
//
// Need a new node holding things together. Make
// one and promote it to the right type.
@@ -341,35 +345,11 @@
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;
} 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;
}
}
@@ -544,7 +524,7 @@
if (type.getBasicType() == node->getType().getBasicType())
return node;
- if (canImplicitlyPromote(node->getType().getBasicType(), type.getBasicType()))
+ if (canImplicitlyPromote(node->getType().getBasicType(), type.getBasicType(), op))
promoteTo = type.getBasicType();
else
return 0;
@@ -718,6 +698,10 @@
// some operations don't do this
switch (op) {
case EOpAssign:
+ case EOpLessThan:
+ case EOpGreaterThan:
+ case EOpLessThanEqual:
+ case EOpGreaterThanEqual:
break;
default:
return node;
@@ -729,7 +713,6 @@
return node;
// The new node that handles the conversion
- TIntermTyped* conversionNode = node;
TOperator constructorOp = mapTypeToConstructorOp(type);
// scalar -> smeared -> vector
@@ -743,11 +726,37 @@
// 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;
+ // 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
+ return true;
+ default:
+ break;
+ }
+ }
+ }
+
switch (to) {
case EbtDouble:
switch (from) {
@@ -1648,11 +1657,11 @@
case EOpGreaterThan:
case EOpLessThanEqual:
case EOpGreaterThanEqual:
- // Relational comparisons need matching numeric types and will promote to scalar Boolean.
- if (left->getBasicType() == EbtBool || left->getType().isVector() || left->getType().isMatrix())
+ // Relational comparisons need numeric types and will promote to scalar Boolean.
+ if (left->getBasicType() == EbtBool)
return false;
-
- // Fall through
+ setType(TType(EbtBool));
+ break;
case EOpEqual:
case EOpNotEqual:
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 2ef0286..7211d4b 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -39,7 +39,7 @@
#include "Scan.h"
#include "../OSDependent/osinclude.h"
-#include <stdarg.h>
+#include <cstdarg>
#include <algorithm>
#include "preprocessor/PpContext.h"
@@ -253,7 +253,7 @@
//
bool TParseContext::parseVectorFields(const TSourceLoc& loc, const TString& compString, int vecSize, TVectorFields& fields)
{
- fields.num = (int) compString.size();
+ fields.num = (int)compString.size();
if (fields.num > 4) {
error(loc, "illegal vector field selection", compString.c_str(), "");
return false;
@@ -761,13 +761,32 @@
}
// Handle seeing a binary node with a math operation.
+// Returns nullptr if not semantically allowed.
TIntermTyped* TParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right)
{
rValueErrorCheck(loc, str, left->getAsTyped());
rValueErrorCheck(loc, str, right->getAsTyped());
- TIntermTyped* result = intermediate.addBinaryMath(op, left, right, loc);
- if (! result)
+ bool allowed = true;
+ switch (op) {
+ // TODO: Bring more source language-specific checks up from intermediate.cpp
+ // to the specific parse helpers for that source language.
+ case EOpLessThan:
+ case EOpGreaterThan:
+ case EOpLessThanEqual:
+ case EOpGreaterThanEqual:
+ if (! left->isScalar() || ! right->isScalar())
+ allowed = false;
+ break;
+ default:
+ break;
+ }
+
+ TIntermTyped* result = nullptr;
+ if (allowed)
+ result = intermediate.addBinaryMath(op, left, right, loc);
+
+ if (result == nullptr)
binaryOpError(loc, str, left->getCompleteString(), right->getCompleteString());
return result;
@@ -865,7 +884,7 @@
TString vectorString = field;
TIntermTyped* index = intermediate.addSwizzle(fields, loc);
result = intermediate.addIndex(EOpVectorSwizzle, base, index, loc);
- result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, (int) vectorString.size()));
+ result->setType(TType(base->getBasicType(), EvqTemporary, base->getType().getQualifier().precision, (int)vectorString.size()));
}
// Swizzle operations propagate specialization-constantness
if (base->getType().getQualifier().isSpecConstant())
@@ -1078,17 +1097,16 @@
{
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'.
//
@@ -1149,18 +1167,9 @@
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<TIntermTyped*>(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.
@@ -1207,6 +1216,118 @@
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());
+ computeBuiltinPrecisions(*result, function);
+ if (result == nullptr) {
+ error(arguments.getLoc(), " wrong operand type", "Internal Error",
+ "built in unary operator function. Type: %s",
+ static_cast<TIntermTyped*>(&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;
+
+ if (profile != EEsProfile)
+ return;
+
+ 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;
@@ -1433,11 +1554,6 @@
}
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:
@@ -1569,11 +1685,6 @@
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.
diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h
index a5e6f65..544c3d3 100644
--- a/glslang/MachineIndependent/ParseHelper.h
+++ b/glslang/MachineIndependent/ParseHelper.h
@@ -197,6 +197,8 @@
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*);
diff --git a/glslang/MachineIndependent/PoolAlloc.cpp b/glslang/MachineIndependent/PoolAlloc.cpp
index d56979b..9dfcd30 100644
--- a/glslang/MachineIndependent/PoolAlloc.cpp
+++ b/glslang/MachineIndependent/PoolAlloc.cpp
@@ -53,7 +53,7 @@
TThreadMemoryPools* threadData = new TThreadMemoryPools();
threadData->threadPoolAllocator = threadPoolAllocator;
-
+
OS_SetTLSValue(PoolIndex, threadData);
}
@@ -63,7 +63,7 @@
TThreadMemoryPools* globalPools = static_cast<TThreadMemoryPools*>(OS_GetTLSValue(PoolIndex));
if (! globalPools)
return;
-
+
GetThreadPoolAllocator().popAll();
delete &GetThreadPoolAllocator();
delete globalPools;
@@ -149,12 +149,12 @@
TPoolAllocator::~TPoolAllocator()
{
- while (inUseList) {
- tHeader* next = inUseList->nextPage;
+ while (inUseList) {
+ tHeader* next = inUseList->nextPage;
inUseList->~tHeader();
delete [] reinterpret_cast<char*>(inUseList);
- inUseList = next;
- }
+ inUseList = next;
+ }
//
// Always delete the free list memory - it can't be being
diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp
index e297e34..ee0dbb4 100644
--- a/glslang/MachineIndependent/Scan.cpp
+++ b/glslang/MachineIndependent/Scan.cpp
@@ -38,7 +38,7 @@
// GLSL scanning, leveraging the scanning done by the preprocessor.
//
-#include <string.h>
+#include <cstring>
#include <unordered_map>
#include <unordered_set>
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index dccc1f0..97c3940 100644
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -41,7 +41,7 @@
// This is the platform independent interface between an OGL driver
// and the shading language compiler/linker.
//
-#include <string.h>
+#include <cstring>
#include <iostream>
#include <sstream>
#include <memory>
@@ -146,6 +146,23 @@
return index;
}
+const int SourceCount = 2;
+
+int MapSourceToIndex(EShSource source)
+{
+ int index = 0;
+
+ switch (source) {
+ case EShSourceGlsl: index = 0; break;
+ case EShSourceHlsl: index = 1; break;
+ default: break;
+ }
+
+ assert(index < SourceCount);
+
+ return index;
+}
+
// only one of these needed for non-ES; ES needs 2 for different precision defaults of built-ins
enum EPrecisionClass {
EPcGeneral,
@@ -161,8 +178,8 @@
// Each has a different set of built-ins, and we want to preserve that from
// compile to compile.
//
-TSymbolTable* CommonSymbolTable[VersionCount][SpvVersionCount][ProfileCount][EPcCount] = {};
-TSymbolTable* SharedSymbolTables[VersionCount][SpvVersionCount][ProfileCount][EShLangCount] = {};
+TSymbolTable* CommonSymbolTable[VersionCount][SpvVersionCount][ProfileCount][SourceCount][EPcCount] = {};
+TSymbolTable* SharedSymbolTables[VersionCount][SpvVersionCount][ProfileCount][SourceCount][EShLangCount] = {};
TPoolAllocator* PerProcessGPA = 0;
@@ -305,7 +322,8 @@
int versionIndex = MapVersionToIndex(version);
int spvVersionIndex = MapSpvVersionToIndex(spvVersion);
int profileIndex = MapProfileToIndex(profile);
- if (CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][EPcGeneral]) {
+ int sourceIndex = MapSourceToIndex(source);
+ if (CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][EPcGeneral]) {
glslang::ReleaseGlobalLock();
return;
@@ -333,18 +351,18 @@
// Copy the local symbol tables from the new pool to the global tables using the process-global pool
for (int precClass = 0; precClass < EPcCount; ++precClass) {
if (! commonTable[precClass]->isEmpty()) {
- CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][precClass] = new TSymbolTable;
- CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][precClass]->copyTable(*commonTable[precClass]);
- CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][precClass]->readOnly();
+ CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][precClass] = new TSymbolTable;
+ CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][precClass]->copyTable(*commonTable[precClass]);
+ CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][precClass]->readOnly();
}
}
for (int stage = 0; stage < EShLangCount; ++stage) {
if (! stageTables[stage]->isEmpty()) {
- SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][stage] = new TSymbolTable;
- SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][stage]->adoptLevels(*CommonSymbolTable
- [versionIndex][spvVersionIndex][profileIndex][CommonIndex(profile, (EShLanguage)stage)]);
- SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][stage]->copyTable(*stageTables[stage]);
- SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][stage]->readOnly();
+ SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage] = new TSymbolTable;
+ SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage]->adoptLevels(*CommonSymbolTable
+ [versionIndex][spvVersionIndex][profileIndex][sourceIndex][CommonIndex(profile, (EShLanguage)stage)]);
+ SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage]->copyTable(*stageTables[stage]);
+ SharedSymbolTables[versionIndex][spvVersionIndex][profileIndex][sourceIndex][stage]->readOnly();
}
}
@@ -656,6 +674,7 @@
TSymbolTable* cachedTable = SharedSymbolTables[MapVersionToIndex(version)]
[MapSpvVersionToIndex(spvVersion)]
[MapProfileToIndex(profile)]
+ [MapSourceToIndex(source)]
[compiler->getLanguage()];
// Dynamically allocate the symbol table so we can control when it is deallocated WRT the pool.
@@ -1092,9 +1111,11 @@
for (int version = 0; version < VersionCount; ++version) {
for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) {
for (int p = 0; p < ProfileCount; ++p) {
- for (int lang = 0; lang < EShLangCount; ++lang) {
- delete SharedSymbolTables[version][spvVersion][p][lang];
- SharedSymbolTables[version][spvVersion][p][lang] = 0;
+ for (int source = 0; source < SourceCount; ++source) {
+ for (int stage = 0; stage < EShLangCount; ++stage) {
+ delete SharedSymbolTables[version][spvVersion][p][source][stage];
+ SharedSymbolTables[version][spvVersion][p][source][stage] = 0;
+ }
}
}
}
@@ -1103,9 +1124,11 @@
for (int version = 0; version < VersionCount; ++version) {
for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) {
for (int p = 0; p < ProfileCount; ++p) {
- for (int pc = 0; pc < EPcCount; ++pc) {
- delete CommonSymbolTable[version][spvVersion][p][pc];
- CommonSymbolTable[version][spvVersion][p][pc] = 0;
+ for (int source = 0; source < SourceCount; ++source) {
+ for (int pc = 0; pc < EPcCount; ++pc) {
+ delete CommonSymbolTable[version][spvVersion][p][source][pc];
+ CommonSymbolTable[version][spvVersion][p][source][pc] = 0;
+ }
}
}
}
diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index bf0f1f9..630053a 100644
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -250,7 +250,7 @@
}
TVariable::TVariable(const TVariable& copyOf) : TSymbol(copyOf)
-{
+{
type.deepCopy(copyOf.type);
userType = copyOf.userType;
numExtensions = 0;
@@ -276,7 +276,7 @@
}
TFunction::TFunction(const TFunction& copyOf) : TSymbol(copyOf)
-{
+{
for (unsigned int i = 0; i < copyOf.parameters.size(); ++i) {
TParameter param;
parameters.push_back(param);
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index 893f42b..0ef37c4 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -38,11 +38,9 @@
#include "../Include/InfoSink.h"
#ifdef _MSC_VER
-#include <float.h>
-#elif defined __ANDROID__ || defined __linux__ || __MINGW32__ || __MINGW64__
-#include <cmath>
+#include <cfloat>
#else
-#include <math.h>
+#include <cmath>
#endif
namespace {
@@ -50,10 +48,8 @@
bool is_positive_infinity(double x) {
#ifdef _MSC_VER
return _fpclass(x) == _FPCLASS_PINF;
-#elif defined __ANDROID__ || defined __linux__ || __MINGW32__ || __MINGW64__
- return std::isinf(x) && (x >= 0);
#else
- return isinf(x) && (x >= 0);
+ return std::isinf(x) && (x >= 0);
#endif
}
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
index 0bc1d91..dbd2f92 100644
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -664,37 +664,93 @@
size = computeTypeLocationSize(type);
}
- // locations...
- TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation + size - 1);
+ // Locations, and components within locations.
+ //
+ // Almost always, dealing with components means a single location is involved.
+ // The exception is a dvec3. From the spec:
+ //
+ // "A dvec3 will consume all four components of the first location and components 0 and 1 of
+ // the second location. This leaves components 2 and 3 available for other component-qualified
+ // declarations."
+ //
+ // That means, without ever mentioning a component, a component range
+ // for a different location gets specified, if it's not a vertex shader input. (!)
+ // (A vertex shader input will show using only one location, even for a dvec3/4.)
+ //
+ // So, for the case of dvec3, we need two independent ioRanges.
- // components in this location slot...
- TRange componentRange(0, 3);
- if (qualifier.hasComponent() || type.getVectorSize() > 0) {
- int consumedComponents = type.getVectorSize() * (type.getBasicType() == EbtDouble ? 2 : 1);
- if (qualifier.hasComponent())
- componentRange.start = qualifier.layoutComponent;
- componentRange.last = componentRange.start + consumedComponents - 1;
+ int collision = -1; // no collision
+ if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 &&
+ (qualifier.isPipeInput() || qualifier.isPipeOutput())) {
+ // Dealing with dvec3 in/out split across two locations.
+ // Need two io-ranges.
+ // The case where the dvec3 doesn't start at component 0 was previously caught as overflow.
+
+ // First range:
+ TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation);
+ TRange componentRange(0, 3);
+ TIoRange range(locationRange, componentRange, type.getBasicType(), 0);
+
+ // check for collisions
+ collision = checkLocationRange(set, range, type, typeCollision);
+ if (collision < 0) {
+ usedIo[set].push_back(range);
+
+ // Second range:
+ TRange locationRange2(qualifier.layoutLocation + 1, qualifier.layoutLocation + 1);
+ TRange componentRange2(0, 1);
+ TIoRange range2(locationRange2, componentRange2, type.getBasicType(), 0);
+
+ // check for collisions
+ collision = checkLocationRange(set, range2, type, typeCollision);
+ if (collision < 0)
+ usedIo[set].push_back(range2);
+ }
+ } else {
+ // Not a dvec3 in/out split across two locations, generic path.
+ // Need a single IO-range block.
+
+ TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation + size - 1);
+ TRange componentRange(0, 3);
+ if (qualifier.hasComponent() || type.getVectorSize() > 0) {
+ int consumedComponents = type.getVectorSize() * (type.getBasicType() == EbtDouble ? 2 : 1);
+ if (qualifier.hasComponent())
+ componentRange.start = qualifier.layoutComponent;
+ componentRange.last = componentRange.start + consumedComponents - 1;
+ }
+
+ // combine location and component ranges
+ TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.layoutIndex : 0);
+
+ // check for collisions, except for vertex inputs on desktop
+ if (! (profile != EEsProfile && language == EShLangVertex && qualifier.isPipeInput()))
+ collision = checkLocationRange(set, range, type, typeCollision);
+
+ if (collision < 0)
+ usedIo[set].push_back(range);
}
- // both...
- TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.layoutIndex : 0);
+ return collision;
+}
- // check for collisions, except for vertex inputs on desktop
- if (! (profile != EEsProfile && language == EShLangVertex && qualifier.isPipeInput())) {
- for (size_t r = 0; r < usedIo[set].size(); ++r) {
- if (range.overlap(usedIo[set][r])) {
- // there is a collision; pick one
- return std::max(locationRange.start, usedIo[set][r].location.start);
- } else if (locationRange.overlap(usedIo[set][r].location) && type.getBasicType() != usedIo[set][r].basicType) {
- // aliased-type mismatch
- typeCollision = true;
- return std::max(locationRange.start, usedIo[set][r].location.start);
- }
+// Compare a new (the passed in) 'range' against the existing set, and see
+// if there are any collisions.
+//
+// Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value.
+//
+int TIntermediate::checkLocationRange(int set, const TIoRange& range, const TType& type, bool& typeCollision)
+{
+ for (size_t r = 0; r < usedIo[set].size(); ++r) {
+ if (range.overlap(usedIo[set][r])) {
+ // there is a collision; pick one
+ return std::max(range.location.start, usedIo[set][r].location.start);
+ } else if (range.location.overlap(usedIo[set][r].location) && type.getBasicType() != usedIo[set][r].basicType) {
+ // aliased-type mismatch
+ typeCollision = true;
+ return std::max(range.location.start, usedIo[set][r].location.start);
}
}
- usedIo[set].push_back(range);
-
return -1; // no collision
}
diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h
index 7bd457d..80deabe 100644
--- a/glslang/MachineIndependent/localintermediate.h
+++ b/glslang/MachineIndependent/localintermediate.h
@@ -189,7 +189,7 @@
TIntermTyped* addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, TSourceLoc);
TIntermTyped* addUnaryMath(TOperator, TIntermTyped* child, TSourceLoc);
TIntermTyped* addBuiltInFunctionCall(const TSourceLoc& line, TOperator, bool unary, TIntermNode*, const TType& returnType);
- bool canImplicitlyPromote(TBasicType from, TBasicType to) const;
+ bool canImplicitlyPromote(TBasicType from, TBasicType to, TOperator op = EOpNull) const;
TOperator mapTypeToConstructorOp(const TType&) const;
TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right);
TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc&);
@@ -331,6 +331,7 @@
bool inIoAccessed(const TString& name) const { return ioAccessed.find(name) != ioAccessed.end(); }
int addUsedLocation(const TQualifier&, const TType&, bool& typeCollision);
+ int checkLocationRange(int set, const TIoRange& range, const TType&, bool& typeCollision);
int addUsedOffsets(int binding, int offset, int numOffsets);
bool addUsedConstantId(int id);
int computeTypeLocationSize(const TType&) const;
diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp
index d771010..d28e7be 100644
--- a/glslang/MachineIndependent/preprocessor/Pp.cpp
+++ b/glslang/MachineIndependent/preprocessor/Pp.cpp
@@ -81,12 +81,10 @@
#define _CRT_SECURE_NO_WARNINGS
-#include <stdarg.h>
-#include <stdio.h>
#include <sstream>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
+#include <cstdlib>
+#include <cstring>
+#include <cctype>
#include "PpContext.h"
#include "PpTokens.h"
diff --git a/glslang/MachineIndependent/preprocessor/PpAtom.cpp b/glslang/MachineIndependent/preprocessor/PpAtom.cpp
index 763b6b4..2b21193 100644
--- a/glslang/MachineIndependent/preprocessor/PpAtom.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpAtom.cpp
@@ -82,10 +82,9 @@
#define _CRT_SECURE_NO_WARNINGS
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
+#include <cassert>
+#include <cstdlib>
+#include <cstring>
#include "PpContext.h"
#include "PpTokens.h"
@@ -98,6 +97,32 @@
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 @@
{ 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 6f0b8a9..6791fef 100644
--- a/glslang/MachineIndependent/preprocessor/PpContext.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpContext.cpp
@@ -76,8 +76,7 @@
NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\****************************************************************************/
-#include <stdio.h>
-#include <stdlib.h>
+#include <cstdlib>
#include "PpContext.h"
diff --git a/glslang/MachineIndependent/preprocessor/PpMemory.cpp b/glslang/MachineIndependent/preprocessor/PpMemory.cpp
index 57a49fb..6158a38 100644
--- a/glslang/MachineIndependent/preprocessor/PpMemory.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpMemory.cpp
@@ -76,10 +76,9 @@
NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\****************************************************************************/
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
#include "PpContext.h"
diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
index 5ce5a03..fc1c301 100644
--- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
@@ -81,10 +81,8 @@
#define _CRT_SECURE_NO_WARNINGS
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstring>
#include "PpContext.h"
#include "PpTokens.h"
diff --git a/glslang/MachineIndependent/preprocessor/PpSymbols.cpp b/glslang/MachineIndependent/preprocessor/PpSymbols.cpp
index c2ab7c0..b7f1df5 100644
--- a/glslang/MachineIndependent/preprocessor/PpSymbols.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpSymbols.cpp
@@ -79,10 +79,9 @@
// symbols.c
//
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
+#include <cassert>
+#include <cstdlib>
+#include <cstring>
#include "PpContext.h"
diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp
index 61883c9..1e1b0a2 100644
--- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp
@@ -85,11 +85,10 @@
#define snprintf sprintf_s
#endif
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
+#include <cassert>
+#include <cstdlib>
+#include <cstring>
+#include <cctype>
#include "PpContext.h"
#include "PpTokens.h"
diff --git a/glslang/OSDependent/Windows/ossource.cpp b/glslang/OSDependent/Windows/ossource.cpp
index 1d09fd3..f71fac9 100644
--- a/glslang/OSDependent/Windows/ossource.cpp
+++ b/glslang/OSDependent/Windows/ossource.cpp
@@ -37,14 +37,14 @@
#define STRICT
#define VC_EXTRALEAN 1
#include <windows.h>
-#include <assert.h>
+#include <cassert>
#include <process.h>
#include <psapi.h>
-#include <stdio.h>
-#include <stdint.h>
+#include <cstdio>
+#include <cstdint>
//
-// This file contains contains the Window-OS-specific functions
+// This file contains the Window-OS-specific functions
//
#if !(defined(_WIN32) || defined(_WIN64))
@@ -55,12 +55,12 @@
inline OS_TLSIndex ToGenericTLSIndex (DWORD handle)
{
- return (OS_TLSIndex)((uintptr_t)handle + 1);
+ return (OS_TLSIndex)((uintptr_t)handle + 1);
}
inline DWORD ToNativeTLSIndex (OS_TLSIndex nIndex)
{
- return (DWORD)((uintptr_t)nIndex - 1);
+ return (DWORD)((uintptr_t)nIndex - 1);
}
//
@@ -68,46 +68,46 @@
//
OS_TLSIndex OS_AllocTLSIndex()
{
- DWORD dwIndex = TlsAlloc();
- if (dwIndex == TLS_OUT_OF_INDEXES) {
- assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage");
- return OS_INVALID_TLS_INDEX;
- }
+ DWORD dwIndex = TlsAlloc();
+ if (dwIndex == TLS_OUT_OF_INDEXES) {
+ assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage");
+ return OS_INVALID_TLS_INDEX;
+ }
- return ToGenericTLSIndex(dwIndex);
+ return ToGenericTLSIndex(dwIndex);
}
bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue)
{
- if (nIndex == OS_INVALID_TLS_INDEX) {
- assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
- return false;
- }
+ if (nIndex == OS_INVALID_TLS_INDEX) {
+ assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
+ return false;
+ }
- if (TlsSetValue(ToNativeTLSIndex(nIndex), lpvValue))
- return true;
- else
- return false;
+ if (TlsSetValue(ToNativeTLSIndex(nIndex), lpvValue))
+ return true;
+ else
+ return false;
}
void* OS_GetTLSValue(OS_TLSIndex nIndex)
{
- assert(nIndex != OS_INVALID_TLS_INDEX);
- return TlsGetValue(ToNativeTLSIndex(nIndex));
+ assert(nIndex != OS_INVALID_TLS_INDEX);
+ return TlsGetValue(ToNativeTLSIndex(nIndex));
}
bool OS_FreeTLSIndex(OS_TLSIndex nIndex)
{
- if (nIndex == OS_INVALID_TLS_INDEX) {
- assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
- return false;
- }
+ if (nIndex == OS_INVALID_TLS_INDEX) {
+ assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
+ return false;
+ }
- if (TlsFree(ToNativeTLSIndex(nIndex)))
- return true;
- else
- return false;
+ if (TlsFree(ToNativeTLSIndex(nIndex)))
+ return true;
+ else
+ return false;
}
HANDLE GlobalLock;
@@ -129,7 +129,7 @@
unsigned int __stdcall EnterGenericThread (void* entry)
{
- return ((TThreadEntrypoint)entry)(0);
+ return ((TThreadEntrypoint)entry)(0);
}
void* OS_CreateThread(TThreadEntrypoint entry)
diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h
index 4b4d0fc..d112159 100644
--- a/glslang/Public/ShaderLang.h
+++ b/glslang/Public/ShaderLang.h
@@ -37,7 +37,7 @@
#include "../Include/ResourceLimits.h"
#include "../MachineIndependent/Versions.h"
-#include <string.h>
+#include <cstring>
#ifdef _WIN32
#define C_DECL __cdecl
diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp
index 55c7139..3e3b6b4 100644
--- a/gtests/Hlsl.FromFile.cpp
+++ b/gtests/Hlsl.FromFile.cpp
@@ -91,6 +91,10 @@
{"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.dx10.vert", "main"},
{"hlsl.getsampleposition.dx10.frag", "main"},
@@ -117,6 +121,7 @@
{"hlsl.load.offsetarray.dx10.frag", "main"},
{"hlsl.numericsuffixes.frag", "main"},
{"hlsl.pp.line.frag", "main"},
+ {"hlsl.promotions.frag", "main"},
{"hlsl.sample.array.dx10.frag", "main"},
{"hlsl.sample.basic.dx10.frag", "main"},
{"hlsl.sample.offset.dx10.frag", "main"},
@@ -143,6 +148,7 @@
{"hlsl.samplelevel.basic.dx10.vert", "main"},
{"hlsl.samplelevel.offset.dx10.frag", "main"},
{"hlsl.samplelevel.offsetarray.dx10.frag", "main"},
+ {"hlsl.semicolons.frag", "main"},
{"hlsl.shapeConv.frag", "main"},
{"hlsl.intrinsics.vert", "VertexShaderFunction"},
{"hlsl.matType.frag", "PixelShaderFunction"},
diff --git a/gtests/Initializer.h b/gtests/Initializer.h
index 34af9ad..b46b3f5 100644
--- a/gtests/Initializer.h
+++ b/gtests/Initializer.h
@@ -40,46 +40,14 @@
namespace glslangtest {
// Initializes glslang on creation, and destroys it on completion.
-// And provides .Acquire() as a way to reinitialize glslang if semantics change.
// This object is expected to be a singleton, so that internal glslang state
// can be correctly handled.
//
-// TODO(antiagainst): It's a known bug that some of the internal states need to
-// be reset if semantics change:
-// https://github.com/KhronosGroup/glslang/issues/166
-// Therefore, the following mechanism is needed. Remove this once the above bug
-// gets fixed.
class GlslangInitializer {
public:
- GlslangInitializer() : lastMessages(EShMsgCascadingErrors)
- {
- glslang::InitializeProcess();
- }
+ GlslangInitializer() { glslang::InitializeProcess(); }
~GlslangInitializer() { glslang::FinalizeProcess(); }
-
- // A token indicates that the glslang is reinitialized (if necessary) to the
- // required semantics. And that won't change until the token is destroyed.
- class InitializationToken {
- };
-
- // Re-initializes glsl state iff the previous messages and the current
- // messages are incompatible. We assume external synchronization, i.e.
- // there is at most one acquired token at any one time.
- InitializationToken acquire(EShMessages new_messages)
- {
- if ((lastMessages ^ new_messages) &
- (EShMsgVulkanRules | EShMsgSpvRules | EShMsgReadHlsl)) {
- glslang::FinalizeProcess();
- glslang::InitializeProcess();
- }
- lastMessages = new_messages;
- return InitializationToken();
- }
-
-private:
-
- EShMessages lastMessages;
};
} // namespace glslangtest
diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h
index 8dffb80..4f916e7 100644
--- a/gtests/TestFixture.h
+++ b/gtests/TestFixture.h
@@ -35,7 +35,7 @@
#ifndef GLSLANG_GTESTS_TEST_FIXTURE_H
#define GLSLANG_GTESTS_TEST_FIXTURE_H
-#include <stdint.h>
+#include <cstdint>
#include <fstream>
#include <sstream>
#include <streambuf>
@@ -179,8 +179,6 @@
shader->setStringsWithLengths(&shaderStrings, &shaderLengths, 1);
if (!entryPointName.empty()) shader->setEntryPoint(entryPointName.c_str());
- // Reinitialize glslang if the semantics change.
- GlobalTestSettings.initializer->acquire(controls);
return shader->parse(
(resources ? resources : &glslang::DefaultTBuiltInResource),
defaultVersion, isForwardCompatible, controls);
diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp
index 37919c3..582b1d0 100755
--- a/hlsl/hlslGrammar.cpp
+++ b/hlsl/hlslGrammar.cpp
@@ -89,12 +89,17 @@
// 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))
@@ -269,8 +274,14 @@
TType type;
// DX9 sampler declaration use a different syntax
- if (acceptSamplerDeclarationDX9(type))
- return true;
+ // DX9 shaders need to run through HLSL compiler (fxc) via a back compat mode, it isn't going to
+ // be possible to simultaneously compile D3D10+ style shaders and DX9 shaders. If we want to compile DX9
+ // HLSL shaders, this will have to be a master level switch
+ // As such, the sampler keyword in D3D10+ turns into an automatic sampler type, and is commonly used
+ // For that reason, this line is commented out
+
+ // if (acceptSamplerDeclarationDX9(type))
+ // return true;
// fully_specified_type
if (! acceptFullySpecifiedType(type))
@@ -2435,7 +2446,7 @@
TIntermTyped* node;
if (acceptExpression(node)) {
// hook it up
- statement = intermediate.addBranch(EOpReturn, node, token.loc);
+ statement = parseContext.handleReturnValue(token.loc, node);
} else
statement = intermediate.addBranch(EOpReturn, token.loc);
break;
diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp
index d509e1f..2a79375 100755
--- a/hlsl/hlslParseHelper.cpp
+++ b/hlsl/hlslParseHelper.cpp
@@ -43,7 +43,7 @@
#include "../glslang/OSDependent/osinclude.h"
-#include <stdarg.h>
+#include <cstdarg>
#include <algorithm>
namespace glslang {
@@ -581,6 +581,15 @@
} 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" ||
@@ -634,7 +643,7 @@
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);
@@ -787,6 +796,25 @@
return paramNodes;
}
+// Handle function returns, including type conversions to the function return type
+// if necessary.
+TIntermNode* HlslParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value)
+{
+ if (currentFunctionType->getBasicType() == EbtVoid) {
+ error(loc, "void function cannot return a value", "return", "");
+ return intermediate.addBranch(EOpReturn, loc);
+ } else if (*currentFunctionType != value->getType()) {
+ TIntermTyped* converted = intermediate.addConversion(EOpReturn, *currentFunctionType, value);
+ if (converted) {
+ return intermediate.addBranch(EOpReturn, converted, loc);
+ } else {
+ error(loc, "type does not match, or is not convertible to, the function's return type", "return", "");
+ return intermediate.addBranch(EOpReturn, value, loc);
+ }
+ } else
+ return intermediate.addBranch(EOpReturn, value, loc);
+}
+
void HlslParseContext::handleFunctionArgument(TFunction* function, TIntermTyped*& arguments, TIntermTyped* newArg)
{
TParameter param = { 0, new TType };
@@ -989,7 +1017,7 @@
const TSampler& texSampler = texType.getSampler();
const TSamplerDim dim = texSampler.dim;
- const int numArgs = argAggregate->getSequence().size();
+ const int numArgs = (int)argAggregate->getSequence().size();
int numDims = 0;
@@ -1175,7 +1203,7 @@
lodComponent->setType(TType(coordBaseType, EvqTemporary, 1));
}
- const int numArgs = argAggregate->getSequence().size();
+ const int numArgs = (int)argAggregate->getSequence().size();
const bool hasOffset = ((!isMS && numArgs == 3) || (isMS && numArgs == 4));
// Create texel fetch
@@ -1219,7 +1247,7 @@
TIntermTyped* argLod = argAggregate->getSequence()[3]->getAsTyped();
TIntermTyped* argOffset = nullptr;
- const int numArgs = argAggregate->getSequence().size();
+ const int numArgs = (int)argAggregate->getSequence().size();
if (numArgs == 5) // offset, if present
argOffset = argAggregate->getSequence()[4]->getAsTyped();
@@ -1251,7 +1279,7 @@
TIntermTyped* argOffset = nullptr;
// Offset is optional
- if (argAggregate->getSequence().size() == 4)
+ if (argAggregate->getSequence().size() > 3)
argOffset = argAggregate->getSequence()[3]->getAsTyped();
const TOperator textureOp = (argOffset == nullptr ? EOpTextureGather : EOpTextureGatherOffset);
@@ -1261,6 +1289,7 @@
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);
@@ -1272,6 +1301,131 @@
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 = 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:
{
@@ -1953,11 +2107,6 @@
}
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:
@@ -2060,11 +2209,6 @@
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.
@@ -2580,10 +2724,6 @@
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);
diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h
index 92641a8..f45a874 100755
--- a/hlsl/hlslParseHelper.h
+++ b/hlsl/hlslParseHelper.h
@@ -85,6 +85,7 @@
TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field);
TFunction* handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype);
TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&);
+ TIntermNode* handleReturnValue(const TSourceLoc&, TIntermTyped*);
void handleFunctionArgument(TFunction*, TIntermTyped*& arguments, TIntermTyped* newArg);
TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermNode*);
void decomposeIntrinsic(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp
index 25e8fe8..868a41e 100755
--- a/hlsl/hlslParseables.cpp
+++ b/hlsl/hlslParseables.cpp
@@ -101,12 +101,29 @@
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 (name == "Gather") {
+ if (isGather || isGatherCmp) {
if (dim0 == 1 || dim0 == 3) // there are no 1D or 3D gathers
return true;
- if (dim0 == 4 && numArgs == 4) // there are no Cube gathers with offset
- 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
@@ -436,8 +453,24 @@
void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, const SpvVersion& /*spvVersion*/)
{
static const EShLanguageMask EShLangAll = EShLanguageMask(EShLangCount - 1);
- static const EShLanguageMask EShLangPSCS = EShLanguageMask(EShLangFragmentMask | EShLangComputeMask);
- static const EShLanguageMask EShLangVSPSGS = EShLanguageMask(EShLangVertexMask | EShLangFragmentMask | EShLangGeometryMask);
+
+ // These are the actual stage masks defined in the documentation, in case they are
+ // needed for furture validation. For now, they are commented out, and set below
+ // to EShLangAll, to allow any intrinsic to be used in any shader, which is legal
+ // if it is not called.
+ //
+ // static const EShLanguageMask EShLangPSCS = EShLanguageMask(EShLangFragmentMask | EShLangComputeMask);
+ // static const EShLanguageMask EShLangVSPSGS = EShLanguageMask(EShLangVertexMask | EShLangFragmentMask | EShLangGeometryMask);
+ // static const EShLanguageMask EShLangCS = EShLangComputeMask;
+ // static const EShLanguageMask EShLangPS = EShLangFragmentMask;
+ // static const EShLanguageMask EShLangHS = EShLangTessControlMask;
+
+ // This set uses EShLangAll for everything.
+ static const EShLanguageMask EShLangPSCS = EShLangAll;
+ static const EShLanguageMask EShLangVSPSGS = EShLangAll;
+ static const EShLanguageMask EShLangCS = EShLangAll;
+ static const EShLanguageMask EShLangPS = EShLangAll;
+ static const EShLanguageMask EShLangHS = EShLangAll;
// This structure encodes the prototype information for each HLSL intrinsic.
// Because explicit enumeration would be cumbersome, it's procedurally generated.
@@ -469,8 +502,8 @@
{ "abs", nullptr, nullptr, "SVM", "DFUI", EShLangAll },
{ "acos", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "all", "S", "B", "SVM", "BFI", EShLangAll },
- { "AllMemoryBarrier", nullptr, nullptr, "-", "-", EShLangComputeMask },
- { "AllMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
+ { "AllMemoryBarrier", nullptr, nullptr, "-", "-", EShLangCS },
+ { "AllMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS },
{ "any", "S", "B", "SVM", "BFI", EShLangAll },
{ "asdouble", "S", "D", "S,", "U,", EShLangAll },
{ "asdouble", "V2", "D", "V2,", "U,", EShLangAll },
@@ -483,29 +516,29 @@
{ "ceil", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "CheckAccessFullyMapped", "S", "B" , "S", "U", EShLangPSCS },
{ "clamp", nullptr, nullptr, "SVM,,", "FUI,,", EShLangAll },
- { "clip", "-", "-", "SVM", "F", EShLangFragmentMask },
+ { "clip", "-", "-", "SVM", "F", EShLangPS },
{ "cos", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "cosh", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "countbits", nullptr, nullptr, "SV", "U", EShLangAll },
{ "cross", nullptr, nullptr, "V3,", "F,", EShLangAll },
{ "D3DCOLORtoUBYTE4", "V4", "I", "V4", "F", EShLangAll },
- { "ddx", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "ddx_coarse", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "ddx_fine", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "ddy", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "ddy_coarse", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "ddy_fine", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
+ { "ddx", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "ddx_coarse", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "ddx_fine", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "ddy", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "ddy_coarse", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "ddy_fine", nullptr, nullptr, "SVM", "F", EShLangPS },
{ "degrees", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "determinant", "S", "F", "M", "F", EShLangAll },
{ "DeviceMemoryBarrier", nullptr, nullptr, "-", "-", EShLangPSCS },
- { "DeviceMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
+ { "DeviceMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS },
{ "distance", "S", "F", "V,", "F,", EShLangAll },
{ "dot", "S", nullptr, "V,", "FI,", EShLangAll },
{ "dst", nullptr, nullptr, "V4,", "F,", EShLangAll },
// { "errorf", "-", "-", "", "", EShLangAll }, TODO: varargs
- { "EvaluateAttributeAtCentroid", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
- { "EvaluateAttributeAtSample", nullptr, nullptr, "SVM,S", "F,U", EShLangFragmentMask },
- { "EvaluateAttributeSnapped", nullptr, nullptr, "SVM,V2", "F,I", EShLangFragmentMask },
+ { "EvaluateAttributeAtCentroid", nullptr, nullptr, "SVM", "F", EShLangPS },
+ { "EvaluateAttributeAtSample", nullptr, nullptr, "SVM,S", "F,U", EShLangPS },
+ { "EvaluateAttributeSnapped", nullptr, nullptr, "SVM,V2", "F,I", EShLangPS },
{ "exp", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "exp2", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "f16tof32", nullptr, "F", "SV", "U", EShLangAll },
@@ -518,11 +551,11 @@
{ "fmod", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "frac", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "frexp", nullptr, nullptr, "SVM,", "F,", EShLangAll },
- { "fwidth", nullptr, nullptr, "SVM", "F", EShLangFragmentMask },
+ { "fwidth", nullptr, nullptr, "SVM", "F", EShLangPS },
{ "GetRenderTargetSampleCount", "S", "U", "-", "-", EShLangAll },
{ "GetRenderTargetSamplePosition", "V2", "F", "V1", "I", EShLangAll },
- { "GroupMemoryBarrier", nullptr, nullptr, "-", "-", EShLangComputeMask },
- { "GroupMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangComputeMask },
+ { "GroupMemoryBarrier", nullptr, nullptr, "-", "-", EShLangCS },
+ { "GroupMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS },
{ "InterlockedAdd", "-", "-", "SVM,,>", "UI,,", EShLangPSCS },
{ "InterlockedAdd", "-", "-", "SVM,", "UI,", EShLangPSCS },
{ "InterlockedAnd", "-", "-", "SVM,,>", "UI,,", EShLangPSCS },
@@ -563,20 +596,20 @@
{ "mul", "M", nullptr, "M,S", "FI,", EShLangAll },
{ "mul", "V", nullptr, "M,#V", "FI,", EShLangAll },
// mat*mat form of mul is handled in createMatTimesMat()
- { "noise", "S", "F", "V", "F", EShLangFragmentMask },
+ { "noise", "S", "F", "V", "F", EShLangPS },
{ "normalize", nullptr, nullptr, "V", "F", EShLangAll },
{ "pow", nullptr, nullptr, "SVM,", "F,", EShLangAll },
// { "printf", "-", "-", "", "", EShLangAll }, TODO: varargs
- { "Process2DQuadTessFactorsAvg", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "Process2DQuadTessFactorsMax", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "Process2DQuadTessFactorsMin", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "ProcessIsolineTessFactors", "-", "-", "S,,>,>", "F,,,", EShLangTessControlMask },
- { "ProcessQuadTessFactorsAvg", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "ProcessQuadTessFactorsMax", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "ProcessQuadTessFactorsMin", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangTessControlMask },
- { "ProcessTriTessFactorsAvg", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangTessControlMask },
- { "ProcessTriTessFactorsMax", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangTessControlMask },
- { "ProcessTriTessFactorsMin", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangTessControlMask },
+ { "Process2DQuadTessFactorsAvg", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS },
+ { "Process2DQuadTessFactorsMax", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS },
+ { "Process2DQuadTessFactorsMin", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS },
+ { "ProcessIsolineTessFactors", "-", "-", "S,,>,>", "F,,,", EShLangHS },
+ { "ProcessQuadTessFactorsAvg", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangHS },
+ { "ProcessQuadTessFactorsMax", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangHS },
+ { "ProcessQuadTessFactorsMin", "-", "-", "V4,S,>V4,>V2,", "F,,,,", EShLangHS },
+ { "ProcessTriTessFactorsAvg", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangHS },
+ { "ProcessTriTessFactorsMax", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangHS },
+ { "ProcessTriTessFactorsMin", "-", "-", "V3,S,>V3,>S,", "F,,,,", EShLangHS },
{ "radians", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "rcp", nullptr, nullptr, "SVM", "FD", EShLangAll },
{ "reflect", nullptr, nullptr, "V,", "F,", EShLangAll },
@@ -594,48 +627,48 @@
{ "step", nullptr, nullptr, "SVM,", "F,", EShLangAll },
{ "tan", nullptr, nullptr, "SVM", "F", EShLangAll },
{ "tanh", nullptr, nullptr, "SVM", "F", EShLangAll },
- { "tex1D", "V4", "F", "V1,S", "S,F", EShLangFragmentMask },
- { "tex1D", "V4", "F", "V1,S,V1,", "S,F,,", EShLangFragmentMask },
- { "tex1Dbias", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
- { "tex1Dgrad", "V4", "F", "V1,,,", "S,F,,", EShLangFragmentMask },
- { "tex1Dlod", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
- { "tex1Dproj", "V4", "F", "V1,V4", "S,F", EShLangFragmentMask },
- { "tex2D", "V4", "F", "V2,", "S,F", EShLangFragmentMask },
- { "tex2D", "V4", "F", "V2,,,", "S,F,,", EShLangFragmentMask },
- { "tex2Dbias", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
- { "tex2Dgrad", "V4", "F", "V2,,,", "S,F,,", EShLangFragmentMask },
- { "tex2Dlod", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
- { "tex2Dproj", "V4", "F", "V2,V4", "S,F", EShLangFragmentMask },
- { "tex3D", "V4", "F", "V3,", "S,F", EShLangFragmentMask },
- { "tex3D", "V4", "F", "V3,,,", "S,F,,", EShLangFragmentMask },
- { "tex3Dbias", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
- { "tex3Dgrad", "V4", "F", "V3,,,", "S,F,,", EShLangFragmentMask },
- { "tex3Dlod", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
- { "tex3Dproj", "V4", "F", "V3,V4", "S,F", EShLangFragmentMask },
- { "texCUBE", "V4", "F", "V4,V3", "S,F", EShLangFragmentMask },
- { "texCUBE", "V4", "F", "V4,V3,,", "S,F,,", EShLangFragmentMask },
- { "texCUBEbias", "V4", "F", "V4,", "S,F", EShLangFragmentMask },
- { "texCUBEgrad", "V4", "F", "V4,V3,,", "S,F,,", EShLangFragmentMask },
- { "texCUBElod", "V4", "F", "V4,", "S,F", EShLangFragmentMask },
- { "texCUBEproj", "V4", "F", "V4,", "S,F", EShLangFragmentMask },
+ { "tex1D", "V4", "F", "V1,S", "S,F", EShLangPS },
+ { "tex1D", "V4", "F", "V1,S,V1,", "S,F,,", EShLangPS },
+ { "tex1Dbias", "V4", "F", "V1,V4", "S,F", EShLangPS },
+ { "tex1Dgrad", "V4", "F", "V1,,,", "S,F,,", EShLangPS },
+ { "tex1Dlod", "V4", "F", "V1,V4", "S,F", EShLangPS },
+ { "tex1Dproj", "V4", "F", "V1,V4", "S,F", EShLangPS },
+ { "tex2D", "V4", "F", "V2,", "S,F", EShLangPS },
+ { "tex2D", "V4", "F", "V2,,,", "S,F,,", EShLangPS },
+ { "tex2Dbias", "V4", "F", "V2,V4", "S,F", EShLangPS },
+ { "tex2Dgrad", "V4", "F", "V2,,,", "S,F,,", EShLangPS },
+ { "tex2Dlod", "V4", "F", "V2,V4", "S,F", EShLangPS },
+ { "tex2Dproj", "V4", "F", "V2,V4", "S,F", EShLangPS },
+ { "tex3D", "V4", "F", "V3,", "S,F", EShLangPS },
+ { "tex3D", "V4", "F", "V3,,,", "S,F,,", EShLangPS },
+ { "tex3Dbias", "V4", "F", "V3,V4", "S,F", EShLangPS },
+ { "tex3Dgrad", "V4", "F", "V3,,,", "S,F,,", EShLangPS },
+ { "tex3Dlod", "V4", "F", "V3,V4", "S,F", EShLangPS },
+ { "tex3Dproj", "V4", "F", "V3,V4", "S,F", EShLangPS },
+ { "texCUBE", "V4", "F", "V4,V3", "S,F", EShLangPS },
+ { "texCUBE", "V4", "F", "V4,V3,,", "S,F,,", EShLangPS },
+ { "texCUBEbias", "V4", "F", "V4,", "S,F", EShLangPS },
+ { "texCUBEgrad", "V4", "F", "V4,V3,,", "S,F,,", EShLangPS },
+ { "texCUBElod", "V4", "F", "V4,", "S,F", EShLangPS },
+ { "texCUBEproj", "V4", "F", "V4,", "S,F", EShLangPS },
{ "transpose", "^M", nullptr, "M", "F", EShLangAll },
{ "trunc", nullptr, nullptr, "SVM", "F", EShLangAll },
// Texture object methods. Return type can be overridden by shader declaration.
// !O = no offset, O = offset
- { "Sample", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangFragmentMask },
- { "Sample", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangFragmentMask },
+ { "Sample", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangPS },
+ { "Sample", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangPS },
- { "SampleBias", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,", EShLangFragmentMask },
- { "SampleBias", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,,I", EShLangFragmentMask },
+ { "SampleBias", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,", EShLangPS },
+ { "SampleBias", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,,I", EShLangPS },
// TODO: FXC accepts int/uint samplers here. unclear what that means.
- { "SampleCmp", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,", EShLangFragmentMask },
- { "SampleCmp", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,,I", EShLangFragmentMask },
+ { "SampleCmp", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,", EShLangPS },
+ { "SampleCmp", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,,I", EShLangPS },
// TODO: FXC accepts int/uint samplers here. unclear what that means.
- { "SampleCmpLevelZero", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,F", EShLangFragmentMask },
- { "SampleCmpLevelZero", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,F,I", EShLangFragmentMask },
+ { "SampleCmpLevelZero", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,F", EShLangPS },
+ { "SampleCmpLevelZero", /* O*/ "S", "F", "%@,S,V,S,V", "FIU,s,F,F,I", EShLangPS },
{ "SampleGrad", /*!O*/ "V4", nullptr, "%@,S,V,,", "FIU,S,F,,", EShLangAll },
{ "SampleGrad", /* O*/ "V4", nullptr, "%@,S,V,,,", "FIU,S,F,,,I", EShLangAll },
@@ -648,15 +681,14 @@
{ "Load", /* +sampleidex*/ "V4", nullptr, "$&,V,S", "FIU,I,I", EShLangAll },
{ "Load", /* +samplindex, offset*/ "V4", nullptr, "$&,V,S,V", "FIU,I,I,I", EShLangAll },
- { "Gather", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangVSPSGS },
- { "Gather", /* O*/ "V4", nullptr, "%@,S,V,V", "FIU,S,F,I", EShLangVSPSGS },
+ { "Gather", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangAll },
+ { "Gather", /* O*/ "V4", nullptr, "%@,S,V,V", "FIU,S,F,I", EShLangAll },
- { "CalculateLevelOfDetail", "S", "F", "%@,S,V", "FUI,S,F", EShLangFragmentMask },
- { "CalculateLevelOfDetailUnclamped", "S", "F", "%@,S,V", "FUI,S,F", EShLangFragmentMask },
+ { "CalculateLevelOfDetail", "S", "F", "%@,S,V", "FUI,S,F", EShLangPS },
+ { "CalculateLevelOfDetailUnclamped", "S", "F", "%@,S,V", "FUI,S,F", EShLangPS },
{ "GetSamplePosition", "V2", "F", "$&2,S", "FUI,I", EShLangVSPSGS },
- // table of overloads from: https://msdn.microsoft.com/en-us/library/windows/desktop/bb509693(v=vs.85).aspx
//
// UINT Width
// UINT MipLevel, UINT Width, UINT NumberOfLevels
@@ -709,10 +741,61 @@
// 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 },
+ { "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 },
+
+ // TODO: Cmp forms
// 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 },
@@ -1012,6 +1095,16 @@
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 da39321..36dea5c 100755
--- a/hlsl/hlslScanContext.cpp
+++ b/hlsl/hlslScanContext.cpp
@@ -38,7 +38,7 @@
// HLSL scanning, leveraging the scanning done by the preprocessor.
//
-#include <string.h>
+#include <cstring>
#include <unordered_map>
#include <unordered_set>